helpers

package
v2.16.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 6, 2026 License: GPL-3.0 Imports: 37 Imported by: 0

Documentation

Overview

Package helpers provides testing utilities for API operations.

This package includes WebSocket test servers and helper functions for testing API endpoints, WebSocket communication, and JSON-RPC methods without requiring a full API server setup.

Example usage:

func TestWebSocketAPI(t *testing.T) {
	// Create message handler
	handler := func(session *melody.Session, msg []byte) {
		session.Write([]byte(`{"response": "ok"}`))
	}

	// Create test WebSocket server
	server := helpers.NewWebSocketTestServer(t, handler)
	defer server.Close()

	// Connect and test
	client := server.NewClient(t)
	defer client.Close()

	err := client.SendMessage([]byte(`{"test": "message"}`))
	require.NoError(t, err)
}

For complete examples, see pkg/testing/examples/api_example_test.go

Package helpers provides testing utilities for database operations.

This package includes mock implementations of database interfaces and helper functions for setting up test databases with sqlmock. It enables testing database operations without requiring a real SQLite database.

Example usage:

func TestDatabaseOperations(t *testing.T) {
	// Create mock database interfaces
	userDB := helpers.NewMockUserDBI()
	mediaDB := helpers.NewMockMediaDBI()

	// Set up expectations
	userDB.On("AddHistory", helpers.HistoryEntryMatcher()).Return(nil)

	// Use in your code
	err := MyFunction(userDB)

	// Verify expectations were met
	require.NoError(t, err)
	userDB.AssertExpectations(t)
}

For complete examples, see pkg/testing/examples/database_example_test.go

Package helpers provides testing utilities for filesystem operations.

This package includes in-memory filesystem implementations and helper functions for testing file operations without requiring real filesystem access. It uses afero for filesystem abstraction.

Example usage:

func TestFileOperations(t *testing.T) {
	// Create in-memory filesystem
	fs := helpers.NewMemoryFS()

	// Create files and directories for testing
	fs.WriteFile("test.txt", []byte("content"))
	fs.MkdirAll("configs")

	// Create test configuration
	cfg, err := helpers.NewTestConfig(fs, "/tmp/config")
	require.NoError(t, err)

	// Use in your tests
	content, err := fs.ReadFile("test.txt")
	require.NoError(t, err)
	assert.Equal(t, "content", string(content))
}

For complete examples, see pkg/testing/examples/filesystem_example_test.go

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AssertJSONRPCError

func AssertJSONRPCError(t *testing.T, response *JSONRPCResponse, expectedCode int)

AssertJSONRPCError verifies a JSON-RPC response contains an error

func AssertJSONRPCSuccess

func AssertJSONRPCSuccess(t *testing.T, response *JSONRPCResponse)

AssertJSONRPCSuccess verifies a JSON-RPC response was successful

func AssertValidActiveMedia added in v2.7.0

func AssertValidActiveMedia(t *testing.T, media *models.ActiveMedia)

AssertValidActiveMedia validates that an ActiveMedia struct has all required fields properly set. This helper catches common bugs like missing timestamps or empty required fields. Use this in tests that receive ActiveMedia from production code to ensure data integrity.

func AssertValidActiveMediaOrNil added in v2.7.0

func AssertValidActiveMediaOrNil(t *testing.T, media *models.ActiveMedia)

AssertValidActiveMediaOrNil validates ActiveMedia if non-nil, otherwise passes. Use this when ActiveMedia can legitimately be nil (e.g., no media playing).

func CreateTestContext

func CreateTestContext(timeout time.Duration) (context.Context, context.CancelFunc)

CreateTestContext creates a context with timeout for testing

func ExpectHistoryInsert

func ExpectHistoryInsert(mockDB sqlmock.Sqlmock, entry *database.HistoryEntry)

ExpectHistoryInsert sets up expectations for history insertion

func ExpectMappingInsert

func ExpectMappingInsert(mockDB sqlmock.Sqlmock, mapping *database.Mapping)

ExpectMappingInsert sets up expectations for mapping insertion

func ExpectMappingQuery

func ExpectMappingQuery(mockDB sqlmock.Sqlmock, id int64, mapping *database.Mapping)

ExpectMappingQuery sets up expectations for mapping query

func ExpectMediaSearch

func ExpectMediaSearch(mockDB sqlmock.Sqlmock, results []database.SearchResult)

ExpectMediaSearch sets up expectations for media search queries

func ExpectTransactionBegin

func ExpectTransactionBegin(mockDB sqlmock.Sqlmock)

ExpectTransactionBegin sets up expectations for transaction begin

func ExpectTransactionCommit

func ExpectTransactionCommit(mockDB sqlmock.Sqlmock)

ExpectTransactionCommit sets up expectations for transaction commit

func ExpectTransactionRollback

func ExpectTransactionRollback(mockDB sqlmock.Sqlmock)

ExpectTransactionRollback sets up expectations for transaction rollback

func GetBasicTestStructure

func GetBasicTestStructure() map[string]any

GetBasicTestStructure returns a basic directory structure for testing

func GetComplexTestStructure

func GetComplexTestStructure() map[string]any

GetComplexTestStructure returns a more complex directory structure for integration testing

func HistoryEntryMatcher

func HistoryEntryMatcher() any

HistoryEntryMatcher returns a testify matcher for database.HistoryEntry. This matcher can be used to verify that AddHistory is called with appropriate data.

Example usage:

userDB.On("AddHistory", helpers.HistoryEntryMatcher()).Return(nil)

func MappingMatcher

func MappingMatcher() any

MappingMatcher returns a testify matcher for database.Mapping.

Example usage:

userDB.On("AddMapping", helpers.MappingMatcher()).Return(nil)

func MediaMatcher

func MediaMatcher() any

MediaMatcher returns a testify matcher for database.Media.

Example usage:

mediaDB.On("InsertMedia", helpers.MediaMatcher()).Return(fixtures.SampleMedia()[0], nil)

func NewInMemoryMediaDB

func NewInMemoryMediaDB(tb testing.TB) (db *mediadb.MediaDB, cleanup func())

func NewInMemoryUserDB

func NewInMemoryUserDB(t *testing.T) (db *userdb.UserDB, cleanup func())

func NewMockCommandExecutor added in v2.7.0

func NewMockCommandExecutor() *mocks.MockCommandExecutor

NewMockCommandExecutor creates a MockCommandExecutor that succeeds by default. All Run(), Output(), and Start() calls will return success unless explicitly overridden with On().

This provides sensible defaults for tests where command execution details don't matter. Override specific commands in tests that need to verify exact behavior:

cmd := helpers.NewMockCommandExecutor()
// Clear defaults first
cmd.ExpectedCalls = nil
// Set specific expectations (note: args is []string not variadic in mock)
cmd.On("Run", mock.Anything, "systemctl", []string{"--user", "daemon-reload"}).Return(nil)
cmd.On("Output", mock.Anything, "xprop", mock.Anything).Return([]byte("output"), nil)

func NewSQLMock

func NewSQLMock() (*sql.DB, sqlmock.Sqlmock, error)

NewSQLMock creates a new sqlmock database and mock for raw SQL testing. This is an alias for SetupSQLMock for consistency with other constructor functions.

Example usage:

func TestRawSQL(t *testing.T) {
	db, mock, err := helpers.NewSQLMock()
	require.NoError(t, err)
	defer db.Close()

	mock.ExpectQuery("SELECT (.+) FROM users").
		WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(1, "Test"))

	// Test your SQL code
	rows, err := db.Query("SELECT id, name FROM users")
	require.NoError(t, err)
	defer rows.Close()

	assert.NoError(t, mock.ExpectationsWereMet())
}

func NewTestConfig

func NewTestConfig(fs *FSHelper, configDir string) (*config.Instance, error)

NewTestConfig creates a config instance for testing using an in-memory filesystem

func NewTestConfigWithListenAndPort added in v2.11.0

func NewTestConfigWithListenAndPort(fs *FSHelper, configDir, listenHost string, port int) (*config.Instance, error)

NewTestConfigWithListenAndPort creates a config instance for testing with a specific API listen host and port. If fs is provided, its in-memory filesystem is used for config file operations. If fs is nil, the real OS filesystem is used.

func NewTestConfigWithPort

func NewTestConfigWithPort(fs *FSHelper, configDir string, port int) (*config.Instance, error)

NewTestConfigWithPort creates a config instance for testing with a specific API port. If fs is provided, its in-memory filesystem is used for config file operations. If fs is nil, the real OS filesystem is used.

