From 5cde64ac773a27e203f3bf7df101cfbddf1d2cca Mon Sep 17 00:00:00 2001 From: Brian Bicknell Date: Sat, 1 Nov 2025 22:43:34 -0400 Subject: [PATCH] Updated DLSiteClient test to handle translations. Added Alingual to the list of "All" supported languages. --- JSMR.Domain/ValueObjects/SupportedLanguage.cs | 3 +- .../Integrations/DLSite/DLSiteClientTests.cs | 43 +++++++++++++++++-- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/JSMR.Domain/ValueObjects/SupportedLanguage.cs b/JSMR.Domain/ValueObjects/SupportedLanguage.cs index b1895f4..66b9d44 100644 --- a/JSMR.Domain/ValueObjects/SupportedLanguage.cs +++ b/JSMR.Domain/ValueObjects/SupportedLanguage.cs @@ -18,7 +18,8 @@ public sealed record SupportedLanguage(string Code, Language Language) English, ChineseSimplified, ChineseTraditional, - Korean + Korean, + Alingual ]; private static readonly Dictionary _byCode = diff --git a/JSMR.Tests/Integrations/DLSite/DLSiteClientTests.cs b/JSMR.Tests/Integrations/DLSite/DLSiteClientTests.cs index dc74a30..a525f3d 100644 --- a/JSMR.Tests/Integrations/DLSite/DLSiteClientTests.cs +++ b/JSMR.Tests/Integrations/DLSite/DLSiteClientTests.cs @@ -1,5 +1,6 @@ using JSMR.Application.Integrations.DLSite.Models; using JSMR.Domain.Enums; +using JSMR.Domain.ValueObjects; using JSMR.Infrastructure.Http; using JSMR.Infrastructure.Integrations.DLSite; using JSMR.Infrastructure.Integrations.DLSite.Mapping; @@ -60,25 +61,61 @@ public class DLSiteClientTests TitleId = "SE0001", TitleName = "Series 1" } + }, + { + "RG0002", + new ProductInfo() + { + WishlistCount = 100, + DownloadCount = 50, + Options = ["TRI", "ENG", "DOT", "VET"], + TitleId = "SE0001", + TitleName = "Series 1", + TranslationInfo = new() + { + OriginalWorkNumber = "RG0001", + Language = "ENG" + } + } } }; + // General VoiceWorkDetailCollection mappedCollection = DLSiteToDomainMapper.Map(productInfoCollection); - mappedCollection.Count.ShouldBe(1); + mappedCollection.Count.ShouldBe(2); mappedCollection.ShouldContainKey("RG0001"); + mappedCollection.ShouldContainKey("RG0002"); + // RG0001 VoiceWorkDetails voiceWorkDetails = mappedCollection["RG0001"]; voiceWorkDetails.WishlistCount.ShouldBe(250); voiceWorkDetails.DownloadCount.ShouldBe(100); voiceWorkDetails.HasTrial.ShouldBe(true); voiceWorkDetails.HasDLPlay.ShouldBe(true); voiceWorkDetails.AI.ShouldBe(AIGeneration.None); + voiceWorkDetails.SupportedLanguages.ShouldBe([SupportedLanguage.Japanese]); voiceWorkDetails.Series.ShouldNotBeNull(); voiceWorkDetails.Series.Identifier.ShouldBe("SE0001"); voiceWorkDetails.Series.Name.ShouldBe("Series 1"); - voiceWorkDetails.SupportedLanguages.Count.ShouldBe(1); - voiceWorkDetails.SupportedLanguages[0].Language.ShouldBe(Language.Japanese); + + // RG0002 + VoiceWorkDetails secondVoiceWorkDetails = mappedCollection["RG0002"]; + secondVoiceWorkDetails.WishlistCount.ShouldBe(100); + secondVoiceWorkDetails.DownloadCount.ShouldBe(50); + secondVoiceWorkDetails.HasTrial.ShouldBe(true); + secondVoiceWorkDetails.HasDLPlay.ShouldBe(false); + secondVoiceWorkDetails.AI.ShouldBe(AIGeneration.None); + secondVoiceWorkDetails.SupportedLanguages.ShouldBe([SupportedLanguage.English]); + + secondVoiceWorkDetails.Series.ShouldNotBeNull(); + secondVoiceWorkDetails.Series.Identifier.ShouldBe("SE0001"); + secondVoiceWorkDetails.Series.Name.ShouldBe("Series 1"); + + secondVoiceWorkDetails.Translation.ShouldNotBeNull(); + secondVoiceWorkDetails.Translation.OriginalProductId.ShouldBe("RG0001"); + secondVoiceWorkDetails.Translation.Language.ShouldBe(Language.English); + secondVoiceWorkDetails.Translation.Kind.ShouldBe(TranslationKind.Official | TranslationKind.Recommended); } } \ No newline at end of file