1
0
mirror of https://github.com/mxpv/podsync.git synced 2024-05-11 05:55:04 +00:00
mxpv-podsync/test/Podsync.Tests/Services/Builder/YouTubeRssBuilderTests.cs
2016-12-27 11:35:34 -08:00

69 lines
2.2 KiB
C#

using System;
using System.Linq;
using System.Threading.Tasks;
using Moq;
using Podsync.Services.Builder;
using Podsync.Services.Links;
using Podsync.Services.Storage;
using Podsync.Services.Videos.YouTube;
using Xunit;
namespace Podsync.Tests.Services.Builder
{
public class YouTubeRssBuilderTests : TestBase
{
private readonly Mock<IStorageService> _storageService = new Mock<IStorageService>();
private readonly YouTubeRssBuilder _builder;
public YouTubeRssBuilderTests()
{
var linkService = new LinkService();
var client = new YouTubeClient(linkService, Options);
_builder = new YouTubeRssBuilder(linkService, client, _storageService.Object);
}
[Theory]
[InlineData(LinkType.Channel, "UC0JB7TSe49lg56u6qH8y_MQ")]
[InlineData(LinkType.User, "fxigr1")]
[InlineData(LinkType.Playlist, "PL2e4mYbwSTbbiX2uwspn0xiYb8_P_cTAr")]
public async Task BuildRssTest(LinkType linkType, string id)
{
var feed = new FeedMetadata
{
Provider = Provider.YouTube,
LinkType = linkType,
Id = id
};
var feedId = DateTime.UtcNow.Ticks.ToString();
_storageService.Setup(x => x.Load(feedId)).ReturnsAsync(feed);
var rss = await _builder.Query(new Uri("http://localhost:2020"), feedId);
Assert.NotEmpty(rss.Channels);
var channel = rss.Channels.Single();
Assert.NotNull(channel.Title);
Assert.NotNull(channel.Description);
Assert.NotNull(channel.Image);
Assert.NotNull(channel.Guid);
Assert.NotEmpty(channel.Items);
foreach (var item in channel.Items)
{
Assert.NotNull(item.Title);
Assert.NotNull(item.Link);
Assert.True(item.Duration.TotalSeconds > 0);
Assert.NotNull(item.Content);
Assert.True(item.Content.Length > 0);
Assert.NotNull(item.Content.MediaType);
Assert.NotNull(item.Content.Url);
Assert.NotNull(item.PubDate);
}
}
}
}