func NewTestDatabase added in v2.7.0

func NewTestDatabase(t *testing.T) (db *database.Database, cleanup func())

NewTestDatabase creates both MediaDB and UserDB for comprehensive testing. Returns a Database wrapper and cleanup function that should be deferred.

func SearchResultMatcher

func SearchResultMatcher() any

SearchResultMatcher returns a testify matcher for database.SearchResult.

Example usage:

mediaDB.On("SearchMedia", helpers.TextMatcher()).
	Return([]database.SearchResult{fixtures.SampleSearchResults()[0]}, nil)

func SystemMatcher

func SystemMatcher() any

SystemMatcher returns a testify matcher for database.System.

Example usage:

platform.On("LaunchMedia", helpers.MediaMatcher(), helpers.SystemMatcher()).Return(nil)

func TextMatcher

func TextMatcher() any

Types

type FSHelper

type FSHelper struct {
	Fs afero.Fs
}

FSHelper provides utilities for filesystem mocking in tests

func NewMemoryFS

func NewMemoryFS() *FSHelper

NewMemoryFS creates a new in-memory filesystem for testing

func NewOSFS

func NewOSFS() *FSHelper

NewOSFS creates a filesystem helper using the real filesystem (for integration tests)

func SetupMemoryFilesystem

func SetupMemoryFilesystem() *FSHelper

SetupMemoryFilesystem creates a new in-memory filesystem helper with basic directory structure

func (*FSHelper) CleanupDir

func (h *FSHelper) CleanupDir(path string) error

CleanupDir removes all contents from a directory

func (*FSHelper) CreateAuthFile

func (h *FSHelper) CreateAuthFile(path string, authData []byte) error

CreateAuthFile creates an auth file with the provided content

func (*FSHelper) CreateConfigFile

func (h *FSHelper) CreateConfigFile(path string, cfg map[string]any) error

CreateConfigFile creates a config file with the provided configuration map

func (*FSHelper) CreateDirectoryStructure

func (h *FSHelper) CreateDirectoryStructure(structure map[string]any) error

CreateDirectoryStructure creates a complex directory structure for testing

func (*FSHelper) CreateMediaDirectory

func (h *FSHelper) CreateMediaDirectory(basePath string) error

CreateMediaDirectory creates a media directory structure with sample files

func (*FSHelper) FileExists

func (h *FSHelper) FileExists(path string) bool

FileExists checks if a file exists

func (*FSHelper) ListFiles

func (h *FSHelper) ListFiles(path string) ([]string, error)

ListFiles lists all files in a directory

func (*FSHelper) ReadFile

func (h *FSHelper) ReadFile(path string) ([]byte, error)

ReadFile reads a file and returns its content

func (*FSHelper) SetupTestConfigEnvironment

func (h *FSHelper) SetupTestConfigEnvironment(baseDir string) (map[string]any, error)

SetupTestConfigEnvironment creates a complete test configuration environment

func (*FSHelper) WriteFile

func (h *FSHelper) WriteFile(path string, content []byte, _ int) error

WriteFile writes content to a file

type HTTPTestHelper

type HTTPTestHelper struct {
	Server *httptest.Server
	Client *http.Client
}

HTTPTestHelper provides utilities for testing HTTP API endpoints

func NewHTTPTestHelper

func NewHTTPTestHelper(handler http.Handler) *HTTPTestHelper

NewHTTPTestHelper creates a new HTTP test helper with the given handler

func (*HTTPTestHelper) Close

func (h *HTTPTestHelper) Close()

Close shuts down the test server

func (*HTTPTestHelper) PostJSONRPC

func (h *HTTPTestHelper) PostJSONRPC(method string, params any) (*http.Response, error)

PostJSONRPC sends a JSON-RPC request via HTTP POST

type JSONRPCRequest

type JSONRPCRequest struct {
	Params any       `json:"params,omitempty"`
	Method string    `json:"method"`
	ID     uuid.UUID `json:"id"`
}

JSONRPCRequest represents a JSON-RPC request for testing

type JSONRPCResponse

type JSONRPCResponse struct {
	Result any                 `json:"result,omitempty"`
	Error  *models.ErrorObject `json:"error,omitempty"`
	ID     uuid.UUID           `json:"id"`
}

JSONRPCResponse represents a JSON-RPC response for testing

func SendJSONRPCRequest

func SendJSONRPCRequest(conn *websocket.Conn, method string, params any) (*JSONRPCResponse, error)

SendJSONRPCRequest sends a JSON-RPC request and returns the response

type MockESAPIServer added in v2.7.0

type MockESAPIServer struct {
	*http.Server
	// contains filtered or unexported fields
}

MockESAPIServer provides a test double for Batocera's EmulationStation API. It listens on localhost:1234 (the hardcoded ES API port) to intercept API calls during tests.

func NewMockESAPIServer added in v2.7.0

func NewMockESAPIServer(t *testing.T) *MockESAPIServer

NewMockESAPIServer creates a mock EmulationStation API server on localhost:1234. This server intercepts esapi.APIRunningGame() calls during tests.

func (*MockESAPIServer) Notifications added in v2.16.0

func (m *MockESAPIServer) Notifications() []string

func (*MockESAPIServer) WithNoRunningGame added in v2.7.0

func (m *MockESAPIServer) WithNoRunningGame() *MockESAPIServer

WithNoRunningGame configures the mock to return "no game running"

func (*MockESAPIServer) WithRunningGame added in v2.7.0

func (m *MockESAPIServer) WithRunningGame(game *esapi.RunningGameResponse) *MockESAPIServer

WithRunningGame configures the mock to return a running game

type MockKodiServer

type MockKodiServer struct {
	*httptest.Server
	// contains filtered or unexported fields
}

MockKodiServer provides a mock Kodi JSON-RPC server for integration testing

func NewMockKodiServer

func NewMockKodiServer(_ *testing.T) *MockKodiServer

NewMockKodiServer creates a new mock Kodi server for testing

func (*MockKodiServer) GetURLForConfig

func (m *MockKodiServer) GetURLForConfig() string

GetURLForConfig returns the mock server's URL formatted for Kodi client configuration

func (*MockKodiServer) URL

func (m *MockKodiServer) URL() string

URL returns the mock server's URL for configuration

func (*MockKodiServer) WithActivePlayers

func (m *MockKodiServer) WithActivePlayers() *MockKodiServer

WithActivePlayers configures the mock server to return active players

type MockLevelWriter added in v2.11.0

type MockLevelWriter struct {
	mock.Mock
}

MockLevelWriter is a testify-backed zerolog.LevelWriter for tests.

func (*MockLevelWriter) Write added in v2.11.0

func (m *MockLevelWriter) Write(p []byte) (int, error)

func (*MockLevelWriter) WriteLevel added in v2.11.0

func (m *MockLevelWriter) WriteLevel(level zerolog.Level, p []byte) (int, error)

type MockMediaDBI

type MockMediaDBI struct {
	mock.Mock
	ScrapeImageSystems    []string
	TransactionCount      int
	OperationsOutsideTxn  int
	ActiveTransaction     bool
	Optimizing            bool
	BrowseCacheRebuilding bool
	ScrapeImageChangesAll bool
}

MockMediaDBI is a mock implementation of the MediaDBI interface using testify/mock

func NewMockMediaDBI

func NewMockMediaDBI() *MockMediaDBI

NewMockMediaDBI creates a new mock MediaDBI interface for testing.

Example usage:

func TestMediaOperations(t *testing.T) {
	mediaDB := helpers.NewMockMediaDBI()
	mediaDB.On("GetMediaByText", "Game Name").Return(fixtures.SampleMedia()[0], nil)

	// Use mediaDB in your test
	media, err := mediaDB.GetMediaByText("Game Name")
	require.NoError(t, err)
	assert.Equal(t, "Game Name", media.Name)
	mediaDB.AssertExpectations(t)
}

func (*MockMediaDBI) Allocate

func (m *MockMediaDBI) Allocate() error

func (*MockMediaDBI) AnalyzeApproximate added in v2.14.1

func (m *MockMediaDBI) AnalyzeApproximate() error

AnalyzeApproximate mock method

func (*MockMediaDBI) ApplyScrapeResult added in v2.12.0

func (m *MockMediaDBI) ApplyScrapeResult(
	ctx context.Context, mediaDBID, mediaTitleDBID int64, write *database.ScrapeWrite,
) error

func (*MockMediaDBI) BackgroundOperationDone added in v2.7.1

func (m *MockMediaDBI) BackgroundOperationDone()

