mirror of https://github.com/ErsatzTV/ErsatzTV.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
4.4 KiB
122 lines
4.4 KiB
using Bugsnag; |
|
using ErsatzTV.Core.Domain; |
|
using ErsatzTV.Core.Metadata; |
|
using FluentAssertions; |
|
using Moq; |
|
using NUnit.Framework; |
|
|
|
namespace ErsatzTV.Core.Tests.Metadata; |
|
|
|
[TestFixture] |
|
public class FallbackMetadataProviderTests |
|
{ |
|
[SetUp] |
|
public void SetUp() => _fallbackMetadataProvider = new FallbackMetadataProvider(new Mock<IClient>().Object); |
|
|
|
private FallbackMetadataProvider _fallbackMetadataProvider; |
|
|
|
[Test] |
|
[TestCase("Awesome Show - s01e02.mkv", 1, 2)] |
|
[TestCase("Awesome Show - S01E02.mkv", 1, 2)] |
|
[TestCase("Awesome Show - s1e2.mkv", 1, 2)] |
|
[TestCase("Awesome Show - S1E2.mkv", 1, 2)] |
|
[TestCase("Awesome Show - s01e02 - Episode Title.mkv", 1, 2)] |
|
[TestCase("Awesome Show - S01E02 - Episode Title.mkv", 1, 2)] |
|
[TestCase("Awesome Show - s1e2 - Episode Title.mkv", 1, 2)] |
|
[TestCase("Awesome Show - S1E2 - Episode Title.mkv", 1, 2)] |
|
[TestCase("Awesome Show (2021) - s01e02 - Episode Title.mkv", 1, 2)] |
|
[TestCase("Awesome Show (2021) - S01E02 - Episode Title.mkv", 1, 2)] |
|
[TestCase("Awesome Show (2021) - s1e2 - Episode Title.mkv", 1, 2)] |
|
[TestCase("Awesome Show (2021) - S1E2 - Episode Title.mkv", 1, 2)] |
|
[TestCase("Awesome Show - s01e02 - Episode Title-720p.mkv", 1, 2)] |
|
[TestCase("Awesome Show - S01E02 - Episode Title-720p.mkv", 1, 2)] |
|
[TestCase("Awesome Show - s1e2 - Episode Title-720p.mkv", 1, 2)] |
|
[TestCase("Awesome Show - S1E2 - Episode Title-720p.mkv", 1, 2)] |
|
[TestCase( |
|
"Awesome Show (2021) - S01E02 - Description; More Description (1080p QUALITY codec GROUP).mkv", |
|
1, |
|
2)] |
|
[TestCase( |
|
"Awesome.Show.S01E02.Description.more.Description.QUAlity.codec.CODEC-GROUP.mkv", |
|
1, |
|
2)] |
|
public void GetFallbackMetadata_ShouldHandleVariousFormats(string path, int season, int episode) |
|
{ |
|
List<EpisodeMetadata> metadata = _fallbackMetadataProvider.GetFallbackMetadata( |
|
new Episode |
|
{ |
|
LibraryPath = new LibraryPath(), |
|
MediaVersions = new List<MediaVersion> |
|
{ |
|
new() |
|
{ |
|
MediaFiles = new List<MediaFile> |
|
{ |
|
new() { Path = path } |
|
} |
|
} |
|
} |
|
}); |
|
|
|
metadata.Count.Should().Be(1); |
|
// TODO: how can we test season number? do we need to? |
|
// metadata.Season.Should().Be(season); |
|
metadata.Head().EpisodeNumber.Should().Be(episode); |
|
} |
|
|
|
[Test] |
|
[TestCase("Awesome Show - s01e02-s01e03.mkv", 1, 2, 3)] |
|
[TestCase("Awesome Show - s01e02-whatever-s01e03-whatever2.mkv", 1, 2, 3)] |
|
[TestCase("Awesome Show - s01e02e03.mkv", 1, 2, 3)] |
|
[TestCase("Awesome Show - s01e02-03.mkv", 1, 2, 3)] |
|
public void GetFallbackMetadata_Should_Handle_Two_Episode_Formats( |
|
string path, |
|
int season, |
|
int episode1, |
|
int episode2) |
|
{ |
|
List<EpisodeMetadata> metadata = _fallbackMetadataProvider.GetFallbackMetadata( |
|
new Episode |
|
{ |
|
LibraryPath = new LibraryPath(), |
|
MediaVersions = new List<MediaVersion> |
|
{ |
|
new() |
|
{ |
|
MediaFiles = new List<MediaFile> |
|
{ |
|
new() { Path = path } |
|
} |
|
} |
|
} |
|
}); |
|
|
|
metadata.Count.Should().Be(2); |
|
metadata.Map(m => m.EpisodeNumber).Should().BeEquivalentTo(new[] { episode1, episode2 }); |
|
} |
|
|
|
[Test] |
|
[TestCase("Something (2021).mkv", "Something")] |
|
[TestCase("Something Else (2021).mkv", "Something Else")] |
|
public void GetFallbackMetadata_Should_Set_Proper_Movie_Title(string path, string expectedTitle) |
|
{ |
|
MovieMetadata metadata = _fallbackMetadataProvider.GetFallbackMetadata( |
|
new Movie |
|
{ |
|
LibraryPath = new LibraryPath(), |
|
MediaVersions = new List<MediaVersion> |
|
{ |
|
new() |
|
{ |
|
MediaFiles = new List<MediaFile> |
|
{ |
|
new() { Path = path } |
|
} |
|
} |
|
} |
|
}); |
|
|
|
metadata.Should().NotBeNull(); |
|
metadata.Title.Should().Be(expectedTitle); |
|
} |
|
} |