jellyfin-server/tests/Jellyfin.Naming.Tests/Video/VideoResolverTests.cs

209 lines
7.3 KiB
C#
Raw Normal View History

2020-11-05 15:59:15 +00:00
using System.Collections.Generic;
using System.Linq;
2020-04-21 10:11:55 +00:00
using Emby.Naming.Common;
using Emby.Naming.Video;
using MediaBrowser.Model.Entities;
2019-12-06 19:40:06 +00:00
using Xunit;
namespace Jellyfin.Naming.Tests.Video
{
2020-04-25 16:55:54 +00:00
public class VideoResolverTests
2019-12-06 19:40:06 +00:00
{
2020-04-21 10:11:55 +00:00
private readonly NamingOptions _namingOptions = new NamingOptions();
2020-04-25 13:29:59 +00:00
public static IEnumerable<object[]> GetResolveFileTestData()
2020-04-21 10:11:55 +00:00
{
2020-04-25 13:29:59 +00:00
yield return new object[]
2020-04-21 10:11:55 +00:00
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/7 Psychos.mkv/7 Psychos.mkv",
container: "mkv",
name: "7 Psychos")
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/3 days to kill (2005)/3 days to kill (2005).mkv",
container: "mkv",
name: "3 days to kill",
year: 2005)
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/American Psycho/American.Psycho.mkv",
container: "mkv",
name: "American.Psycho")
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/brave (2007)/brave (2006).3d.sbs.mkv",
container: "mkv",
name: "brave",
year: 2006,
is3D: true,
format3D: "sbs")
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/300 (2007)/300 (2006).3d1.sbas.mkv",
container: "mkv",
name: "300",
year: 2006)
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/300 (2007)/300 (2006).3d.sbs.mkv",
container: "mkv",
name: "300",
year: 2006,
is3D: true,
format3D: "sbs")
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/brave (2007)/brave (2006)-trailer.bluray.disc",
container: "disc",
name: "brave",
year: 2006,
isStub: true,
stubType: "bluray")
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/300 (2007)/300 (2006)-trailer.bluray.disc",
container: "disc",
name: "300",
year: 2006,
isStub: true,
stubType: "bluray")
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/Brave (2007)/Brave (2006).bluray.disc",
container: "disc",
name: "Brave",
year: 2006,
isStub: true,
stubType: "bluray")
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/300 (2007)/300 (2006).bluray.disc",
container: "disc",
name: "300",
year: 2006,
isStub: true,
stubType: "bluray")
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/300 (2007)/300 (2006)-trailer.mkv",
container: "mkv",
name: "300",
year: 2006,
extraType: ExtraType.Trailer)
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/Brave (2007)/Brave (2006)-trailer.mkv",
container: "mkv",
name: "Brave",
year: 2006,
extraType: ExtraType.Trailer)
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/300 (2007)/300 (2006).mkv",
container: "mkv",
name: "300",
year: 2006)
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/Bad Boys (1995)/Bad Boys (1995).mkv",
container: "mkv",
name: "Bad Boys",
year: 1995)
2020-04-25 13:29:59 +00:00
};
yield return new object[]
{
2020-11-05 15:59:15 +00:00
new VideoFileInfo(
path: @"/server/Movies/Brave (2007)/Brave (2006).mkv",
container: "mkv",
name: "Brave",
year: 2006)
2020-04-25 13:29:59 +00:00
};
2020-05-04 03:44:18 +00:00
yield return new object[]
{
new VideoFileInfo()
{
Path = @"/server/Movies/Rain Man 1988 REMASTERED 1080p BluRay x264 AAC - Ozlem/Rain Man 1988 REMASTERED 1080p BluRay x264 AAC - Ozlem.mp4",
Container = "mp4",
Name = "Rain Man",
Year = 1988,
}
};
2020-04-21 10:11:55 +00:00
}
[Theory]
2020-04-25 13:29:59 +00:00
[MemberData(nameof(GetResolveFileTestData))]
2020-04-21 10:54:04 +00:00
public void ResolveFile_ValidFileName_Success(VideoFileInfo expectedResult)
2020-04-21 10:11:55 +00:00
{
var result = new VideoResolver(_namingOptions).ResolveFile(expectedResult.Path);
2020-04-21 10:54:04 +00:00
Assert.NotNull(result);
Assert.Equal(result?.Path, expectedResult.Path);
Assert.Equal(result?.Container, expectedResult.Container);
Assert.Equal(result?.Name, expectedResult.Name);
Assert.Equal(result?.Year, expectedResult.Year);
Assert.Equal(result?.ExtraType, expectedResult.ExtraType);
Assert.Equal(result?.Format3D, expectedResult.Format3D);
Assert.Equal(result?.Is3D, expectedResult.Is3D);
Assert.Equal(result?.IsStub, expectedResult.IsStub);
Assert.Equal(result?.StubType, expectedResult.StubType);
Assert.Equal(result?.IsDirectory, expectedResult.IsDirectory);
Assert.Equal(result?.FileNameWithoutExtension, expectedResult.FileNameWithoutExtension);
2020-11-05 15:59:15 +00:00
Assert.Equal(result?.ToString(), expectedResult.ToString());
}
[Fact]
public void ResolveFile_EmptyPath()
{
var result = new VideoResolver(_namingOptions).ResolveFile(string.Empty);
Assert.Null(result);
}
[Fact]
public void ResolveDirectoryTest()
{
var paths = new[]
{
@"/Server/Iron Man",
@"Batman",
string.Empty
};
var resolver = new VideoResolver(_namingOptions);
var results = paths.Select(path => resolver.ResolveDirectory(path)).ToList();
Assert.Equal(3, results.Count);
Assert.NotNull(results[0]);
Assert.NotNull(results[1]);
Assert.Null(results[2]);
2019-12-06 19:40:06 +00:00
}
}
}