func (*MockMediaDBI) BeginBrowseCacheRebuild added in v2.16.0

func (m *MockMediaDBI) BeginBrowseCacheRebuild()

func (*MockMediaDBI) BeginRecovery added in v2.16.0

func (m *MockMediaDBI) BeginRecovery()

func (*MockMediaDBI) BeginTransaction

func (m *MockMediaDBI) BeginTransaction(batchEnabled bool) error

MediaDBI specific methods - Transaction handling

func (*MockMediaDBI) BrowseCacheNeedsRebuild added in v2.16.0

func (m *MockMediaDBI) BrowseCacheNeedsRebuild(
	ctx context.Context,
) (bool, error)

func (*MockMediaDBI) BrowseDirCount added in v2.15.1

func (m *MockMediaDBI) BrowseDirCount(
	ctx context.Context, opts database.BrowseDirCountOptions,
) (int, error)

func (*MockMediaDBI) BrowseDirectories added in v2.10.0

func (*MockMediaDBI) BrowseFileCount added in v2.10.0

func (m *MockMediaDBI) BrowseFileCount(
	ctx context.Context, opts database.BrowseFileCountOptions,
) (int, error)

func (*MockMediaDBI) BrowseFiles added in v2.10.0

func (*MockMediaDBI) BrowseIndex added in v2.15.0

func (*MockMediaDBI) BrowseRootCounts added in v2.10.0

func (m *MockMediaDBI) BrowseRootCounts(
	ctx context.Context, rootDirs []string,
) (map[string]*int, error)

func (*MockMediaDBI) BrowseRouteCounts added in v2.12.0

func (*MockMediaDBI) BrowseSystemRootCandidates added in v2.12.0

func (*MockMediaDBI) BrowseVirtualSchemes added in v2.10.0

func (*MockMediaDBI) BumpIndexGeneration added in v2.12.0

func (m *MockMediaDBI) BumpIndexGeneration() (int64, error)

func (*MockMediaDBI) CleanMediaOrphans added in v2.12.0

func (m *MockMediaDBI) CleanMediaOrphans(ctx context.Context) (int64, error)

func (*MockMediaDBI) ClearCorruptMarker added in v2.15.0

func (m *MockMediaDBI) ClearCorruptMarker() error

func (*MockMediaDBI) ClearScanStage added in v2.16.0

func (m *MockMediaDBI) ClearScanStage() error

func (*MockMediaDBI) ClearScrapeRunMarkers added in v2.14.1

func (m *MockMediaDBI) ClearScrapeRunMarkers(ctx context.Context, scraperID, runID string) error

func (*MockMediaDBI) ClearScrapingOperation added in v2.14.0

func (m *MockMediaDBI) ClearScrapingOperation() error

func (*MockMediaDBI) Close

func (m *MockMediaDBI) Close() error

func (*MockMediaDBI) CommitTransaction

func (m *MockMediaDBI) CommitTransaction() error

func (*MockMediaDBI) CommitTransactionWithOptions added in v2.14.1

func (m *MockMediaDBI) CommitTransactionWithOptions(options database.TransactionOptions) error

func (*MockMediaDBI) ConsumeScrapeImageChanges added in v2.16.0

func (m *MockMediaDBI) ConsumeScrapeImageChanges() ([]string, bool)

func (*MockMediaDBI) CreateSecondaryIndexes added in v2.10.0

func (m *MockMediaDBI) CreateSecondaryIndexes() error

func (*MockMediaDBI) DeleteMediaProperty added in v2.12.0

func (m *MockMediaDBI) DeleteMediaProperty(ctx context.Context, mediaDBID, typeTagDBID int64) error

func (*MockMediaDBI) DeleteMediaTag added in v2.11.0

func (m *MockMediaDBI) DeleteMediaTag(mediaDBID, tagDBID int64) error

func (*MockMediaDBI) DeleteMediaTitleProperty added in v2.12.0

func (m *MockMediaDBI) DeleteMediaTitleProperty(ctx context.Context, mediaTitleDBID, typeTagDBID int64) error

func (*MockMediaDBI) DropSecondaryIndexes added in v2.10.0

func (m *MockMediaDBI) DropSecondaryIndexes() error

func (*MockMediaDBI) EnableBatchInserts added in v2.7.0

func (m *MockMediaDBI) EnableBatchInserts(enable bool)

Batch insert control methods

func (*MockMediaDBI) EndBrowseCacheRebuild added in v2.16.0

func (m *MockMediaDBI) EndBrowseCacheRebuild()

func (*MockMediaDBI) EndRecovery added in v2.16.0

func (m *MockMediaDBI) EndRecovery()

func (*MockMediaDBI) Exists

func (m *MockMediaDBI) Exists() bool

func (*MockMediaDBI) FindMedia

func (m *MockMediaDBI) FindMedia(row database.Media) (database.Media, error)

Media CRUD methods

func (*MockMediaDBI) FindMediaBySystemAndPath added in v2.12.0

func (m *MockMediaDBI) FindMediaBySystemAndPath(
	ctx context.Context, systemDBID int64, path string,
) (*database.Media, error)

func (*MockMediaDBI) FindMediaBySystemAndPathFold added in v2.12.0

func (m *MockMediaDBI) FindMediaBySystemAndPathFold(
	ctx context.Context, systemDBID int64, path string,
) (*database.Media, error)

func (*MockMediaDBI) FindMediaBySystemAndPathSuffix added in v2.13.0

func (m *MockMediaDBI) FindMediaBySystemAndPathSuffix(
	ctx context.Context, systemDBID int64, filename string,
) ([]database.Media, error)

func (*MockMediaDBI) FindMediaBySystemAndPaths added in v2.12.0

func (m *MockMediaDBI) FindMediaBySystemAndPaths(
	ctx context.Context, systemDBID int64, paths []string,
) (map[string]database.Media, error)

func (*MockMediaDBI) FindMediaIDsByPaths added in v2.15.0

func (m *MockMediaDBI) FindMediaIDsByPaths(
	ctx context.Context, paths []string,
) ([]database.MediaPathID, error)

func (*MockMediaDBI) FindMediaTag

func (m *MockMediaDBI) FindMediaTag(row database.MediaTag) (database.MediaTag, error)

MediaTag CRUD methods

func (*MockMediaDBI) FindMediaTitle

func (m *MockMediaDBI) FindMediaTitle(row *database.MediaTitle) (database.MediaTitle, error)

MediaTitle CRUD methods

func (*MockMediaDBI) FindMediaTitleByDBID added in v2.12.0

func (m *MockMediaDBI) FindMediaTitleByDBID(ctx context.Context, dbid int64) (*database.MediaTitle, error)

func (*MockMediaDBI) FindMediaTitleBySystemAndSlug added in v2.13.0

func (m *MockMediaDBI) FindMediaTitleBySystemAndSlug(
	ctx context.Context, systemDBID int64, slug string,
) (*database.MediaTitle, error)

func (*MockMediaDBI) FindMediaTitlesWithoutSentinel added in v2.12.0

func (m *MockMediaDBI) FindMediaTitlesWithoutSentinel(
	ctx context.Context, systemDBID int64, sentinelTag string,
) ([]database.MediaTitle, error)

func (*MockMediaDBI) FindOrInsertMedia

func (m *MockMediaDBI) FindOrInsertMedia(row database.Media) (database.Media, error)

func (*MockMediaDBI) FindOrInsertMediaTag

func (m *MockMediaDBI) FindOrInsertMediaTag(row database.MediaTag) (database.MediaTag, error)

func (*MockMediaDBI) FindOrInsertMediaTitle

func (m *MockMediaDBI) FindOrInsertMediaTitle(row *database.MediaTitle) (database.MediaTitle, error)

func (*MockMediaDBI) FindOrInsertSystem

func (m *MockMediaDBI) FindOrInsertSystem(row database.System) (database.System, error)

func (*MockMediaDBI) FindOrInsertTag

func (m *MockMediaDBI) FindOrInsertTag(row database.Tag) (database.Tag, error)

func (*MockMediaDBI) FindOrInsertTagType

func (m *MockMediaDBI) FindOrInsertTagType(row database.TagType) (database.TagType, error)

func (*MockMediaDBI) FindSingleContainerLaunchMedia added in v2.14.0

func (m *MockMediaDBI) FindSingleContainerLaunchMedia(
	ctx context.Context, systemDBID int64, containerPath string,
) (*database.Media, error)

func (*MockMediaDBI) FindSystem

func (m *MockMediaDBI) FindSystem(row database.System) (database.System, error)

System CRUD methods

