From 7e3f6763da517d5a345b955b2f2829e6bad26bea Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Sat, 24 Jul 2021 20:36:55 +0200 Subject: [PATCH] Testing the provider composite --- Kyoo.Tests/Identifier/ProviderTests.cs | 115 +++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 Kyoo.Tests/Identifier/ProviderTests.cs diff --git a/Kyoo.Tests/Identifier/ProviderTests.cs b/Kyoo.Tests/Identifier/ProviderTests.cs new file mode 100644 index 00000000..27ff0042 --- /dev/null +++ b/Kyoo.Tests/Identifier/ProviderTests.cs @@ -0,0 +1,115 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Kyoo.Controllers; +using Kyoo.Models; +using Microsoft.Extensions.Logging; +using Moq; +using Xunit; +using Xunit.Abstractions; + +namespace Kyoo.Tests.Identifier +{ + public class ProviderTests + { + private readonly ILoggerFactory _factory; + + public ProviderTests(ITestOutputHelper output) + { + _factory = LoggerFactory.Create(x => + { + x.ClearProviders(); + x.AddXunit(output); + }); + } + + [Fact] + public async Task NoProviderGetTest() + { + AProviderComposite provider = new ProviderComposite(Array.Empty(), + _factory.CreateLogger()); + Show show = new() + { + ID = 4, + Genres = new[] { new Genre("genre") } + }; + Show ret = await provider.Get(show); + KAssert.DeepEqual(show, ret); + } + + [Fact] + public async Task NoProviderSearchTest() + { + AProviderComposite provider = new ProviderComposite(Array.Empty(), + _factory.CreateLogger()); + ICollection ret = await provider.Search("show"); + Assert.Empty(ret); + } + + [Fact] + public async Task OneProviderGetTest() + { + Show show = new() + { + ID = 4, + Genres = new[] { new Genre("genre") } + }; + Mock mock = new(); + mock.Setup(x => x.Get(show)).ReturnsAsync(new Show + { + Title = "title", + Genres = new[] { new Genre("ToMerge")} + }); + AProviderComposite provider = new ProviderComposite(new [] + { + mock.Object + }, + _factory.CreateLogger()); + + Show ret = await provider.Get(show); + Assert.Equal(4, ret.ID); + Assert.Equal("title", ret.Title); + Assert.Equal(2, ret.Genres.Count); + Assert.Contains("genre", ret.Genres.Select(x => x.Slug)); + Assert.Contains("tomerge", ret.Genres.Select(x => x.Slug)); + } + + [Fact] + public async Task TwoProviderGetTest() + { + Show show = new() + { + ID = 4, + Genres = new[] { new Genre("genre") } + }; + Mock mock = new(); + mock.Setup(x => x.Get(show)).ReturnsAsync(new Show + { + Title = "title", + Genres = new[] { new Genre("ToMerge")} + }); + Mock mockTwo = new(); + mockTwo.Setup(x => x.Get(show)).ReturnsAsync(new Show + { + Title = "title2", + Status = Status.Finished, + Genres = new[] { new Genre("ToMerge")} + }); + AProviderComposite provider = new ProviderComposite(new [] + { + mock.Object, + mockTwo.Object + }, + _factory.CreateLogger()); + + Show ret = await provider.Get(show); + Assert.Equal(4, ret.ID); + Assert.Equal("title", ret.Title); + Assert.Equal(Status.Finished, ret.Status); + Assert.Equal(2, ret.Genres.Count); + Assert.Contains("genre", ret.Genres.Select(x => x.Slug)); + Assert.Contains("tomerge", ret.Genres.Select(x => x.Slug)); + } + } +} \ No newline at end of file