mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-12-17 22:43:07 +03:00
Enhance extra rules for video and audio file naming; update tests for new naming conventions
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
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()));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user