func (*MockMediaDBI) FindSystemBySystemID added in v2.7.0

func (m *MockMediaDBI) FindSystemBySystemID(systemID string) (database.System, error)

func (*MockMediaDBI) FindTag

func (m *MockMediaDBI) FindTag(row database.Tag) (database.Tag, error)

Tag CRUD methods

func (*MockMediaDBI) FindTagType

func (m *MockMediaDBI) FindTagType(row database.TagType) (database.TagType, error)

TagType CRUD methods

func (*MockMediaDBI) FlushBatchInserters added in v2.15.0

func (m *MockMediaDBI) FlushBatchInserters() error

func (*MockMediaDBI) GetAllSystems added in v2.7.0

func (m *MockMediaDBI) GetAllSystems() ([]database.System, error)

GetAll* methods for populating scan state maps

func (*MockMediaDBI) GetAllUsedTags added in v2.7.0

func (m *MockMediaDBI) GetAllUsedTags(ctx context.Context) ([]database.TagInfo, error)

func (*MockMediaDBI) GetCachedSlugResolution added in v2.7.0

func (m *MockMediaDBI) GetCachedSlugResolution(
	ctx context.Context, systemID, slug string, tagFilters []zapscript.TagFilter,
) (mediaDBID int64, strategy string, found bool)

Slug resolution cache methods

func (*MockMediaDBI) GetDBPath

func (m *MockMediaDBI) GetDBPath() string

func (*MockMediaDBI) GetExistingMediaUserData added in v2.15.0

func (m *MockMediaDBI) GetExistingMediaUserData(ctx context.Context) ([]database.MediaUserData, error)

func (*MockMediaDBI) GetIndexResumeAttempts added in v2.16.0

func (m *MockMediaDBI) GetIndexResumeAttempts() (int, error)

func (*MockMediaDBI) GetIndexResumeCheckpoint added in v2.16.0

func (m *MockMediaDBI) GetIndexResumeCheckpoint() (string, error)

func (*MockMediaDBI) GetIndexingStatus added in v2.7.0

func (m *MockMediaDBI) GetIndexingStatus() (string, error)

func (*MockMediaDBI) GetIndexingSystems added in v2.7.0

func (m *MockMediaDBI) GetIndexingSystems() ([]string, error)

func (*MockMediaDBI) GetLastGenerated

func (m *MockMediaDBI) GetLastGenerated() (time.Time, error)

func (*MockMediaDBI) GetLastIndexedSystem added in v2.7.0

func (m *MockMediaDBI) GetLastIndexedSystem() (string, error)

func (*MockMediaDBI) GetLaunchCommandForMedia added in v2.7.0

func (m *MockMediaDBI) GetLaunchCommandForMedia(ctx context.Context, systemID, path string) (string, error)

func (*MockMediaDBI) GetMediaBlob added in v2.12.0

func (m *MockMediaDBI) GetMediaBlob(ctx context.Context, blobDBID int64) (*database.MediaBlob, error)

func (*MockMediaDBI) GetMediaBlobDataCapped added in v2.13.0

func (m *MockMediaDBI) GetMediaBlobDataCapped(
	ctx context.Context, blobDBID int64, maxBytes int64,
) (data []byte, contentType string, err error)

func (*MockMediaDBI) GetMediaByDBID added in v2.7.0

func (m *MockMediaDBI) GetMediaByDBID(ctx context.Context, mediaDBID int64) (database.SearchResultWithCursor, error)

func (*MockMediaDBI) GetMediaBySystemID added in v2.9.1

func (m *MockMediaDBI) GetMediaBySystemID(systemID string) ([]database.MediaWithFullPath, error)

GetMediaBySystemID mock method for per-system lazy loading during resume

func (*MockMediaDBI) GetMediaByText

func (m *MockMediaDBI) GetMediaByText(query string) (database.Media, error)

GetMediaByText is a convenience method for testing - wraps SearchMediaPathExact

func (*MockMediaDBI) GetMediaProperties added in v2.12.0

func (m *MockMediaDBI) GetMediaProperties(ctx context.Context, mediaDBID int64) ([]database.MediaProperty, error)

func (*MockMediaDBI) GetMediaPropertiesByMediaDBIDs added in v2.12.0

func (m *MockMediaDBI) GetMediaPropertiesByMediaDBIDs(
	ctx context.Context, mediaDBIDs []int64,
) (map[int64][]database.MediaProperty, error)

func (*MockMediaDBI) GetMediaPropertyMetadata added in v2.13.0

func (m *MockMediaDBI) GetMediaPropertyMetadata(
	ctx context.Context, mediaDBID int64,
) ([]database.MediaProperty, error)

func (*MockMediaDBI) GetMediaPropertyMetadataByMediaDBIDs added in v2.13.0

func (m *MockMediaDBI) GetMediaPropertyMetadataByMediaDBIDs(
	ctx context.Context, mediaDBIDs []int64,
) (map[int64][]database.MediaProperty, error)

func (*MockMediaDBI) GetMediaTagsByMediaDBID added in v2.12.0

func (m *MockMediaDBI) GetMediaTagsByMediaDBID(
	ctx context.Context, mediaDBID int64,
) ([]database.TagInfo, error)

func (*MockMediaDBI) GetMediaTagsByMediaDBIDs added in v2.12.0

func (m *MockMediaDBI) GetMediaTagsByMediaDBIDs(
	ctx context.Context, mediaDBIDs []int64,
) (map[int64][]database.TagInfo, error)

func (*MockMediaDBI) GetMediaTitleProperties added in v2.12.0

func (m *MockMediaDBI) GetMediaTitleProperties(
	ctx context.Context, mediaTitleDBID int64,
) ([]database.MediaProperty, error)

func (*MockMediaDBI) GetMediaTitlePropertiesByMediaTitleDBIDs added in v2.12.0

func (m *MockMediaDBI) GetMediaTitlePropertiesByMediaTitleDBIDs(
	ctx context.Context, mediaTitleDBIDs []int64,
) (map[int64][]database.MediaProperty, error)

func (*MockMediaDBI) GetMediaTitlePropertyMetadata added in v2.13.0

func (m *MockMediaDBI) GetMediaTitlePropertyMetadata(
	ctx context.Context, mediaTitleDBID int64,
) ([]database.MediaProperty, error)

func (*MockMediaDBI) GetMediaTitlePropertyMetadataByMediaTitleDBIDs added in v2.13.0

func (m *MockMediaDBI) GetMediaTitlePropertyMetadataByMediaTitleDBIDs(
	ctx context.Context, mediaTitleDBIDs []int64,
) (map[int64][]database.MediaProperty, error)

func (*MockMediaDBI) GetMediaTitleTagsByMediaTitleDBID added in v2.12.0

func (m *MockMediaDBI) GetMediaTitleTagsByMediaTitleDBID(
	ctx context.Context, mediaTitleDBID int64,
) ([]database.TagInfo, error)

func (*MockMediaDBI) GetMediaTitleTagsByMediaTitleDBIDs added in v2.12.0

func (m *MockMediaDBI) GetMediaTitleTagsByMediaTitleDBIDs(
	ctx context.Context, mediaTitleDBIDs []int64,
) (map[int64][]database.TagInfo, error)

func (*MockMediaDBI) GetMediaWithTitleAndSystem added in v2.12.0

func (m *MockMediaDBI) GetMediaWithTitleAndSystem(
	ctx context.Context, mediaDBID int64,
) (*database.MediaFullRow, error)

func (*MockMediaDBI) GetMediaWithTitleAndSystemByIDs added in v2.12.0

func (m *MockMediaDBI) GetMediaWithTitleAndSystemByIDs(
	ctx context.Context, mediaDBIDs []int64,
) (map[int64]database.MediaFullRow, error)

func (*MockMediaDBI) GetMissingMediaCount added in v2.16.0

func (m *MockMediaDBI) GetMissingMediaCount() (int, error)

func (*MockMediaDBI) GetOptimizationStatus added in v2.7.0

func (m *MockMediaDBI) GetOptimizationStatus() (string, error)

func (*MockMediaDBI) GetOptimizationStep added in v2.7.0

func (m *MockMediaDBI) GetOptimizationStep() (string, error)

func (*MockMediaDBI) GetScrapeRunMediaIDs added in v2.14.1

func (m *MockMediaDBI) GetScrapeRunMediaIDs(
	ctx context.Context, scraperID, runID string, systemDBID int64,
) (map[int64]struct{}, error)

func (*MockMediaDBI) GetScrapedMediaCount added in v2.12.0

