Documentation
¶
Overview ¶
Package testhelpers provides test fixtures and mock data for unit and integration tests. This package contains RSS feed examples, test data constants, and helper utilities for creating consistent test scenarios.
Index ¶
- Constants
- func CreateMockFileHandler(content string) http.Handler
- func CreateMockRSSHandler(rssContent string) http.Handler
- func GenerateLargeRSSFeed(episodeCount int) string
- func SetupTestDB(t *testing.T) *gorm.DB
- func SetupTestDataDir(t *testing.T) (dataDir string, cleanup func())
- func TeardownTestDB(t *testing.T, database *gorm.DB)
- type MockRepository
- func (m *MockRepository) AddTagToPodcast(id, tagID string) error
- func (m *MockRepository) CreatePodcast(podcast *db.Podcast) error
- func (m *MockRepository) CreatePodcastItem(podcastItem *db.PodcastItem) error
- func (m *MockRepository) CreateTag(tag *db.Tag) error
- func (m *MockRepository) DeletePodcastByID(id string) error
- func (m *MockRepository) DeletePodcastItemByID(id string) error
- func (m *MockRepository) DeleteTagByID(id string) error
- func (m *MockRepository) ForceSetLastEpisodeDate(podcastID string)
- func (m *MockRepository) GetAllPodcastItems(podcasts *[]db.PodcastItem) error
- func (m *MockRepository) GetAllPodcastItemsAlreadyDownloaded() (*[]db.PodcastItem, error)
- func (m *MockRepository) GetAllPodcastItemsByIDs(podcastItemIds []string) (*[]db.PodcastItem, error)
- func (m *MockRepository) GetAllPodcastItemsByPodcastID(podcastID string, podcastItems *[]db.PodcastItem) error
- func (m *MockRepository) GetAllPodcastItemsByPodcastIDs(podcastIds []string, podcastItems *[]db.PodcastItem) error
- func (m *MockRepository) GetAllPodcastItemsToBeDownloaded() (*[]db.PodcastItem, error)
- func (m *MockRepository) GetAllPodcastItemsWithoutImage() (*[]db.PodcastItem, error)
- func (m *MockRepository) GetAllPodcastItemsWithoutSize() (*[]db.PodcastItem, error)
- func (m *MockRepository) GetAllPodcasts(podcasts *[]db.Podcast, sorting string) error
- func (m *MockRepository) GetAllTags(sorting string) (*[]db.Tag, error)
- func (m *MockRepository) GetEpisodeNumber(podcastItemID, podcastID string) (int, error)
- func (m *MockRepository) GetLock(name string) *db.JobLock
- func (m *MockRepository) GetOrCreateSetting() *db.Setting
- func (m *MockRepository) GetPaginatedPodcastItems(page, count int, downloadedOnly, playedOnly *bool, fromDate time.Time, ...) error
- func (m *MockRepository) GetPaginatedPodcastItemsNew(queryModel *model.EpisodesFilter) (*[]db.PodcastItem, int64, error)
- func (m *MockRepository) GetPaginatedTags(page, count int, tags *[]db.Tag, total *int64) error
- func (m *MockRepository) GetPodcastByID(id string, podcast *db.Podcast) error
- func (m *MockRepository) GetPodcastByTitleAndAuthor(title, author string, podcast *db.Podcast) error
- func (m *MockRepository) GetPodcastByURL(url string, podcast *db.Podcast) error
- func (m *MockRepository) GetPodcastEpisodeDiskStats() (db.PodcastItemConsolidateDiskStatsModel, error)
- func (m *MockRepository) GetPodcastEpisodeStats() (*[]db.PodcastItemStatsModel, error)
- func (m *MockRepository) GetPodcastItemByID(id string, podcastItem *db.PodcastItem) error
- func (m *MockRepository) GetPodcastItemByPodcastIDAndGUID(podcastID, guid string, podcastItem *db.PodcastItem) error
- func (m *MockRepository) GetPodcastItemsByPodcastIDAndGUIDs(podcastID string, guids []string) (*[]db.PodcastItem, error)
- func (m *MockRepository) GetPodcastsByURLList(urls []string, podcasts *[]db.Podcast) error
- func (m *MockRepository) GetTagByID(id string) (*db.Tag, error)
- func (m *MockRepository) GetTagByLabel(label string) (*db.Tag, error)
- func (m *MockRepository) GetTagsByIDs(ids []string) (*[]db.Tag, error)
- func (m *MockRepository) Lock(name string, duration int)
- func (m *MockRepository) RemoveTagFromPodcast(id, tagID string) error
- func (m *MockRepository) Reset()
- func (m *MockRepository) SetAllEpisodesToDownload(podcastID string) error
- func (m *MockRepository) TogglePodcastPauseStatus(podcastID string, isPaused bool) error
- func (m *MockRepository) Unlock(name string)
- func (m *MockRepository) UnlockMissedJobs()
- func (m *MockRepository) UntagAllByTagID(tagID string) error
- func (m *MockRepository) UpdateLastEpisodeDateForPodcast(podcastID string, lastEpisode time.Time) error
- func (m *MockRepository) UpdatePodcast(podcast *db.Podcast) error
- func (m *MockRepository) UpdatePodcastItem(podcastItem *db.PodcastItem) error
- func (m *MockRepository) UpdatePodcastItemFileSize(podcastItemID string, size int64) error
- func (m *MockRepository) UpdateSettings(setting *db.Setting) error
- func (m *MockRepository) UpdateTag(tag *db.Tag) error
Constants ¶
const EmptyRSSFeed = `` /* 398-byte string literal not displayed */
EmptyRSSFeed is a valid RSS feed with no episodes.
const InvalidXMLFeed = `` /* 144-byte string literal not displayed */
InvalidXMLFeed is an invalid XML document for testing error handling.
const MockItunesEmptyResponse = `{
"resultCount": 0,
"results": []
}`
MockItunesEmptyResponse is a mock iTunes API response with no results.
const MockItunesSearchResponse = `` /* 882-byte string literal not displayed */
MockItunesSearchResponse is a mock response from iTunes API search.
const RSSFeedWithItunesExtensions = `` /* 1586-byte string literal not displayed */
RSSFeedWithItunesExtensions is a feed with comprehensive iTunes namespace tags.
const RSSFeedWithSpecialCharacters = `` /* 861-byte string literal not displayed */
RSSFeedWithSpecialCharacters tests encoding and sanitization.
const ValidRSSFeed = `` /* 1253-byte string literal not displayed */
ValidRSSFeed is a valid RSS 2.0 podcast feed for testing.
Variables ¶
This section is empty.
Functions ¶
func CreateMockFileHandler ¶
CreateMockFileHandler creates an HTTP handler that returns file content.
func CreateMockRSSHandler ¶
CreateMockRSSHandler creates an HTTP handler that returns RSS feed content.
func GenerateLargeRSSFeed ¶
GenerateLargeRSSFeed creates an RSS feed with the specified number of episodes for pagination testing.
func SetupTestDB ¶
SetupTestDB creates an in-memory SQLite database for testing. It automatically runs migrations and returns the database connection. The database is isolated per test and will be cleaned up automatically.
func SetupTestDataDir ¶
SetupTestDataDir creates a temporary directory for test file operations. It sets the DATA environment variable and returns a cleanup function.
Types ¶
type MockRepository ¶
type MockRepository struct {
GetPodcastByURLError error
GetOrCreateSettingError error
GetAllPodcastItemsError error
CreatePodcastItemError error
GetPodcastItemByIdError error
UpdatePodcastError error
CreatePodcastError error
PodcastItems map[string]*db.PodcastItem
Tags map[string]*db.Tag
Settings *db.Setting
JobLocks map[string]*db.JobLock
Podcasts map[string]*db.Podcast
GetPodcastByURLCalls int
LockCalls int
UnlockCalls int
GetOrCreateSettingCalls int
GetAllPodcastItemsCalls int
UpdatePodcastItemCalls int
CreatePodcastItemCalls int
DeletePodcastByIdCalls int
UpdatePodcastCalls int
CreatePodcastCalls int
}
MockRepository is a mock implementation of database.Repository for testing. It stores data in memory and allows tests to control behavior and verify calls.
func NewMockRepository ¶
func NewMockRepository() *MockRepository
NewMockRepository creates a new mock repository with empty data stores.
func (*MockRepository) AddTagToPodcast ¶
func (m *MockRepository) AddTagToPodcast(id, tagID string) error
func (*MockRepository) CreatePodcast ¶
func (m *MockRepository) CreatePodcast(podcast *db.Podcast) error
func (*MockRepository) CreatePodcastItem ¶
func (m *MockRepository) CreatePodcastItem(podcastItem *db.PodcastItem) error
func (*MockRepository) DeletePodcastByID ¶
func (m *MockRepository) DeletePodcastByID(id string) error
func (*MockRepository) DeletePodcastItemByID ¶
func (m *MockRepository) DeletePodcastItemByID(id string) error
func (*MockRepository) DeleteTagByID ¶
func (m *MockRepository) DeleteTagByID(id string) error
func (*MockRepository) ForceSetLastEpisodeDate ¶
func (m *MockRepository) ForceSetLastEpisodeDate(podcastID string)
func (*MockRepository) GetAllPodcastItems ¶
func (m *MockRepository) GetAllPodcastItems(podcasts *[]db.PodcastItem) error
func (*MockRepository) GetAllPodcastItemsAlreadyDownloaded ¶
func (m *MockRepository) GetAllPodcastItemsAlreadyDownloaded() (*[]db.PodcastItem, error)
func (*MockRepository) GetAllPodcastItemsByIDs ¶
func (m *MockRepository) GetAllPodcastItemsByIDs(podcastItemIds []string) (*[]db.PodcastItem, error)
func (*MockRepository) GetAllPodcastItemsByPodcastID ¶
func (m *MockRepository) GetAllPodcastItemsByPodcastID(podcastID string, podcastItems *[]db.PodcastItem) error
func (*MockRepository) GetAllPodcastItemsByPodcastIDs ¶
func (m *MockRepository) GetAllPodcastItemsByPodcastIDs(podcastIds []string, podcastItems *[]db.PodcastItem) error
func (*MockRepository) GetAllPodcastItemsToBeDownloaded ¶
func (m *MockRepository) GetAllPodcastItemsToBeDownloaded() (*[]db.PodcastItem, error)
func (*MockRepository) GetAllPodcastItemsWithoutImage ¶
func (m *MockRepository) GetAllPodcastItemsWithoutImage() (*[]db.PodcastItem, error)
func (*MockRepository) GetAllPodcastItemsWithoutSize ¶
func (m *MockRepository) GetAllPodcastItemsWithoutSize() (*[]db.PodcastItem, error)
func (*MockRepository) GetAllPodcasts ¶
func (m *MockRepository) GetAllPodcasts(podcasts *[]db.Podcast, sorting string) error
func (*MockRepository) GetAllTags ¶
func (m *MockRepository) GetAllTags(sorting string) (*[]db.Tag, error)
func (*MockRepository) GetEpisodeNumber ¶
func (m *MockRepository) GetEpisodeNumber(podcastItemID, podcastID string) (int, error)
func (*MockRepository) GetOrCreateSetting ¶
func (m *MockRepository) GetOrCreateSetting() *db.Setting
func (*MockRepository) GetPaginatedPodcastItems ¶
func (m *MockRepository) GetPaginatedPodcastItems(page, count int, downloadedOnly, playedOnly *bool, fromDate time.Time, podcasts *[]db.PodcastItem, total *int64) error
func (*MockRepository) GetPaginatedPodcastItemsNew ¶
func (m *MockRepository) GetPaginatedPodcastItemsNew(queryModel *model.EpisodesFilter) (*[]db.PodcastItem, int64, error)
func (*MockRepository) GetPaginatedTags ¶
func (*MockRepository) GetPodcastByID ¶
func (m *MockRepository) GetPodcastByID(id string, podcast *db.Podcast) error
func (*MockRepository) GetPodcastByTitleAndAuthor ¶
func (m *MockRepository) GetPodcastByTitleAndAuthor(title, author string, podcast *db.Podcast) error
func (*MockRepository) GetPodcastByURL ¶
func (m *MockRepository) GetPodcastByURL(url string, podcast *db.Podcast) error
func (*MockRepository) GetPodcastEpisodeDiskStats ¶
func (m *MockRepository) GetPodcastEpisodeDiskStats() (db.PodcastItemConsolidateDiskStatsModel, error)
func (*MockRepository) GetPodcastEpisodeStats ¶
func (m *MockRepository) GetPodcastEpisodeStats() (*[]db.PodcastItemStatsModel, error)
func (*MockRepository) GetPodcastItemByID ¶
func (m *MockRepository) GetPodcastItemByID(id string, podcastItem *db.PodcastItem) error
func (*MockRepository) GetPodcastItemByPodcastIDAndGUID ¶
func (m *MockRepository) GetPodcastItemByPodcastIDAndGUID(podcastID, guid string, podcastItem *db.PodcastItem) error
func (*MockRepository) GetPodcastItemsByPodcastIDAndGUIDs ¶
func (m *MockRepository) GetPodcastItemsByPodcastIDAndGUIDs(podcastID string, guids []string) (*[]db.PodcastItem, error)
func (*MockRepository) GetPodcastsByURLList ¶
func (m *MockRepository) GetPodcastsByURLList(urls []string, podcasts *[]db.Podcast) error
func (*MockRepository) GetTagByID ¶
func (m *MockRepository) GetTagByID(id string) (*db.Tag, error)
func (*MockRepository) GetTagByLabel ¶
func (m *MockRepository) GetTagByLabel(label string) (*db.Tag, error)
func (*MockRepository) GetTagsByIDs ¶
func (m *MockRepository) GetTagsByIDs(ids []string) (*[]db.Tag, error)
func (*MockRepository) Lock ¶
func (m *MockRepository) Lock(name string, duration int)
func (*MockRepository) RemoveTagFromPodcast ¶
func (m *MockRepository) RemoveTagFromPodcast(id, tagID string) error
func (*MockRepository) Reset ¶
func (m *MockRepository) Reset()
Reset clears all data and resets call counters.
func (*MockRepository) SetAllEpisodesToDownload ¶
func (m *MockRepository) SetAllEpisodesToDownload(podcastID string) error
func (*MockRepository) TogglePodcastPauseStatus ¶
func (m *MockRepository) TogglePodcastPauseStatus(podcastID string, isPaused bool) error
func (*MockRepository) Unlock ¶
func (m *MockRepository) Unlock(name string)
func (*MockRepository) UnlockMissedJobs ¶
func (m *MockRepository) UnlockMissedJobs()
func (*MockRepository) UntagAllByTagID ¶
func (m *MockRepository) UntagAllByTagID(tagID string) error
func (*MockRepository) UpdateLastEpisodeDateForPodcast ¶
func (m *MockRepository) UpdateLastEpisodeDateForPodcast(podcastID string, lastEpisode time.Time) error
func (*MockRepository) UpdatePodcast ¶
func (m *MockRepository) UpdatePodcast(podcast *db.Podcast) error
func (*MockRepository) UpdatePodcastItem ¶
func (m *MockRepository) UpdatePodcastItem(podcastItem *db.PodcastItem) error
func (*MockRepository) UpdatePodcastItemFileSize ¶
func (m *MockRepository) UpdatePodcastItemFileSize(podcastItemID string, size int64) error
func (*MockRepository) UpdateSettings ¶
func (m *MockRepository) UpdateSettings(setting *db.Setting) error