Browse Source

100% branch coverage for Jellyfin.Naming

Bond_009 4 years ago
parent
commit
956ca0e5aa

+ 4 - 4
Emby.Naming/AudioBook/AudioBookInfo.cs

@@ -15,13 +15,13 @@ namespace Emby.Naming.AudioBook
         /// <param name="files">List of files composing the actual audiobook.</param>
         /// <param name="extras">List of extra files.</param>
         /// <param name="alternateVersions">Alternative version of files.</param>
-        public AudioBookInfo(string name, int? year, List<AudioBookFileInfo>? files, List<AudioBookFileInfo>? extras, List<AudioBookFileInfo>? alternateVersions)
+        public AudioBookInfo(string name, int? year, List<AudioBookFileInfo> files, List<AudioBookFileInfo> extras, List<AudioBookFileInfo> alternateVersions)
         {
             Name = name;
             Year = year;
-            Files = files ?? new List<AudioBookFileInfo>();
-            Extras = extras ?? new List<AudioBookFileInfo>();
-            AlternateVersions = alternateVersions ?? new List<AudioBookFileInfo>();
+            Files = files;
+            Extras = extras;
+            AlternateVersions = alternateVersions;
         }
 
         /// <summary>

+ 6 - 7
Emby.Naming/Video/VideoListResolver.cs

@@ -185,8 +185,8 @@ namespace Emby.Naming.Video
             if (!string.IsNullOrEmpty(folderName)
                 && folderName.Length > 1
                 && videos.All(i => i.Files.Count == 1
-                && IsEligibleForMultiVersion(folderName, i.Files[0].Path))
-                && HaveSameYear(videos))
+                    && IsEligibleForMultiVersion(folderName, i.Files[0].Path))
+                    && HaveSameYear(videos))
             {
                 var ordered = videos.OrderBy(i => i.Name).ToList();
 
@@ -216,10 +216,9 @@ namespace Emby.Naming.Video
             return videos.Select(i => i.Year ?? -1).Distinct().Count() < 2;
         }
 
-        private bool IsEligibleForMultiVersion(string folderName, string? testFilename)
+        private bool IsEligibleForMultiVersion(string folderName, string testFilePath)
         {
-            testFilename = Path.GetFileNameWithoutExtension(testFilename) ?? string.Empty;
-
+            string testFilename = Path.GetFileNameWithoutExtension(testFilePath);
             if (testFilename.StartsWith(folderName, StringComparison.OrdinalIgnoreCase))
             {
                 if (CleanStringParser.TryClean(testFilename, _options.CleanStringRegexes, out var cleanName))
@@ -233,8 +232,8 @@ namespace Emby.Naming.Video
                 }
 
                 return string.IsNullOrEmpty(testFilename)
-                   || testFilename[0].Equals('-')
-                   || testFilename[0].Equals('_')
+                   || testFilename[0] == '-'
+                   || testFilename[0] == '_'
                    || string.IsNullOrWhiteSpace(Regex.Replace(testFilename, @"\[([^]]*)\]", string.Empty));
             }
 

+ 2 - 2
Emby.Naming/Video/VideoResolver.cs

@@ -125,7 +125,7 @@ namespace Emby.Naming.Video
         /// <returns>True if is video file.</returns>
         public bool IsVideoFile(string path)
         {
-            var extension = Path.GetExtension(path) ?? string.Empty;
+            var extension = Path.GetExtension(path);
             return _options.VideoFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase);
         }
 
@@ -136,7 +136,7 @@ namespace Emby.Naming.Video
         /// <returns>True if is video file stub.</returns>
         public bool IsStubFile(string path)
         {
-            var extension = Path.GetExtension(path) ?? string.Empty;
+            var extension = Path.GetExtension(path);
             return _options.StubFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase);
         }
 

+ 17 - 62
tests/Jellyfin.Naming.Tests/Video/MultiVersionTests.cs