func (m *MockMediaDBI) GetScrapedMediaCount(ctx context.Context, scraperID string) (int, error)

func (*MockMediaDBI) GetScrapedMediaIDs added in v2.12.0

func (m *MockMediaDBI) GetScrapedMediaIDs(
	ctx context.Context, scraperID string, systemDBID int64,
) (map[int64]struct{}, error)

func (*MockMediaDBI) GetScrapingOperation added in v2.14.0

func (m *MockMediaDBI) GetScrapingOperation() (database.ScrapingOperation, bool, error)

func (*MockMediaDBI) GetScrapingStatus added in v2.14.0

func (m *MockMediaDBI) GetScrapingStatus() (string, error)

func (*MockMediaDBI) GetSystemTagsCached added in v2.7.0

func (m *MockMediaDBI) GetSystemTagsCached(
	ctx context.Context,
	systems []systemdefs.System,
) ([]database.TagInfo, error)

func (*MockMediaDBI) GetTags added in v2.7.0

func (m *MockMediaDBI) GetTags(
	ctx context.Context,
	systems []systemdefs.System,
) ([]database.TagInfo, error)

func (*MockMediaDBI) GetTitlesBySystemID added in v2.9.1

func (m *MockMediaDBI) GetTitlesBySystemID(systemID string) ([]database.TitleWithSystem, error)

GetTitlesBySystemID mock method for per-system lazy loading during resume

func (*MockMediaDBI) GetTitlesWithPreFilter added in v2.7.0

func (m *MockMediaDBI) GetTitlesWithPreFilter(
	ctx context.Context, systemID string, minLength, maxLength, minWordCount, maxWordCount int,
) ([]database.MediaTitle, error)

func (*MockMediaDBI) GetTotalMediaCount added in v2.7.0

func (m *MockMediaDBI) GetTotalMediaCount() (int, error)

func (*MockMediaDBI) GetTotalScrapedMediaCount added in v2.12.0

func (m *MockMediaDBI) GetTotalScrapedMediaCount(ctx context.Context) (int, error)

func (*MockMediaDBI) GetZapScriptTagsBySystemAndPath added in v2.10.0

func (m *MockMediaDBI) GetZapScriptTagsBySystemAndPath(
	ctx context.Context, systemID, path string,
) ([]database.TagInfo, error)

func (*MockMediaDBI) HasAnyMedia added in v2.16.0

func (m *MockMediaDBI) HasAnyMedia() (bool, error)

func (*MockMediaDBI) HasBackgroundOperations added in v2.16.0

func (m *MockMediaDBI) HasBackgroundOperations() bool

func (*MockMediaDBI) HasMediaPropertyForPath added in v2.16.0

func (m *MockMediaDBI) HasMediaPropertyForPath(ctx context.Context, systemID, path, property string) (bool, error)

func (*MockMediaDBI) IncrementIndexResumeAttempts added in v2.16.0

func (m *MockMediaDBI) IncrementIndexResumeAttempts() (int, error)

func (*MockMediaDBI) IndexGeneration added in v2.12.0

func (m *MockMediaDBI) IndexGeneration() (int64, error)

func (*MockMediaDBI) IndexedSystems

func (m *MockMediaDBI) IndexedSystems() ([]string, error)

func (*MockMediaDBI) InsertMedia

func (m *MockMediaDBI) InsertMedia(row database.Media) (database.Media, error)

func (*MockMediaDBI) InsertMediaTag

func (m *MockMediaDBI) InsertMediaTag(row database.MediaTag) (database.MediaTag, error)

func (*MockMediaDBI) InsertMediaTitle

func (m *MockMediaDBI) InsertMediaTitle(row *database.MediaTitle) (database.MediaTitle, error)

func (*MockMediaDBI) InsertSystem

func (m *MockMediaDBI) InsertSystem(row database.System) (database.System, error)

func (*MockMediaDBI) InsertTag

func (m *MockMediaDBI) InsertTag(row database.Tag) (database.Tag, error)

func (*MockMediaDBI) InsertTagType

func (m *MockMediaDBI) InsertTagType(row database.TagType) (database.TagType, error)

func (*MockMediaDBI) IntegrityReport added in v2.15.0

func (m *MockMediaDBI) IntegrityReport() []string

func (*MockMediaDBI) InvalidateCountCache added in v2.7.0

func (m *MockMediaDBI) InvalidateCountCache() error

func (*MockMediaDBI) InvalidateSlugCache added in v2.7.0

func (m *MockMediaDBI) InvalidateSlugCache(ctx context.Context) error

func (*MockMediaDBI) InvalidateSlugCacheForSystems added in v2.7.0

func (m *MockMediaDBI) InvalidateSlugCacheForSystems(ctx context.Context, systemIDs []string) error

func (*MockMediaDBI) InvalidateSystemTagsCache added in v2.7.0

func (m *MockMediaDBI) InvalidateSystemTagsCache(
	ctx context.Context,
	systems []systemdefs.System,
) error

func (*MockMediaDBI) IsMarkedCorrupt added in v2.15.0

func (m *MockMediaDBI) IsMarkedCorrupt() bool

func (*MockMediaDBI) IsOptimizing added in v2.16.0

func (m *MockMediaDBI) IsOptimizing() bool

IsOptimizing backs the fields directly (no m.Called()) so the many callers of the media status query don't each need to stub it. Tests that care about a full RunBackgroundOptimization pass set Optimizing directly; tests exercising the browse-cache self-heal use BeginBrowseCacheRebuild/EndBrowseCacheRebuild.

func (*MockMediaDBI) LoadCachedSlugSearchCache added in v2.12.0

func (m *MockMediaDBI) LoadCachedSlugSearchCache() (bool, error)

func (*MockMediaDBI) LoadCachedTagCache added in v2.12.0

func (m *MockMediaDBI) LoadCachedTagCache() (bool, error)

func (*MockMediaDBI) MarkCorrupt added in v2.15.0

func (m *MockMediaDBI) MarkCorrupt(reason string)

func (*MockMediaDBI) MediaHasTag added in v2.12.0

func (m *MockMediaDBI) MediaHasTag(ctx context.Context, mediaDBID int64, tagValue string) (bool, error)

func (*MockMediaDBI) MigrateUp

func (m *MockMediaDBI) MigrateUp() error

func (*MockMediaDBI) NoteCorruption added in v2.15.0

func (m *MockMediaDBI) NoteCorruption(err error) bool

func (*MockMediaDBI) Open

func (m *MockMediaDBI) Open() error

GenericDBI methods

func (*MockMediaDBI) PersistSlugSearchCache added in v2.12.0

func (m *MockMediaDBI) PersistSlugSearchCache() error

func (*MockMediaDBI) PersistTagCache added in v2.12.0

func (m *MockMediaDBI) PersistTagCache() error

func (*MockMediaDBI) PopulateBrowseCache added in v2.10.0

func (m *MockMediaDBI) PopulateBrowseCache(
	ctx context.Context,
) error

func (*MockMediaDBI) PopulateBrowseCacheForSystems added in v2.16.0

func (m *MockMediaDBI) PopulateBrowseCacheForSystems(ctx context.Context, systemIDs []string) error

func (*MockMediaDBI) PopulateSystemTagsCache added in v2.7.0

func (m *MockMediaDBI) PopulateSystemTagsCache(ctx context.Context) error

func (*MockMediaDBI) PopulateSystemTagsCacheForSystems added in v2.11.0

func (m *MockMediaDBI) PopulateSystemTagsCacheForSystems(ctx context.Context, systems []systemdefs.System) error

func (*MockMediaDBI) PruneOrphanedBlobs added in v2.12.0

func (m *MockMediaDBI) PruneOrphanedBlobs(ctx context.Context) (int64, error)

func (*MockMediaDBI) QuickCheck added in v2.15.0

func (m *MockMediaDBI) QuickCheck() (bool, error)

func (*MockMediaDBI) RandomGame

func (m *MockMediaDBI) RandomGame(ctx context.Context, systems []systemdefs.System) (database.SearchResult, error)

func (*MockMediaDBI) RandomGameWithQuery added in v2.7.0

func (m *MockMediaDBI) RandomGameWithQuery(
	ctx context.Context, query *database.MediaQuery,
) (database.SearchResult, error)

func (*MockMediaDBI) RebuildSlugSearchCache added in v2.10.0

func (m *MockMediaDBI) RebuildSlugSearchCache() error

func (*MockMediaDBI) RebuildTagCache added in v2.10.0

func (m *MockMediaDBI) RebuildTagCache() error

