aboutsummaryrefslogtreecommitdiff
path: root/tests/Jellyfin.Server.Implementations.Tests/Library/MovieResolverTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Jellyfin.Server.Implementations.Tests/Library/MovieResolverTests.cs')
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Library/MovieResolverTests.cs89
1 files changed, 89 insertions, 0 deletions
diff --git a/tests/Jellyfin.Server.Implementations.Tests/Library/MovieResolverTests.cs b/tests/Jellyfin.Server.Implementations.Tests/Library/MovieResolverTests.cs
index e1346a8436..3aac3cdc43 100644
--- a/tests/Jellyfin.Server.Implementations.Tests/Library/MovieResolverTests.cs
+++ b/tests/Jellyfin.Server.Implementations.Tests/Library/MovieResolverTests.cs
@@ -10,6 +10,7 @@ using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.IO;
using Microsoft.Extensions.Logging;
using Moq;
@@ -89,4 +90,92 @@ public class MovieResolverTests
Assert.All(result.Items, item => Assert.IsType<Movie>(item));
Assert.Single(((Video)result.Items[0]).LocalAlternateVersions);
}
+
+ [Fact]
+ public void AllExtrasTypesFolderNames_ContainsSampleSingularAndPlural()
+ {
+ Assert.True(_namingOptions.AllExtrasTypesFolderNames.ContainsKey("sample"));
+ Assert.True(_namingOptions.AllExtrasTypesFolderNames.ContainsKey("Sample"));
+ Assert.True(_namingOptions.AllExtrasTypesFolderNames.ContainsKey("samples"));
+ }
+
+ [Theory]
+ [InlineData("Sample")]
+ [InlineData("sample")]
+ [InlineData("SAMPLE")]
+ [InlineData("samples")]
+ public void ResolvePath_MovieFolderWithSampleSubfolder_ResolvesToMovie(string sampleDirName)
+ {
+ var libraryManager = new Mock<ILibraryManager>();
+ libraryManager.Setup(m => m.GetLibraryOptions(It.IsAny<BaseItem>())).Returns(new LibraryOptions());
+ libraryManager.Setup(m => m.IgnoreFile(It.IsAny<FileSystemMetadata>(), It.IsAny<BaseItem>())).Returns(false);
+
+ var resolver = new MovieResolver(Mock.Of<IImageProcessor>(), Mock.Of<ILogger<MovieResolver>>(), _namingOptions, Mock.Of<IDirectoryService>(), _videoListResolver);
+ var args = new ItemResolveArgs(
+ Mock.Of<IServerApplicationPaths>(),
+ libraryManager.Object)
+ {
+ Parent = new Folder(),
+ CollectionType = CollectionType.movies,
+ FileInfo = new FileSystemMetadata
+ {
+ FullName = "/media/Outer Colony (2026)",
+ IsDirectory = true
+ },
+ FileSystemChildren = new[]
+ {
+ new FileSystemMetadata
+ {
+ FullName = "/media/Outer Colony (2026)/Outer Colony (2026).mkv",
+ Name = "Outer Colony (2026).mkv"
+ },
+ new FileSystemMetadata
+ {
+ FullName = "/media/Outer Colony (2026)/" + sampleDirName,
+ Name = sampleDirName,
+ IsDirectory = true
+ }
+ }
+ };
+
+ Assert.IsType<Movie>(resolver.ResolvePath(args));
+ }
+
+ [Fact]
+ public void ResolvePath_MovieFolderWithRealSubfolder_DoesNotResolveToSingleMovie()
+ {
+ var libraryManager = new Mock<ILibraryManager>();
+ libraryManager.Setup(m => m.GetLibraryOptions(It.IsAny<BaseItem>())).Returns(new LibraryOptions());
+ libraryManager.Setup(m => m.IgnoreFile(It.IsAny<FileSystemMetadata>(), It.IsAny<BaseItem>())).Returns(false);
+
+ var resolver = new MovieResolver(Mock.Of<IImageProcessor>(), Mock.Of<ILogger<MovieResolver>>(), _namingOptions, Mock.Of<IDirectoryService>(), _videoListResolver);
+ var args = new ItemResolveArgs(
+ Mock.Of<IServerApplicationPaths>(),
+ libraryManager.Object)
+ {
+ Parent = new Folder(),
+ CollectionType = CollectionType.movies,
+ FileInfo = new FileSystemMetadata
+ {
+ FullName = "/media/Outer Colony (2026)",
+ IsDirectory = true
+ },
+ FileSystemChildren = new[]
+ {
+ new FileSystemMetadata
+ {
+ FullName = "/media/Outer Colony (2026)/Outer Colony (2026).mkv",
+ Name = "Outer Colony (2026).mkv"
+ },
+ new FileSystemMetadata
+ {
+ FullName = "/media/Outer Colony (2026)/Feature",
+ Name = "Feature",
+ IsDirectory = true
+ }
+ }
+ };
+
+ Assert.Null(resolver.ResolvePath(args));
+ }
}