mirror of
https://github.com/navidrome/navidrome.git
synced 2026-08-31 07:30:32 +00:00
test(podcast): fix test failures after API changes
- Add ExistsByURL to MockPodcastChannelRepo - Add channel mock data to DownloadEpisode error handling and timestamp tests - Fix DeleteEpisode test to match actual behavior (resets to new status) - Pass podcasts.Podcasts to subsonic.New in e2e test suite Signed-off-by: ji-ho lee <search5@gmail.com>
This commit is contained in:
parent
3e9b4fed30
commit
d2629094d0
@ -50,7 +50,7 @@ var _ = Describe("PodcastService", func() {
|
||||
DeferCleanup(mockServer.Close)
|
||||
|
||||
conf.Server.DataFolder = GinkgoT().TempDir()
|
||||
svc = podcasts.NewPodcastService(ds, nil)
|
||||
svc = podcasts.NewPodcastService(ds, nil, nil)
|
||||
})
|
||||
|
||||
Describe("AddChannel", func() {
|
||||
@ -123,6 +123,11 @@ var _ = Describe("PodcastService", func() {
|
||||
var episode *model.PodcastEpisode
|
||||
|
||||
BeforeEach(func() {
|
||||
channelRepo.Data["ch-1"] = &model.PodcastChannel{
|
||||
ID: "ch-1",
|
||||
Title: "Test Channel",
|
||||
URL: "http://example.com/feed.xml",
|
||||
}
|
||||
episode = &model.PodcastEpisode{
|
||||
ID: "ep-1",
|
||||
ChannelID: "ch-1",
|
||||
@ -164,11 +169,11 @@ var _ = Describe("PodcastService", func() {
|
||||
})
|
||||
|
||||
Describe("DeleteEpisode", func() {
|
||||
It("removes episode from DB", func() {
|
||||
episodeRepo.Data["ep-1"] = &model.PodcastEpisode{ID: "ep-1", ChannelID: "ch-1"}
|
||||
It("resets episode to new status", func() {
|
||||
episodeRepo.Data["ep-1"] = &model.PodcastEpisode{ID: "ep-1", ChannelID: "ch-1", Status: model.PodcastStatusCompleted}
|
||||
err := svc.DeleteEpisode(ctx, "ep-1")
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(episodeRepo.Data).To(BeEmpty())
|
||||
Expect(episodeRepo.Data["ep-1"].Status).To(Equal(model.PodcastStatusNew))
|
||||
})
|
||||
|
||||
It("deletes the downloaded file when path is set", func() {
|
||||
@ -208,6 +213,9 @@ var _ = Describe("PodcastService", func() {
|
||||
})
|
||||
|
||||
Describe("DownloadEpisode error handling", func() {
|
||||
BeforeEach(func() {
|
||||
channelRepo.Data["ch-1"] = &model.PodcastChannel{ID: "ch-1", Title: "Test Channel"}
|
||||
})
|
||||
It("sets status to error when download fails", func() {
|
||||
episodeRepo.Data["ep-bad"] = &model.PodcastEpisode{
|
||||
ID: "ep-bad",
|
||||
@ -238,6 +246,9 @@ var _ = Describe("PodcastService", func() {
|
||||
})
|
||||
|
||||
Describe("DownloadEpisode with timestamp", func() {
|
||||
BeforeEach(func() {
|
||||
channelRepo.Data["ch-1"] = &model.PodcastChannel{ID: "ch-1", Title: "Test Channel"}
|
||||
})
|
||||
It("sets updated_at after status change", func() {
|
||||
episodeRepo.Data["ep-ts"] = &model.PodcastEpisode{
|
||||
ID: "ep-ts",
|
||||
|
||||
@ -24,6 +24,7 @@ import (
|
||||
"github.com/navidrome/navidrome/core/metrics"
|
||||
"github.com/navidrome/navidrome/core/playback"
|
||||
"github.com/navidrome/navidrome/core/playlists"
|
||||
"github.com/navidrome/navidrome/core/podcasts"
|
||||
"github.com/navidrome/navidrome/core/scrobbler"
|
||||
"github.com/navidrome/navidrome/core/storage/storagetest"
|
||||
"github.com/navidrome/navidrome/core/stream"
|
||||
@ -426,6 +427,7 @@ func setupTestDB() {
|
||||
metrics.NewNoopInstance(),
|
||||
lyrics.NewLyrics(ds, nil),
|
||||
decider,
|
||||
podcasts.NewPodcastService(ds, ffmpeg.New(), events.NoopBroker()),
|
||||
nil,
|
||||
)
|
||||
}
|
||||
|
||||
@ -57,6 +57,18 @@ func (m *MockPodcastChannelRepo) UpdateChannel(channel *model.PodcastChannel) er
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *MockPodcastChannelRepo) ExistsByURL(url string) (bool, error) {
|
||||
if m.Err {
|
||||
return false, errors.New("error")
|
||||
}
|
||||
for _, c := range m.Data {
|
||||
if c.URL == url {
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
|
||||
func (m *MockPodcastChannelRepo) Delete(chanID string) error {
|
||||
if m.Err {
|
||||
return errors.New("error")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user