func (*MockMediaDBI) RecomputeSystemDisambiguation added in v2.15.0

func (m *MockMediaDBI) RecomputeSystemDisambiguation(ctx context.Context, systemDBIDs []int64) error

func (*MockMediaDBI) RecomputeTitleDisambiguation added in v2.15.0

func (m *MockMediaDBI) RecomputeTitleDisambiguation(ctx context.Context, titleDBIDs []int64) error

func (*MockMediaDBI) ReconcileStagedSystem added in v2.16.0

func (m *MockMediaDBI) ReconcileStagedSystem(
	ctx context.Context, systemID string, opts database.ScanReconcileOpts,
) (database.ScanReconcileStats, error)

func (*MockMediaDBI) Recreate added in v2.16.0

func (m *MockMediaDBI) Recreate(keepBackup bool) error

func (*MockMediaDBI) RefreshSlugSearchCacheForSystems added in v2.11.0

func (m *MockMediaDBI) RefreshSlugSearchCacheForSystems(ctx context.Context, systemIDs []string) error

func (*MockMediaDBI) ResetIndexResumeAttempts added in v2.16.0

func (m *MockMediaDBI) ResetIndexResumeAttempts() error

func (*MockMediaDBI) ResolveSingletonContainerAliases added in v2.14.1

func (m *MockMediaDBI) ResolveSingletonContainerAliases(
	ctx context.Context, systemDBID int64, candidates []database.SingletonAliasCandidate,
) ([]database.SingletonContainerAlias, error)

func (*MockMediaDBI) RollbackTransaction

func (m *MockMediaDBI) RollbackTransaction() error

func (*MockMediaDBI) RunBackgroundOptimization added in v2.7.0

func (m *MockMediaDBI) RunBackgroundOptimization(statusCallback func(optimizing bool), pauser *syncutil.Pauser)

func (*MockMediaDBI) SearchMediaByProperty added in v2.16.0

func (m *MockMediaDBI) SearchMediaByProperty(
	ctx context.Context,
	systemID string,
	property string,
	value string,
) ([]database.SearchResult, error)

func (*MockMediaDBI) SearchMediaBySecondarySlug added in v2.7.0

func (m *MockMediaDBI) SearchMediaBySecondarySlug(
	ctx context.Context, systemID string, secondarySlug string, tags []zapscript.TagFilter,
) ([]database.SearchResultWithCursor, error)

func (*MockMediaDBI) SearchMediaBySlug added in v2.7.0

func (m *MockMediaDBI) SearchMediaBySlug(
	ctx context.Context, systemID string, slug string, tags []zapscript.TagFilter,
) ([]database.SearchResultWithCursor, error)

func (*MockMediaDBI) SearchMediaBySlugIn added in v2.7.0

func (m *MockMediaDBI) SearchMediaBySlugIn(
	ctx context.Context, systemID string, slugs []string, tags []zapscript.TagFilter,
) ([]database.SearchResultWithCursor, error)

func (*MockMediaDBI) SearchMediaBySlugPrefix added in v2.7.0

func (m *MockMediaDBI) SearchMediaBySlugPrefix(
	ctx context.Context, systemID string, slugPrefix string, tags []zapscript.TagFilter,
) ([]database.SearchResultWithCursor, error)

func (*MockMediaDBI) SearchMediaPathExact

func (m *MockMediaDBI) SearchMediaPathExact(
	ctx context.Context, systems []systemdefs.System, query string,
) ([]database.SearchResult, error)

Search methods

func (*MockMediaDBI) SearchMediaPathGlob

func (m *MockMediaDBI) SearchMediaPathGlob(systems []systemdefs.System, query string) ([]database.SearchResult, error)

func (*MockMediaDBI) SearchMediaWithFilters added in v2.7.0

func (m *MockMediaDBI) SearchMediaWithFilters(
	ctx context.Context,
	filters *database.SearchFilters,
) ([]database.SearchResultWithCursor, error)

func (*MockMediaDBI) SeedCanonicalTagDefinitions added in v2.16.0

func (m *MockMediaDBI) SeedCanonicalTagDefinitions(ctx context.Context) error

func (*MockMediaDBI) SetBatchSize added in v2.7.0

func (m *MockMediaDBI) SetBatchSize(size int)

func (*MockMediaDBI) SetCachedSlugResolution added in v2.7.0

func (m *MockMediaDBI) SetCachedSlugResolution(
	ctx context.Context, systemID, slug string, tagFilters []zapscript.TagFilter, mediaDBID int64, strategy string,
) error

func (*MockMediaDBI) SetIndexResumeCheckpoint added in v2.16.0

func (m *MockMediaDBI) SetIndexResumeCheckpoint(checkpoint string) error

func (*MockMediaDBI) SetIndexingCacheSize added in v2.10.0

func (*MockMediaDBI) SetIndexingCacheSize(_ bool)

func (*MockMediaDBI) SetIndexingConnBoost added in v2.16.0

func (m *MockMediaDBI) SetIndexingConnBoost(active bool)

func (*MockMediaDBI) SetIndexingStatus added in v2.7.0

func (m *MockMediaDBI) SetIndexingStatus(status string) error

func (*MockMediaDBI) SetIndexingSystems added in v2.7.0

func (m *MockMediaDBI) SetIndexingSystems(systemIDs []string) error

func (*MockMediaDBI) SetLastIndexedSystem added in v2.7.0

func (m *MockMediaDBI) SetLastIndexedSystem(systemID string) error

func (*MockMediaDBI) SetOptimizationStatus added in v2.7.0

func (m *MockMediaDBI) SetOptimizationStatus(status string) error

func (*MockMediaDBI) SetOptimizationStep added in v2.7.0

func (m *MockMediaDBI) SetOptimizationStep(step string) error

func (*MockMediaDBI) SetScrapingOperation added in v2.14.0

func (m *MockMediaDBI) SetScrapingOperation(operation database.ScrapingOperation) error

func (*MockMediaDBI) SetScrapingStatus added in v2.14.0

func (m *MockMediaDBI) SetScrapingStatus(status string) error

func (*MockMediaDBI) StageScannedMedia added in v2.16.0

func (m *MockMediaDBI) StageScannedMedia(media *database.ScanStagedMedia) error

func (*MockMediaDBI) SystemIndexed

func (m *MockMediaDBI) SystemIndexed(system *systemdefs.System) bool

func (*MockMediaDBI) TemporaryRepairJobsPending added in v2.12.0

func (m *MockMediaDBI) TemporaryRepairJobsPending(ctx context.Context) (bool, error)

func (*MockMediaDBI) TrackBackgroundOperation added in v2.7.1

func (m *MockMediaDBI) TrackBackgroundOperation()

func (*MockMediaDBI) Truncate

func (m *MockMediaDBI) Truncate() error

func (*MockMediaDBI) TruncateSystems added in v2.7.0

func (m *MockMediaDBI) TruncateSystems(systemIDs []string) error

func (*MockMediaDBI) UnsafeGetSQLDb

func (m *MockMediaDBI) UnsafeGetSQLDb() *sql.DB

func (*MockMediaDBI) UpdateLastGenerated

func (m *MockMediaDBI) UpdateLastGenerated() error

func (*MockMediaDBI) UpdateMediaTags added in v2.16.1

func (m *MockMediaDBI) UpdateMediaTags(
	ctx context.Context,
	mediaDBID int64,
	remove []database.MediaTagRef,
	add []database.MediaTagRef,
) error

func (*MockMediaDBI) UpsertMediaBlob added in v2.12.0

func (m *MockMediaDBI) UpsertMediaBlob(ctx context.Context, contentType string, data []byte) (int64, error)

func (*MockMediaDBI) UpsertMediaProperties added in v2.12.0

func (m *MockMediaDBI) UpsertMediaProperties(
	ctx context.Context, mediaDBID int64, props []database.MediaProperty,
) error

func (*MockMediaDBI) UpsertMediaTags added in v2.12.0

func (m *MockMediaDBI) UpsertMediaTags(ctx context.Context, mediaDBID int64, tags []database.TagInfo) error

func (*MockMediaDBI) UpsertMediaTitleProperties added in v2.12.0

func (m *MockMediaDBI) UpsertMediaTitleProperties(
	ctx context.Context, mediaTitleDBID int64, props []database.MediaProperty,
) error

func (*MockMediaDBI) UpsertMediaTitleTags added in v2.12.0

func (m *MockMediaDBI) UpsertMediaTitleTags(ctx context.Context, mediaTitleDBID int64, tags []database.TagInfo) error

