瀏覽代碼

Add nfo location tests

David 4 年之前
父節點
當前提交
7f12b27319

+ 2 - 0
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

+ 65 - 0
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);
+        }
+    }
+}

+ 1 - 0
tests/Jellyfin.XbmcMetadata.Tests/Test Data/Imdb.nfo

@@ -0,0 +1 @@
+https://www.imdb.com/title/tt0944947/

+ 1 - 0
tests/Jellyfin.XbmcMetadata.Tests/Test Data/Tmdb.nfo

@@ -0,0 +1 @@
+https://www.themoviedb.org/movie/30287-fallo

+ 1 - 0
tests/Jellyfin.XbmcMetadata.Tests/Test Data/Tvdb.nfo

@@ -0,0 +1 @@
+https://www.thetvdb.com/?tab=series&id=121361