1
0
mirror of https://github.com/mxpv/podsync.git synced 2024-05-11 05:55:04 +00:00
Files
mxpv-podsync/web/pkg/builders/youtube_test.go
2017-08-04 13:35:49 -07:00

95 lines
2.5 KiB
Go

package builders
import (
"testing"
"github.com/mxpv/podsync/web/pkg/database"
"github.com/stretchr/testify/require"
)
var ytKey = "AIzaSyAp0mB03BFY3fm0Oxaxk96-mnE0D3MeUp4"
func TestParsePlaylist(t *testing.T) {
builder := &YouTubeBuilder{}
kind, id, err := builder.parseUrl("https://www.youtube.com/playlist?list=PLCB9F975ECF01953C")
require.NoError(t, err)
require.Equal(t, linkTypePlaylist, kind)
require.Equal(t, "PLCB9F975ECF01953C", id)
}
func TestParseChannel(t *testing.T) {
builder := &YouTubeBuilder{}
kind, id, err := builder.parseUrl("https://www.youtube.com/channel/UC5XPnUk8Vvv_pWslhwom6Og")
require.NoError(t, err)
require.Equal(t, linkTypeChannel, kind)
require.Equal(t, "UC5XPnUk8Vvv_pWslhwom6Og", id)
kind, id, err = builder.parseUrl("https://www.youtube.com/channel/UCrlakW-ewUT8sOod6Wmzyow/videos")
require.NoError(t, err)
require.Equal(t, linkTypeChannel, kind)
require.Equal(t, "UCrlakW-ewUT8sOod6Wmzyow", id)
}
func TestParseUser(t *testing.T) {
builder := &YouTubeBuilder{}
kind, id, err := builder.parseUrl("https://youtube.com/user/fxigr1")
require.NoError(t, err)
require.Equal(t, linkTypeUser, kind)
require.Equal(t, "fxigr1", id)
}
func TestHandleInvalidLink(t *testing.T) {
builder := &YouTubeBuilder{}
_, _, err := builder.parseUrl("https://www.youtube.com/user///")
require.Error(t, err)
_, _, err = builder.parseUrl("https://www.youtube.com/channel//videos")
require.Error(t, err)
}
func TestQueryChannel(t *testing.T) {
if testing.Short() {
t.Skip("skipping YT test in short mode")
}
builder, err := NewYouTubeBuilder(ytKey)
require.NoError(t, err)
channel, err := builder.listChannels(linkTypeChannel, "UC2yTVSttx7lxAOAzx1opjoA")
require.NoError(t, err)
require.Equal(t, "UC2yTVSttx7lxAOAzx1opjoA", channel.Id)
channel, err = builder.listChannels(linkTypeUser, "fxigr1")
require.NoError(t, err)
require.Equal(t, "UCr_fwF-n-2_olTYd-m3n32g", channel.Id)
}
func TestBuild(t *testing.T) {
if testing.Short() {
t.Skip("skipping YT test in short mode")
}
builder, err := NewYouTubeBuilder(ytKey)
require.NoError(t, err)
podcast, err := builder.Build(&database.Feed{
URL: "https://youtube.com/channel/UCupvZG-5ko_eiXAupbDfxWw",
PageSize: maxResults,
})
require.NoError(t, err)
require.Equal(t, "CNN", podcast.Title)
require.NotEmpty(t, podcast.Description)
require.Equal(t, 50, len(podcast.Items))
for _, item := range podcast.Items {
require.NotEmpty(t, item.Title)
require.NotEmpty(t, item.Link)
}
}