func (*MockMediaDBI) Vacuum

func (m *MockMediaDBI) Vacuum() error

func (*MockMediaDBI) WALCheckpoint added in v2.14.1

func (m *MockMediaDBI) WALCheckpoint() error

func (*MockMediaDBI) WaitForBackgroundOperations added in v2.7.0

func (m *MockMediaDBI) WaitForBackgroundOperations()

type MockUserDBI

type MockUserDBI struct {
	mock.Mock
}

MockUserDBI is a mock implementation of the UserDBI interface using testify/mock

func NewMockUserDBI

func NewMockUserDBI() *MockUserDBI

NewMockUserDBI creates a new mock UserDBI interface for testing.

Example usage:

func TestUserOperations(t *testing.T) {
	userDB := helpers.NewMockUserDBI()
	userDB.On("AddHistory", mock.MatchedBy(func(he database.HistoryEntry) bool {
		return he.TokenID != ""
	})).Return(nil)

	// Use userDB in your test
	err := MyFunction(userDB)
	require.NoError(t, err)
	userDB.AssertExpectations(t)
}

func (*MockUserDBI) ActivateProfile added in v2.16.0

func (m *MockUserDBI) ActivateProfile(profileID string, lastUsedAt int64) error

func (*MockUserDBI) AddHistory

func (m *MockUserDBI) AddHistory(entry *database.HistoryEntry) error

UserDBI specific methods

func (*MockUserDBI) AddInboxMessage added in v2.8.0

func (m *MockUserDBI) AddInboxMessage(msg *database.InboxMessage) (*database.InboxMessage, error)

func (*MockUserDBI) AddMapping

func (m *MockUserDBI) AddMapping(mapping *database.Mapping) error

func (*MockUserDBI) AddMediaHistory added in v2.7.0

func (m *MockUserDBI) AddMediaHistory(entry *database.MediaHistoryEntry) (int64, error)

func (*MockUserDBI) Allocate

func (m *MockUserDBI) Allocate() error

func (*MockUserDBI) BackfillMediaHistoryUUIDs added in v2.16.0

func (m *MockUserDBI) BackfillMediaHistoryUUIDs() (int64, error)

func (*MockUserDBI) Backup added in v2.15.0

func (m *MockUserDBI) Backup(reason string, manual bool) (database.BackupInfo, error)

func (*MockUserDBI) BackupForTransfer added in v2.16.0

func (m *MockUserDBI) BackupForTransfer(
	ctx context.Context, reason string,
) (database.BackupInfo, func() error, error)

func (*MockUserDBI) CleanupHistory added in v2.7.0

func (m *MockUserDBI) CleanupHistory(retentionDays int) (int64, error)

func (*MockUserDBI) CleanupMediaHistory added in v2.7.0

func (m *MockUserDBI) CleanupMediaHistory(retentionDays int, requireSynced bool) (int64, error)

func (*MockUserDBI) ClearCorruptMarker added in v2.15.0

func (m *MockUserDBI) ClearCorruptMarker() error

func (*MockUserDBI) Close

func (m *MockUserDBI) Close() error

func (*MockUserDBI) CloseHangingMediaHistory added in v2.7.0

func (m *MockUserDBI) CloseHangingMediaHistory() error

func (*MockUserDBI) CloseMediaHistory added in v2.7.0

func (m *MockUserDBI) CloseMediaHistory(dbid int64, endTime time.Time, playTime int) error

func (*MockUserDBI) CountClients added in v2.11.0

func (m *MockUserDBI) CountClients() (int, error)

func (*MockUserDBI) CreateClient added in v2.11.0

func (m *MockUserDBI) CreateClient(c *database.Client) error

func (*MockUserDBI) CreateProfile added in v2.16.0

func (m *MockUserDBI) CreateProfile(p *database.Profile) error

func (*MockUserDBI) DeleteAllInboxMessages added in v2.8.0

func (m *MockUserDBI) DeleteAllInboxMessages() (int64, error)

func (*MockUserDBI) DeleteClient added in v2.11.0

func (m *MockUserDBI) DeleteClient(clientID string) error

func (*MockUserDBI) DeleteDeviceState added in v2.16.0

func (m *MockUserDBI) DeleteDeviceState(key string) error

func (*MockUserDBI) DeleteInboxMessage added in v2.8.0

func (m *MockUserDBI) DeleteInboxMessage(id int64) error

func (*MockUserDBI) DeleteMapping

func (m *MockUserDBI) DeleteMapping(id int64) error

func (*MockUserDBI) DeleteMediaUserData added in v2.15.0

func (m *MockUserDBI) DeleteMediaUserData(systemID, path string) error

func (*MockUserDBI) DeleteProfile added in v2.16.0

func (m *MockUserDBI) DeleteProfile(profileID string) error

func (*MockUserDBI) EnsureRecentBackup added in v2.15.0

func (m *MockUserDBI) EnsureRecentBackup(maxAge time.Duration) (database.BackupInfo, bool, error)

func (*MockUserDBI) GetAllMappings

func (m *MockUserDBI) GetAllMappings() ([]database.Mapping, error)

func (*MockUserDBI) GetClientByToken added in v2.11.0

func (m *MockUserDBI) GetClientByToken(authToken string) (*database.Client, error)

func (*MockUserDBI) GetDBPath

func (m *MockUserDBI) GetDBPath() string

func (*MockUserDBI) GetDeviceState added in v2.16.0

func (m *MockUserDBI) GetDeviceState(key string) (value string, found bool, err error)

func (*MockUserDBI) GetEnabledMappings

func (m *MockUserDBI) GetEnabledMappings() ([]database.Mapping, error)

func (*MockUserDBI) GetHistory

func (m *MockUserDBI) GetHistory(lastID int64) ([]database.HistoryEntry, error)

func (*MockUserDBI) GetInboxMessages added in v2.8.0

func (m *MockUserDBI) GetInboxMessages() ([]database.InboxMessage, error)

func (*MockUserDBI) GetLatestMediaHistory added in v2.14.0

func (m *MockUserDBI) GetLatestMediaHistory() (database.MediaHistoryEntry, bool, error)

func (*MockUserDBI) GetMapping

func (m *MockUserDBI) GetMapping(id int64) (database.Mapping, error)

func (*MockUserDBI) GetMediaHistory added in v2.7.0

func (m *MockUserDBI) GetMediaHistory(
	systemIDs []string, lastID int64, limit int,
) ([]database.MediaHistoryEntry, error)

func (*MockUserDBI) GetMediaHistoryIdentityBackfillBatch added in v2.16.1

func (m *MockUserDBI) GetMediaHistoryIdentityBackfillBatch(
	afterDBID int64, policyVersion int, limit int,
) ([]database.MediaHistoryEntry, error)

func (*MockUserDBI) GetMediaHistorySyncBatch added in v2.16.0

func (m *MockUserDBI) GetMediaHistorySyncBatch(
	after time.Time, afterDBID int64, limit int,
) ([]database.MediaHistoryEntry, error)

func (*MockUserDBI) GetMediaHistoryTop added in v2.10.0

func (m *MockUserDBI) GetMediaHistoryTop(
	systemIDs []string, since *time.Time, limit int,
) ([]database.MediaHistoryTopEntry, error)

func (*MockUserDBI) GetMediaUserData added in v2.15.0

func (m *MockUserDBI) GetMediaUserData(systemID, path string) (database.MediaUserData, bool, error)

func (*MockUserDBI) GetProfile added in v2.16.0

func (m *MockUserDBI) GetProfile(profileID string) (*database.Profile, error)

func (*MockUserDBI) GetProfileBySwitchID added in v2.16.0

func (m *MockUserDBI) GetProfileBySwitchID(switchID string) (*database.Profile, error)

func (*MockUserDBI) GetSupportedZapLinkHosts added in v2.8.0

func (m *MockUserDBI) GetSupportedZapLinkHosts() ([]string, error)

func (*MockUserDBI) GetZapLinkCache

func (m *MockUserDBI) GetZapLinkCache(url string) (string, error)

func (*MockUserDBI) GetZapLinkHost

func (m *MockUserDBI) GetZapLinkHost(host string) (found, zapScript bool, err error)

func (*MockUserDBI) HealTimestamps added in v2.7.0

func (m *MockUserDBI) HealTimestamps(bootUUID string, trueBootTime time.Time) (int64, error)

func (*MockUserDBI) IntegrityReport added in v2.15.0

func (m *MockUserDBI) IntegrityReport() []string

func (*MockUserDBI) IsMarkedCorrupt added in v2.15.0

