| 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()));    }}
 |