@@ -9,9 +9,8 @@ namespace Jellyfin.Naming.Tests.Video
 {
     public class MultiVersionTests
     {
-        private readonly NamingOptions _namingOptions = new NamingOptions();
+        private readonly VideoListResolver _videoListResolver = new VideoListResolver(new NamingOptions());
 
-        // FIXME
         [Fact]
         public void TestMultiEdition1()
         {
@@ -23,9 +22,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/X-Men Days of Future Past/X-Men Days of Future Past [hsbs].mkv"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -35,7 +32,6 @@ namespace Jellyfin.Naming.Tests.Video
             Assert.Single(result[0].Extras);
         }
 
-        // FIXME
         [Fact]
         public void TestMultiEdition2()
         {
@@ -47,9 +43,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/X-Men Days of Future Past/X-Men Days of Future Past [banana].mp4"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -69,9 +63,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/The Phantom of the Opera (1925)/The Phantom of the Opera (1925) - 1929 version.mkv"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -81,7 +73,6 @@ namespace Jellyfin.Naming.Tests.Video
             Assert.Single(result[0].AlternateVersions);
         }
 
-        // FIXME
         [Fact]
         public void TestLetterFolders()
         {
@@ -96,9 +87,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/M/Movie 7.mkv"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -109,7 +98,6 @@ namespace Jellyfin.Naming.Tests.Video
             Assert.Empty(result[0].AlternateVersions);
         }
 
-        // FIXME
         [Fact]
         public void TestMultiVersionLimit()
         {
@@ -125,9 +113,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/Movie/Movie-8.mkv"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -138,7 +124,6 @@ namespace Jellyfin.Naming.Tests.Video
             Assert.Equal(7, result[0].AlternateVersions.Count);
         }
 
-        // FIXME
         [Fact]
         public void TestMultiVersionLimit2()
         {
@@ -155,9 +140,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/Mo/Movie 9.mkv"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -168,7 +151,6 @@ namespace Jellyfin.Naming.Tests.Video
             Assert.Empty(result[0].AlternateVersions);
         }
 
-        // FIXME
         [Fact]
         public void TestMultiVersion3()
         {
@@ -181,9 +163,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/Movie/Movie 5.mkv"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -194,7 +174,6 @@ namespace Jellyfin.Naming.Tests.Video
             Assert.Empty(result[0].AlternateVersions);
         }
 
-        // FIXME
         [Fact]
         public void TestMultiVersion4()
         {
@@ -209,9 +188,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/Iron Man/Iron Man (2011).mkv"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -237,9 +214,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/Iron Man/Iron Man[test].mkv",
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -253,7 +228,6 @@ namespace Jellyfin.Naming.Tests.Video
             Assert.True(result[0].AlternateVersions[4].Is3D);
         }
 
-        // FIXME
         [Fact]
         public void TestMultiVersion6()
         {
@@ -269,9 +243,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/Iron Man/Iron Man [test].mkv"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -294,9 +266,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/Iron Man/Iron Man - C (2007).mkv"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -319,9 +289,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/Iron Man/Iron Man_3d.hsbs.mkv"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -349,9 +317,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/Iron Man/Iron Man (2011).mkv"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -371,9 +337,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/Blade Runner (1982)/Blade Runner (1982) [EE by ADM] [480p HEVC AAC,AAC,AAC].mkv"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -393,9 +357,7 @@ namespace Jellyfin.Naming.Tests.Video
                 @"/movies/X-Men Apocalypse (2016)/X-Men Apocalypse (2016) [2160p] Blu-ray.x265.AAC.mkv"
             };
 
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(files.Select(i => new FileSystemMetadata
+            var result = _videoListResolver.Resolve(files.Select(i => new FileSystemMetadata
             {
                 IsDirectory = false,
                 FullName = i
@@ -409,16 +371,9 @@ namespace Jellyfin.Naming.Tests.Video
         [Fact]
         public void TestEmptyList()
         {
-            var resolver = GetResolver();
-
-            var result = resolver.Resolve(new List<FileSystemMetadata>()).ToList();
+            var result = _videoListResolver.Resolve(new List<FileSystemMetadata>()).ToList();
 
             Assert.Empty(result);
         }
-
-        private VideoListResolver GetResolver()
-        {
-            return new VideoListResolver(_namingOptions);
-        }
     }
 }

+ 4 - 5
tests/Jellyfin.Naming.Tests/Video/VideoResolverTests.cs

@@ -9,7 +9,7 @@ namespace Jellyfin.Naming.Tests.Video
 {
     public class VideoResolverTests
     {
-        private readonly NamingOptions _namingOptions = new NamingOptions();
+        private readonly VideoResolver _videoResolver = new VideoResolver(new NamingOptions());
 
         public static IEnumerable<object[]> GetResolveFileTestData()
         {
@@ -159,7 +159,7 @@ namespace Jellyfin.Naming.Tests.Video
         [MemberData(nameof(GetResolveFileTestData))]
         public void ResolveFile_ValidFileName_Success(VideoFileInfo expectedResult)
         {
-            var result = new VideoResolver(_namingOptions).ResolveFile(expectedResult.Path);
+            var result = _videoResolver.ResolveFile(expectedResult.Path);
 
             Assert.NotNull(result);
             Assert.Equal(result?.Path, expectedResult.Path);
@@ -179,7 +179,7 @@ namespace Jellyfin.Naming.Tests.Video
         [Fact]
         public void ResolveFile_EmptyPath()
         {
-            var result = new VideoResolver(_namingOptions).ResolveFile(string.Empty);
+            var result = _videoResolver.ResolveFile(string.Empty);
 
             Assert.Null(result);
         }
@@ -194,8 +194,7 @@ namespace Jellyfin.Naming.Tests.Video
                 string.Empty
             };
 
-            var resolver = new VideoResolver(_namingOptions);
-            var results = paths.Select(path => resolver.ResolveDirectory(path)).ToList();
+            var results = paths.Select(path => _videoResolver.ResolveDirectory(path)).ToList();
 
             Assert.Equal(3, results.Count);
             Assert.NotNull(results[0]);