func (m *MockUserDBI) IsMarkedCorrupt() bool

func (*MockUserDBI) ListBackups added in v2.15.0

func (m *MockUserDBI) ListBackups() ([]database.BackupInfo, error)

func (*MockUserDBI) ListClients added in v2.11.0

func (m *MockUserDBI) ListClients() ([]database.Client, error)

func (*MockUserDBI) ListMediaUserData added in v2.15.0

func (m *MockUserDBI) ListMediaUserData() ([]database.MediaUserData, error)

func (*MockUserDBI) ListProfiles added in v2.16.0

func (m *MockUserDBI) ListProfiles() ([]database.Profile, error)

func (*MockUserDBI) MarkCorrupt added in v2.15.0

func (m *MockUserDBI) MarkCorrupt(reason string)

func (*MockUserDBI) MarkMediaHistorySynced added in v2.16.0

func (m *MockUserDBI) MarkMediaHistorySynced(refs []database.MediaHistorySyncRef, syncedAt time.Time) error

func (*MockUserDBI) MigrateUp

func (m *MockUserDBI) MigrateUp() error

func (*MockUserDBI) NoteCorruption added in v2.15.0

func (m *MockUserDBI) NoteCorruption(err error) bool

func (*MockUserDBI) Open

func (m *MockUserDBI) Open() error

GenericDBI methods

func (*MockUserDBI) PruneExpiredZapLinkHosts added in v2.8.0

func (m *MockUserDBI) PruneExpiredZapLinkHosts(olderThan time.Duration) (int64, error)

func (*MockUserDBI) RecoverFromCorruption added in v2.15.0

func (m *MockUserDBI) RecoverFromCorruption() (database.RestoreInfo, error)

func (*MockUserDBI) ReplaceAllClients added in v2.16.0

func (m *MockUserDBI) ReplaceAllClients(clients []database.Client) error

func (*MockUserDBI) ResetMediaHistorySyncAfter added in v2.16.0

func (m *MockUserDBI) ResetMediaHistorySyncAfter(watermark *time.Time) error

func (*MockUserDBI) RestoreBackup added in v2.15.0

func (m *MockUserDBI) RestoreBackup(name string) (database.RestoreInfo, error)

func (*MockUserDBI) SetDeviceState added in v2.16.0

func (m *MockUserDBI) SetDeviceState(key, value string) error

func (*MockUserDBI) SetMediaUserFavorite added in v2.15.0

func (m *MockUserDBI) SetMediaUserFavorite(systemID, path string, favorite bool) error

func (*MockUserDBI) SetMediaUserLauncherOverride added in v2.15.0

func (m *MockUserDBI) SetMediaUserLauncherOverride(systemID, path, launcherID string) error

func (*MockUserDBI) SetMediaUserSnapshot added in v2.16.0

func (m *MockUserDBI) SetMediaUserSnapshot(systemID, path, mediaName string, tags []string) error

func (*MockUserDBI) SumMediaPlayTimeForDay added in v2.15.0

func (m *MockUserDBI) SumMediaPlayTimeForDay(dayStart time.Time) (int64, error)

func (*MockUserDBI) SumMediaPlayTimeForDayByProfile added in v2.16.0

func (m *MockUserDBI) SumMediaPlayTimeForDayByProfile(dayStart time.Time, profileID string) (int64, error)

func (*MockUserDBI) Truncate

func (m *MockUserDBI) Truncate() error

func (*MockUserDBI) UnsafeGetSQLDb

func (m *MockUserDBI) UnsafeGetSQLDb() *sql.DB

func (*MockUserDBI) UpdateClientLastSeen added in v2.11.0

func (m *MockUserDBI) UpdateClientLastSeen(authToken string, lastSeenAt int64) error

func (*MockUserDBI) UpdateMapping

func (m *MockUserDBI) UpdateMapping(id int64, mapping *database.Mapping) error

func (*MockUserDBI) UpdateMediaHistoryIdentity added in v2.16.0

func (m *MockUserDBI) UpdateMediaHistoryIdentity(dbid int64, identity *database.MediaIdentity) (bool, error)

func (*MockUserDBI) UpdateMediaHistoryTime added in v2.7.0

func (m *MockUserDBI) UpdateMediaHistoryTime(dbid int64, playTime int) error

func (*MockUserDBI) UpdateProfile added in v2.16.0

func (m *MockUserDBI) UpdateProfile(p *database.Profile) error

func (*MockUserDBI) UpdateZapLinkCache

func (m *MockUserDBI) UpdateZapLinkCache(url, zs string) error

func (*MockUserDBI) UpdateZapLinkHost

func (m *MockUserDBI) UpdateZapLinkHost(host string, isZapScript int) error

func (*MockUserDBI) UpsertMediaUserData added in v2.15.0

func (m *MockUserDBI) UpsertMediaUserData(data *database.MediaUserData) error

func (*MockUserDBI) Vacuum

func (m *MockUserDBI) Vacuum() error

type MockWebSocketConnection

type MockWebSocketConnection struct {
	CloseError       error
	WriteError       error
	ReadError        error
	SentMessages     [][]byte
	ReceivedMessages [][]byte

	Closed bool
	// contains filtered or unexported fields
}

MockWebSocketConnection provides a mock implementation for testing

func NewMockWebSocketConnection

func NewMockWebSocketConnection() *MockWebSocketConnection

NewMockWebSocketConnection creates a new mock WebSocket connection

func (*MockWebSocketConnection) ClearSentMessages

func (m *MockWebSocketConnection) ClearSentMessages()

ClearSentMessages clears all sent messages

func (*MockWebSocketConnection) Close

func (m *MockWebSocketConnection) Close() error

Close simulates closing the connection

func (*MockWebSocketConnection) GetSentMessages

func (m *MockWebSocketConnection) GetSentMessages() [][]byte

GetSentMessages returns all sent messages (thread-safe copy)

func (*MockWebSocketConnection) QueueMessage

func (m *MockWebSocketConnection) QueueMessage(data []byte)

QueueMessage adds a message to the read queue

func (*MockWebSocketConnection) ReadMessage

func (m *MockWebSocketConnection) ReadMessage() (messageType int, data []byte, err error)

ReadMessage simulates reading a message

func (*MockWebSocketConnection) SetCloseError

func (m *MockWebSocketConnection) SetCloseError(err error)

SetCloseError sets an error to be returned on close operations

func (*MockWebSocketConnection) SetReadError

func (m *MockWebSocketConnection) SetReadError(err error)

SetReadError sets an error to be returned on read operations

func (*MockWebSocketConnection) SetWriteError

func (m *MockWebSocketConnection) SetWriteError(err error)

SetWriteError sets an error to be returned on write operations

func (*MockWebSocketConnection) WriteMessage

func (m *MockWebSocketConnection) WriteMessage(_ int, data []byte) error

WriteMessage simulates writing a message

type WebSocketMessage

type WebSocketMessage struct {
	Timestamp time.Time `json:"timestamp"`
	Error     error     `json:"error,omitempty"`
	Type      string    `json:"type"`
	SessionID string    `json:"sessionId,omitempty"`
	Data      []byte    `json:"data"`
}

WebSocketMessage captures a message sent or received during testing

type WebSocketTestServer

type WebSocketTestServer struct {
	Server *httptest.Server
	Melody *melody.Melody

	Messages []WebSocketMessage
	// contains filtered or unexported fields
}

WebSocketTestServer provides utilities for testing WebSocket connections

func NewWebSocketTestServer

func NewWebSocketTestServer(t *testing.T, handler func(*melody.Session, []byte)) *WebSocketTestServer

NewWebSocketTestServer creates a new WebSocket test server

func (*WebSocketTestServer) ClearMessages

func (wsts *WebSocketTestServer) ClearMessages()

ClearMessages clears all recorded messages (thread-safe)

func (*WebSocketTestServer) Close

func (wsts *WebSocketTestServer) Close()

Close shuts down the test server

func (*WebSocketTestServer) CreateWebSocketClient

func (wsts *WebSocketTestServer) CreateWebSocketClient() (*websocket.Conn, error)

CreateWebSocketClient creates a WebSocket client connected to the test server

func (*WebSocketTestServer) GetMessages

func (wsts *WebSocketTestServer) GetMessages() []WebSocketMessage

GetMessages returns all recorded messages (thread-safe)

func (*WebSocketTestServer) WaitForMessages

func (wsts *WebSocketTestServer) WaitForMessages(count int, timeout time.Duration) error

WaitForMessages waits for a specific number of messages with timeout

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL