123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- using System;
- using System.IO;
- using Emby.Naming.Common;
- using Emby.Naming.Video;
- using Emby.Server.Implementations.Library;
- using MediaBrowser.Controller;
- using MediaBrowser.Controller.Entities;
- using MediaBrowser.Model.Entities;
- using MediaBrowser.Model.IO;
- using Moq;
- using Xunit;
- namespace Jellyfin.Server.Implementations.Tests.Library;
- public class CoreResolutionIgnoreRuleTest
- {
- private readonly CoreResolutionIgnoreRule _rule;
- private readonly NamingOptions _namingOptions;
- private readonly Mock<IServerApplicationPaths> _appPathsMock;
- public CoreResolutionIgnoreRuleTest()
- {
- _namingOptions = new NamingOptions();
- _namingOptions.AllExtrasTypesFolderNames.TryAdd("extras", ExtraType.Trailer);
- _appPathsMock = new Mock<IServerApplicationPaths>();
- _appPathsMock.SetupGet(x => x.RootFolderPath).Returns("/server/root");
- _rule = new CoreResolutionIgnoreRule(_namingOptions, _appPathsMock.Object);
- }
- private FileSystemMetadata MakeFileSystemMetadata(string fullName, bool isDirectory = false)
- => new FileSystemMetadata { FullName = fullName, Name = Path.GetFileName(fullName), IsDirectory = isDirectory };
- private BaseItem MakeParent(string name = "Parent", bool isTopParent = false, Type? type = null)
- {
- return type switch
- {
- Type t when t == typeof(Folder) => CreateMock<Folder>(name, isTopParent).Object,
- Type t when t == typeof(AggregateFolder) => CreateMock<AggregateFolder>(name, isTopParent).Object,
- Type t when t == typeof(UserRootFolder) => CreateMock<UserRootFolder>(name, isTopParent).Object,
- _ => CreateMock<BaseItem>(name, isTopParent).Object
- };
- }
- private static Mock<T> CreateMock<T>(string name, bool isTopParent)
- where T : BaseItem
- {
- var mock = new Mock<T>();
- mock.SetupGet(p => p.Name).Returns(name);
- mock.SetupGet(p => p.IsTopParent).Returns(isTopParent);
- return mock;
- }
- [Fact]
- public void TestApplicationFolder()
- {
- Assert.False(_rule.ShouldIgnore(
- MakeFileSystemMetadata("/server/root/extras", isDirectory: true),
- null));
- Assert.False(_rule.ShouldIgnore(
- MakeFileSystemMetadata("/server/root/small.jpg"),
- null));
- }
- [Fact]
- public void TestTopLevelDirectory()
- {
- Assert.False(_rule.ShouldIgnore(
- MakeFileSystemMetadata("Series/Extras", true),
- MakeParent(type: typeof(AggregateFolder))));
- Assert.False(_rule.ShouldIgnore(
- MakeFileSystemMetadata("Series/Extras/Extras", true),
- MakeParent(isTopParent: true)));
- }
- [Fact]
- public void TestIgnorePatterns()
- {
- Assert.False(_rule.ShouldIgnore(
- MakeFileSystemMetadata("/Media/big.jpg"),
- MakeParent()));
- Assert.True(_rule.ShouldIgnore(
- MakeFileSystemMetadata("/Media/small.jpg"),
- MakeParent()));
- }
- [Fact]
- public void TestExtrasTypesFolderNames()
- {
- FileSystemMetadata fileSystemMetadata = MakeFileSystemMetadata("/Movies/Up/extras", true);
- Assert.False(_rule.ShouldIgnore(
- fileSystemMetadata,
- MakeParent(type: typeof(AggregateFolder))));
- Assert.False(_rule.ShouldIgnore(
- fileSystemMetadata,
- MakeParent(type: typeof(UserRootFolder))));
- Assert.False(_rule.ShouldIgnore(
- fileSystemMetadata,
- null));
- Assert.True(_rule.ShouldIgnore(
- fileSystemMetadata,
- MakeParent()));
- Assert.True(_rule.ShouldIgnore(
- fileSystemMetadata,
- MakeParent(type: typeof(Folder))));
- }
- [Fact]
- public void TestThemeSong()
- {
- Assert.False(_rule.ShouldIgnore(
- MakeFileSystemMetadata("/Movies/Up/intro.mp3"),
- MakeParent()));
- Assert.True(_rule.ShouldIgnore(
- MakeFileSystemMetadata("/Movies/Up/theme.mp3"),
- MakeParent()));
- }
- }
|