mirror of
https://github.com/SoPat712/allstarr.git
synced 2026-04-21 02:02:31 -04:00
66 lines
1.7 KiB
C#
66 lines
1.7 KiB
C#
using System.Reflection;
|
|
using System.Text.Json;
|
|
using allstarr.Controllers;
|
|
|
|
namespace allstarr.Tests;
|
|
|
|
public class JellyfinImageTagExtractionTests
|
|
{
|
|
[Fact]
|
|
public void ExtractImageTag_WithMatchingImageTagsObject_ReturnsRequestedTag()
|
|
{
|
|
using var document = JsonDocument.Parse("""
|
|
{
|
|
"ImageTags": {
|
|
"Primary": "playlist-primary-tag",
|
|
"Backdrop": "playlist-backdrop-tag"
|
|
}
|
|
}
|
|
""");
|
|
|
|
var imageTag = InvokeExtractImageTag(document.RootElement, "Primary");
|
|
|
|
Assert.Equal("playlist-primary-tag", imageTag);
|
|
}
|
|
|
|
[Fact]
|
|
public void ExtractImageTag_WithPrimaryImageTagFallback_ReturnsFallbackTag()
|
|
{
|
|
using var document = JsonDocument.Parse("""
|
|
{
|
|
"PrimaryImageTag": "primary-fallback-tag"
|
|
}
|
|
""");
|
|
|
|
var imageTag = InvokeExtractImageTag(document.RootElement, "Primary");
|
|
|
|
Assert.Equal("primary-fallback-tag", imageTag);
|
|
}
|
|
|
|
[Fact]
|
|
public void ExtractImageTag_WithoutMatchingTag_ReturnsNull()
|
|
{
|
|
using var document = JsonDocument.Parse("""
|
|
{
|
|
"ImageTags": {
|
|
"Backdrop": "playlist-backdrop-tag"
|
|
}
|
|
}
|
|
""");
|
|
|
|
var imageTag = InvokeExtractImageTag(document.RootElement, "Primary");
|
|
|
|
Assert.Null(imageTag);
|
|
}
|
|
|
|
private static string? InvokeExtractImageTag(JsonElement item, string imageType)
|
|
{
|
|
var method = typeof(JellyfinController).GetMethod(
|
|
"ExtractImageTag",
|
|
BindingFlags.Static | BindingFlags.NonPublic);
|
|
|
|
Assert.NotNull(method);
|
|
return (string?)method!.Invoke(null, new object?[] { item, imageType });
|
|
}
|
|
}
|