diff --git a/MediaBrowser.XbmcMetadata/Properties/AssemblyInfo.cs b/MediaBrowser.XbmcMetadata/Properties/AssemblyInfo.cs index b3e2f2717..cfe06b940 100644 --- a/MediaBrowser.XbmcMetadata/Properties/AssemblyInfo.cs +++ b/MediaBrowser.XbmcMetadata/Properties/AssemblyInfo.cs @@ -1,5 +1,6 @@ using System.Reflection; using System.Resources; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following @@ -14,6 +15,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: NeutralResourcesLanguage("en")] +[assembly: InternalsVisibleTo("Jellyfin.XbmcMetadata.Tests")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from diff --git a/tests/Jellyfin.XbmcMetadata.Tests/Location/MovieNfoLocationTests.cs b/tests/Jellyfin.XbmcMetadata.Tests/Location/MovieNfoLocationTests.cs new file mode 100644 index 000000000..357d61c0b --- /dev/null +++ b/tests/Jellyfin.XbmcMetadata.Tests/Location/MovieNfoLocationTests.cs @@ -0,0 +1,65 @@ +using System.Linq; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.System; +using MediaBrowser.XbmcMetadata.Savers; +using Xunit; + +namespace Jellyfin.XbmcMetadata.Tests.Location +{ + public class MovieNfoLocationTests + { + [Fact] + public static void Movie_MixedFolder_Success() + { + var movie = new Movie() { Path = "/media/movies/Avengers Endgame.mp4", IsInMixedFolder = true }; + + var paths = MovieNfoSaver.GetMovieSavePaths(new ItemInfo(movie)).ToArray(); + Assert.Single(paths); + Assert.Contains("/media/movies/Avengers Endgame.nfo", paths); + } + + [Fact] + public static void Movie_SeparateFolder_Success() + { + var movie = new Movie() { Path = "/media/movies/Avengers Endgame/Avengers Endgame.mp4" }; + var path1 = "/media/movies/Avengers Endgame/Avengers Endgame.nfo"; + var path2 = "/media/movies/Avengers Endgame/movie.nfo"; + + // uses ContainingFolderPath which uses Operating system specific paths + if (MediaBrowser.Common.System.OperatingSystem.Id == OperatingSystemId.Windows) + { + movie.Path = movie.Path.Replace('/', '\\'); + path1 = path1.Replace('/', '\\'); + path2 = path2.Replace('/', '\\'); + } + + var paths = MovieNfoSaver.GetMovieSavePaths(new ItemInfo(movie)).ToArray(); + Assert.Equal(2, paths.Length); + Assert.Contains(path1, paths); + Assert.Contains(path2, paths); + } + + [Fact] + public void Movie_DVD_Success() + { + var movie = new Movie() { Path = "/media/movies/Avengers Endgame", VideoType = VideoType.Dvd }; + var path1 = "/media/movies/Avengers Endgame/Avengers Endgame.nfo"; + var path2 = "/media/movies/Avengers Endgame/VIDEO_TS/VIDEO_TS.nfo"; + + // uses ContainingFolderPath which uses Operating system specific paths + if (MediaBrowser.Common.System.OperatingSystem.Id == OperatingSystemId.Windows) + { + movie.Path = movie.Path.Replace('/', '\\'); + path1 = path1.Replace('/', '\\'); + path2 = path2.Replace('/', '\\'); + } + + var paths = MovieNfoSaver.GetMovieSavePaths(new ItemInfo(movie)).ToArray(); + Assert.Equal(2, paths.Length); + Assert.Contains(path1, paths); + Assert.Contains(path2, paths); + } + } +} diff --git a/tests/Jellyfin.XbmcMetadata.Tests/Parsers/EpisodeNfoProviderTests.cs b/tests/Jellyfin.XbmcMetadata.Tests/Parsers/EpisodeNfoProviderTests.cs index 151bb045d..d10ef9b47 100644 --- a/tests/Jellyfin.XbmcMetadata.Tests/Parsers/EpisodeNfoProviderTests.cs +++ b/tests/Jellyfin.XbmcMetadata.Tests/Parsers/EpisodeNfoProviderTests.cs @@ -66,6 +66,10 @@ namespace Jellyfin.XbmcMetadata.Tests.Parsers Assert.Equal(2017, item.ProductionYear); Assert.Single(item.Studios); Assert.Contains("Starz", item.Studios); + Assert.Equal(1, item.IndexNumberEnd); + Assert.Equal(2, item.AirsAfterSeasonNumber); + Assert.Equal(3, item.AirsBeforeSeasonNumber); + Assert.Equal(1, item.AirsBeforeEpisodeNumber); Assert.Equal("tt5017734", item.ProviderIds[MetadataProvider.Imdb.ToString()]); Assert.Equal("1276153", item.ProviderIds[MetadataProvider.Tmdb.ToString()]); diff --git a/tests/Jellyfin.XbmcMetadata.Tests/Parsers/MovieNfoParserTests.cs b/tests/Jellyfin.XbmcMetadata.Tests/Parsers/MovieNfoParserTests.cs index 9d7210944..76231391e 100644 --- a/tests/Jellyfin.XbmcMetadata.Tests/Parsers/MovieNfoParserTests.cs +++ b/tests/Jellyfin.XbmcMetadata.Tests/Parsers/MovieNfoParserTests.cs @@ -4,6 +4,7 @@ using System.Threading; using Jellyfin.Data.Entities; using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; @@ -60,11 +61,11 @@ namespace Jellyfin.XbmcMetadata.Tests.Parsers { var result = new MetadataResult