From ccea02fbb2a946e600c1feb53ab50cc6e5fd45f2 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 20 Jan 2021 20:02:03 +0100 Subject: [PATCH] Add season nfo parser test --- .../Parsers/SeasonNfoProviderTests.cs | 83 ++++++++++++++++++ .../Test Data/Season 01.nfo | 86 +++++++++++++++++++ 2 files changed, 169 insertions(+) create mode 100644 tests/Jellyfin.XbmcMetadata.Tests/Parsers/SeasonNfoProviderTests.cs create mode 100644 tests/Jellyfin.XbmcMetadata.Tests/Test Data/Season 01.nfo diff --git a/tests/Jellyfin.XbmcMetadata.Tests/Parsers/SeasonNfoProviderTests.cs b/tests/Jellyfin.XbmcMetadata.Tests/Parsers/SeasonNfoProviderTests.cs new file mode 100644 index 0000000000..68b7239d22 --- /dev/null +++ b/tests/Jellyfin.XbmcMetadata.Tests/Parsers/SeasonNfoProviderTests.cs @@ -0,0 +1,83 @@ +#pragma warning disable CA5369 + +using System; +using System.Linq; +using System.Threading; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Providers; +using MediaBrowser.XbmcMetadata.Parsers; +using Microsoft.Extensions.Logging.Abstractions; +using Moq; +using Xunit; + +namespace Jellyfin.XbmcMetadata.Tests.Parsers +{ + public class SeasonNfoProviderTests + { + private readonly SeasonNfoParser _parser; + + public SeasonNfoProviderTests() + { + var providerManager = new Mock(); + providerManager.Setup(x => x.GetExternalIdInfos(It.IsAny())) + .Returns(Enumerable.Empty()); + var config = new Mock(); + config.Setup(x => x.GetConfiguration(It.IsAny())) + .Returns(new XbmcMetadataOptions()); + _parser = new SeasonNfoParser(new NullLogger(), config.Object, providerManager.Object); + } + + [Fact] + public void Fetch_Valid_Succes() + { + var result = new MetadataResult() + { + Item = new Season() + }; + + _parser.Fetch(result, "Test Data/Season 01.nfo", CancellationToken.None); + var item = result.Item; + + Assert.Equal("Season 1", item.Name); + Assert.Equal(1, item.IndexNumber); + Assert.False(item.IsLocked); + Assert.Equal(2019, item.ProductionYear); + Assert.Equal(new DateTime(2019, 11, 08), item.PremiereDate); + Assert.Equal(new DateTime(2020, 06, 14, 17, 26, 51), item.DateCreated); + + Assert.Equal(10, result.People.Count); + + Assert.True(result.People.All(x => x.Type == PersonType.Actor)); + + // Only test one actor + var nini = result.People.FirstOrDefault(x => x.Role.Equals("Nini", StringComparison.Ordinal)); + Assert.NotNull(nini); + Assert.Equal("Olivia Rodrigo", nini!.Name); + Assert.Equal(0, nini!.SortOrder); + Assert.Equal("/config/metadata/People/O/Olivia Rodrigo/poster.jpg", nini!.ImageUrl); + } + + [Fact] + public void Fetch_WithNullItem_ThrowsArgumentException() + { + var result = new MetadataResult(); + + Assert.Throws(() => _parser.Fetch(result, "Test Data/Season 01.nfo", CancellationToken.None)); + } + + [Fact] + public void Fetch_NullResult_ThrowsArgumentException() + { + var result = new MetadataResult() + { + Item = new Season() + }; + + Assert.Throws(() => _parser.Fetch(result, string.Empty, CancellationToken.None)); + } + } +} diff --git a/tests/Jellyfin.XbmcMetadata.Tests/Test Data/Season 01.nfo b/tests/Jellyfin.XbmcMetadata.Tests/Test Data/Season 01.nfo new file mode 100644 index 0000000000..91f0392f4d --- /dev/null +++ b/tests/Jellyfin.XbmcMetadata.Tests/Test Data/Season 01.nfo @@ -0,0 +1,86 @@ + + + + + false + 2020-06-14 17:26:51 + Season 1 + 2019 + 359728 + 2019-11-08 + 2019-11-08 + + /media/Serien/High School Musical The Musical The Series (2019)/Season 1/Season 1.jpeg + + + Olivia Rodrigo + Nini + Actor + 0 + /config/metadata/People/O/Olivia Rodrigo/poster.jpg + + + Kate Reinders + Miss Jenn + Actor + 1 + /config/metadata/People/K/Kate Reinders/poster.jpg + + + Sofia Wylie + Gina + Actor + 2 + /config/metadata/People/S/Sofia Wylie/poster.jpg + + + Matt Cornett + E.J. + Actor + 3 + /config/metadata/People/M/Matt Cornett/poster.jpg + + + Dara Reneé + Kourtney + Actor + 4 + /config/metadata/People/D/Dara Reneé/poster.jpg + + + Julia Lester + Ashlyn + Actor + 5 + /config/metadata/People/J/Julia Lester/poster.jpg + + + Joshua Bassett + Ricky + Actor + 6 + /config/metadata/People/J/Joshua Bassett/poster.jpg + + + Frankie A. Rodriguez + Carlos + Actor + 7 + /config/metadata/People/F/Frankie A. Rodriguez/poster.jpg + + + Larry Saperstein + Big Red + Actor + 8 + /config/metadata/People/L/Larry Saperstein/poster.jpg + + + Mark St. Cyr + Mr. Mazzara + Actor + 9 + /config/metadata/People/M/Mark St. Cyr/poster.jpg + + 1 +