Files
Ludarium-Public/tests/Ludarium.IntegrationTests/NativeProviderFixtureTests.cs
T
Ludarium release export df869819ce
Public source validation / source (push) Successful in 2m16s
Publish Ludarium source
2026-09-03 02:08:58 +02:00

57 lines
2.6 KiB
C#

using Ludarium.Domain;
using Ludarium.Infrastructure;
namespace Ludarium.IntegrationTests;
public sealed class NativeProviderFixtureTests
{
private static readonly Game Sonic = new(Guid.Parse("d2e86fb8-2184-4d2d-bce7-cb3156f0b9b2"),
"Sonic the Hedgehog", DateTimeOffset.UnixEpoch);
private static readonly Release Genesis = new(Guid.Parse("dc2ad40a-0d30-4eeb-8f32-25a273c14833"),
Sonic.Id, Sonic.Title, "genesis", "world", null, DateTimeOffset.UnixEpoch);
[Fact]
public void IgdbFixtureProducesProvenancedMetadataAndArtwork()
{
var result = Assert.IsType<Ludarium.Application.ProviderGameResult>(
IgdbMetadataProvider.Parse(Read("igdb-game.json"), Sonic, Genesis));
Assert.Equal("1074", result.ExternalId);
Assert.Contains(result.Fields, item => item.Field == "developer" && item.Value == "Sonic Team");
Assert.Contains(result.Artwork, item => item.Url.StartsWith("https://images.igdb.com/", StringComparison.Ordinal));
}
[Fact]
public void MobyGamesFixtureRequiresAnExactTitleAndReturnsHttpsArtwork()
{
var result = Assert.IsType<Ludarium.Application.ProviderGameResult>(
MobyGamesMetadataProvider.Parse(Read("mobygames-game.json"), Sonic, Genesis));
Assert.Equal("6225", result.ExternalId);
Assert.All(result.Artwork, item => Assert.StartsWith("https://", item.Url, StringComparison.Ordinal));
Assert.Null(MobyGamesMetadataProvider.Parse(Read("mobygames-game.json"),
Sonic with { Title = "Sonic 2" }, Genesis));
}
[Fact]
public void ScreenScraperFixtureIsParsedWithoutExternalEntities()
{
var result = Assert.IsType<Ludarium.Application.ProviderGameResult>(
ScreenScraperMetadataProvider.Parse(Read("screenscraper-game.xml"), Sonic, Genesis));
Assert.Equal("1", result.ExternalId);
Assert.Contains(result.Fields, item => item.Field == "players" && item.Value == "2");
}
[Fact]
public void RetroAchievementsFixturePreservesUnlockStateAndDefinitions()
{
var result = Assert.IsType<Ludarium.Application.ProviderGameResult>(
RetroAchievementsMetadataProvider.ParseDetails(Read("retroachievements-game.json"), Sonic, Genesis, 1));
var progress = Assert.IsType<GameAchievementProgress>(result.AchievementProgress);
Assert.Equal(2, progress.Total);
Assert.Equal(1, progress.Earned);
Assert.Single(progress.Achievements, item => item.Unlocked);
}
private static string Read(string name) => File.ReadAllText(Path.Combine(AppContext.BaseDirectory,
"fixtures", "providers", name));
}