reorg packages
This commit is contained in:
81
podcast/podcast_test.go
Normal file
81
podcast/podcast_test.go
Normal file
@@ -0,0 +1,81 @@
|
||||
package podcast
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
_ "embed"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/mmcdole/gofeed"
|
||||
"github.com/stretchr/testify/require"
|
||||
"go.senan.xyz/gonic/db"
|
||||
"go.senan.xyz/gonic/mockfs"
|
||||
)
|
||||
|
||||
//go:embed testdata/rss.new
|
||||
var testRSS []byte
|
||||
|
||||
func TestPodcastsAndEpisodesWithSameName(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
t.Skip("requires network access")
|
||||
|
||||
m := mockfs.New(t)
|
||||
|
||||
base := t.TempDir()
|
||||
podcasts := New(m.DB(), base, m.TagReader())
|
||||
|
||||
fp := gofeed.NewParser()
|
||||
newFeed, err := fp.Parse(bytes.NewReader(testRSS))
|
||||
if err != nil {
|
||||
t.Fatalf("parse test data: %v", err)
|
||||
}
|
||||
|
||||
podcast, err := podcasts.AddNewPodcast("file://testdata/rss.new", newFeed)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, podcast.RootDir, filepath.Join(base, "InternetBox"))
|
||||
|
||||
podcast, err = podcasts.AddNewPodcast("file://testdata/rss.new", newFeed)
|
||||
require.NoError(t, err)
|
||||
|
||||
// check we made a unique podcast name
|
||||
require.Equal(t, podcast.RootDir, filepath.Join(base, "InternetBox (1)"))
|
||||
|
||||
podcastEpisodes, err := podcasts.GetNewestPodcastEpisodes(10)
|
||||
require.NoError(t, err)
|
||||
require.Greater(t, len(podcastEpisodes), 0)
|
||||
|
||||
var pe []*db.PodcastEpisode
|
||||
require.NoError(t, m.DB().Order("id").Find(&pe, "podcast_id=? AND title=?", podcast.ID, "Episode 126").Error)
|
||||
require.Len(t, pe, 2)
|
||||
|
||||
require.NoError(t, podcasts.DownloadEpisode(pe[0].ID))
|
||||
require.NoError(t, podcasts.DownloadEpisode(pe[1].ID))
|
||||
|
||||
require.NoError(t, m.DB().Order("id").Preload("Podcast").Find(&pe, "podcast_id=? AND title=?", podcast.ID, "Episode 126").Error)
|
||||
require.Len(t, pe, 2)
|
||||
|
||||
// check we made a unique podcast episode names
|
||||
require.Equal(t, "InternetBoxEpisode126.mp3", pe[0].Filename)
|
||||
require.Equal(t, "InternetBoxEpisode126 (1).mp3", pe[1].Filename)
|
||||
}
|
||||
|
||||
func TestGetMoreRecentEpisodes(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
fp := gofeed.NewParser()
|
||||
newFeed, err := fp.Parse(bytes.NewReader(testRSS))
|
||||
if err != nil {
|
||||
t.Fatalf("parse test data: %v", err)
|
||||
}
|
||||
after, err := time.Parse(time.RFC1123, "Mon, 27 Jun 2016 06:33:43 +0000")
|
||||
if err != nil {
|
||||
t.Fatalf("parse time: %v", err)
|
||||
}
|
||||
entries := getEntriesAfterDate(newFeed.Items, after)
|
||||
if len(entries) != 2 {
|
||||
t.Errorf("expected 2 entries, got %d", len(entries))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user