Added Chobit integration. Updated tests.
This commit is contained in:
98
JSMR.Tests/Integrations/Chobit/ChobitClientTests.cs
Normal file
98
JSMR.Tests/Integrations/Chobit/ChobitClientTests.cs
Normal file
@@ -0,0 +1,98 @@
|
||||
using JSMR.Application.Integrations.Chobit.Models;
|
||||
using JSMR.Infrastructure.Integrations.Chobit;
|
||||
using JSMR.Tests.Http;
|
||||
using JSMR.Tests.Utilities;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NSubstitute;
|
||||
using Shouldly;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
|
||||
namespace JSMR.Tests.Integrations.Chobit;
|
||||
|
||||
public class ChobitClientTests
|
||||
{
|
||||
private static async Task<string> ReadJsonResourceAsync(string resourceName)
|
||||
{
|
||||
return await ResourceHelper.ReadAsync($"JSMR.Tests.Integrations.Chobit.{resourceName}");
|
||||
}
|
||||
|
||||
private static async Task<ChobitClient> GetChobitClientThatReturns(string resourceName)
|
||||
{
|
||||
string content = await ReadJsonResourceAsync(resourceName);
|
||||
|
||||
FakeHttpMessageHandler handler = new(request =>
|
||||
{
|
||||
return new HttpResponseMessage(HttpStatusCode.OK)
|
||||
{
|
||||
Content = new StringContent(content, Encoding.UTF8, "application/json")
|
||||
};
|
||||
});
|
||||
|
||||
HttpClient httpClient = new(handler)
|
||||
{
|
||||
BaseAddress = new Uri("https://fake-chobit.cc/")
|
||||
};
|
||||
|
||||
var logger = Substitute.For<ILogger<ChobitClient>>();
|
||||
var client = new ChobitClient(httpClient, logger);
|
||||
|
||||
return client;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Deserialize_Chobit_Sample_Info()
|
||||
{
|
||||
var client = await GetChobitClientThatReturns("Sample-Chobit-Result.jsonp");
|
||||
var result = await client.GetSampleInfoAsync("RJ01430276", CancellationToken.None);
|
||||
|
||||
result.Count.ShouldBe(1);
|
||||
result.Works.Length.ShouldBe(1);
|
||||
|
||||
ChobitWork work = result.Works[0];
|
||||
work.WorkId.ShouldBe("70nh8");
|
||||
work.DLSiteWorkId.ShouldBe("RJ01430276");
|
||||
work.WorkName.ShouldBe("【ブルーアーカイブ】シグレ(温泉)ASMR~溶けていく温度を交わして~");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Deserialize_Chobit_Sample_Info_Collection()
|
||||
{
|
||||
var client = await GetChobitClientThatReturns("Sample-Chobit-Result-Collection.jsonp");
|
||||
var result = await client.GetSampleInfoAsync(["RJ01430276"], CancellationToken.None);
|
||||
|
||||
result.Count.ShouldBe(1);
|
||||
result.ShouldContainKey("RJ01430276");
|
||||
|
||||
result["RJ01430276"].Count.ShouldBe(1);
|
||||
result["RJ01430276"].Works.Length.ShouldBe(1);
|
||||
|
||||
ChobitWork work = result["RJ01430276"].Works[0];
|
||||
work.WorkId.ShouldBe("70nh8");
|
||||
work.DLSiteWorkId.ShouldBe("RJ01430276");
|
||||
work.WorkName.ShouldBe("【ブルーアーカイブ】シグレ(温泉)ASMR~溶けていく温度を交わして~");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Deserialize_Chobit_Sample_Info_No_Data()
|
||||
{
|
||||
var client = await GetChobitClientThatReturns("Sample-Chobit-Result-No-Data.jsonp");
|
||||
var result = await client.GetSampleInfoAsync("RJ01585659", CancellationToken.None);
|
||||
|
||||
result.Count.ShouldBe(0);
|
||||
result.Works.Length.ShouldBe(0);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Deserialize_Chobit_Sample_Info_Collection_No_Data()
|
||||
{
|
||||
var client = await GetChobitClientThatReturns("Sample-Chobit-Result-Collection-No-Data.jsonp");
|
||||
var result = await client.GetSampleInfoAsync(["RJ01585659"], CancellationToken.None);
|
||||
|
||||
result.Count.ShouldBe(1);
|
||||
result.ShouldContainKey("RJ01585659");
|
||||
|
||||
result["RJ01585659"].Count.ShouldBe(0);
|
||||
result["RJ01585659"].Works.Length.ShouldBe(0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
response({"RJ01585659":{"count":0,"works":[]}})
|
||||
@@ -0,0 +1 @@
|
||||
response({"RJ01430276":{"count":1,"works":[{"work_id":"70nh8","dlsite_work_id":"RJ01430276","work_name":"\u3010\u30d6\u30eb\u30fc\u30a2\u30fc\u30ab\u30a4\u30d6\u3011\u30b7\u30b0\u30ec(\u6e29\u6cc9)ASMR\uff5e\u6eb6\u3051\u3066\u3044\u304f\u6e29\u5ea6\u3092\u4ea4\u308f\u3057\u3066\uff5e","work_name_kana":"\u30d6\u30eb\u30fc\u30a2\u30fc\u30ab\u30a4\u30d6\u30b7\u30b0\u30ec\u30aa\u30f3\u30bb\u30f3\u30a8\u30fc\u30a8\u30b9\u30a8\u30e0\u30a2\u30fc\u30eb\u30c8\u30b1\u30c6\u30a4\u30af\u30aa\u30f3\u30c9\u30f2\u30ab\u30ef\u30b7\u30c6","url":"https:\/\/chobit.cc\/70nh8\/vgj6safb","embed_url":"https:\/\/chobit.cc\/embed\/70nh8\/vgj6safb?dlsite=1","thumb":"https:\/\/media.dlsite.com\/chobit\/contents\/2507\/f1kkssulligowgkkcc0k80soo\/f1kkssulligowgkkcc0k80soo_cover.jpg?w=560\u0026h=420","mini_thumb":"https:\/\/media.dlsite.com\/chobit\/contents\/2507\/f1kkssulligowgkkcc0k80soo\/f1kkssulligowgkkcc0k80soo_cover.jpg?w=100\u0026h=100","file_type":"audio","embed_width":740,"embed_height":215}]}})
|
||||
@@ -0,0 +1 @@
|
||||
response({"count":0,"works":[]})
|
||||
@@ -0,0 +1 @@
|
||||
response({"count":1,"works":[{"work_id":"70nh8","dlsite_work_id":"RJ01430276","work_name":"\u3010\u30d6\u30eb\u30fc\u30a2\u30fc\u30ab\u30a4\u30d6\u3011\u30b7\u30b0\u30ec(\u6e29\u6cc9)ASMR\uff5e\u6eb6\u3051\u3066\u3044\u304f\u6e29\u5ea6\u3092\u4ea4\u308f\u3057\u3066\uff5e","work_name_kana":"\u30d6\u30eb\u30fc\u30a2\u30fc\u30ab\u30a4\u30d6\u30b7\u30b0\u30ec\u30aa\u30f3\u30bb\u30f3\u30a8\u30fc\u30a8\u30b9\u30a8\u30e0\u30a2\u30fc\u30eb\u30c8\u30b1\u30c6\u30a4\u30af\u30aa\u30f3\u30c9\u30f2\u30ab\u30ef\u30b7\u30c6","url":"https:\/\/chobit.cc\/70nh8\/vgj6safb","embed_url":"https:\/\/chobit.cc\/embed\/70nh8\/vgj6safb?dlsite=1","thumb":"https:\/\/media.dlsite.com\/chobit\/contents\/2507\/f1kkssulligowgkkcc0k80soo\/f1kkssulligowgkkcc0k80soo_cover.jpg?w=560\u0026h=420","mini_thumb":"https:\/\/media.dlsite.com\/chobit\/contents\/2507\/f1kkssulligowgkkcc0k80soo\/f1kkssulligowgkkcc0k80soo_cover.jpg?w=100\u0026h=100","file_type":"audio","embed_width":740,"embed_height":215}]})
|
||||
Reference in New Issue
Block a user