51 lines
2.7 KiB
C#
51 lines
2.7 KiB
C#
using MangaReader.Core.HttpService;
|
||
using MangaReader.Core.Sources.MangaDex.Api;
|
||
using MangaReader.Tests.Utilities;
|
||
using NSubstitute;
|
||
using Shouldly;
|
||
|
||
namespace MangaReader.Tests.WebCrawlers.MangaDex;
|
||
|
||
public class MangaDexMetadataTests
|
||
{
|
||
[Fact]
|
||
public async Task Get_Manga_Metadata()
|
||
{
|
||
string resourceName = "MangaReader.Tests.WebCrawlers.MangaDex.MetadataSample.json";
|
||
string searchResultJson = await ResourceHelper.ReadJsonResourceAsync(resourceName);
|
||
|
||
IHttpService httpService = Substitute.For<IHttpService>();
|
||
|
||
httpService.GetStringAsync(Arg.Any<string>(), CancellationToken.None)
|
||
.Returns(Task.FromResult(searchResultJson));
|
||
|
||
MangaDexClient mangaDexClient = new(httpService);
|
||
MangaDexResponse mangaDexResponse = await mangaDexClient.GetMangaAsync(Guid.NewGuid(), CancellationToken.None);
|
||
|
||
mangaDexResponse.Response.ShouldBe("entity");
|
||
mangaDexResponse.ShouldBeOfType<MangaDexEntityResponse>();
|
||
|
||
MangaDexEntityResponse? mangaDexEntityResponse = mangaDexResponse as MangaDexEntityResponse;
|
||
mangaDexEntityResponse.ShouldNotBeNull();
|
||
mangaDexEntityResponse.Data.ShouldNotBeNull();
|
||
mangaDexEntityResponse.Data.ShouldBeOfType<MangaEntity>();
|
||
|
||
MangaEntity? mangaEntity = mangaDexEntityResponse.Data as MangaEntity;
|
||
mangaEntity.ShouldNotBeNull();
|
||
mangaEntity.Attributes.Title.ShouldContainKey("en");
|
||
mangaEntity.Attributes.Title["en"].ShouldBe("Gals Can’t Be Kind to Otaku!?");
|
||
mangaEntity.Attributes.Description.ShouldContainKey("en");
|
||
mangaEntity.Attributes.Description["en"].ShouldBe("Takuya Seo is an otaku who likes \"anime for girls\" and can't say he likes it out loud. One day, he hooks up with two gals from his class, Amane and Ijichi, but it seems that Amane is also an otaku...");
|
||
mangaEntity.Attributes.Tags.Count.ShouldBe(5);
|
||
mangaEntity.Attributes.Tags[0].Attributes.Name.ShouldContainKey("en");
|
||
mangaEntity.Attributes.Tags[0].Attributes.Name["en"].ShouldBe("Romance");
|
||
mangaEntity.Attributes.Tags[1].Attributes.Name.ShouldContainKey("en");
|
||
mangaEntity.Attributes.Tags[1].Attributes.Name["en"].ShouldBe("Comedy");
|
||
mangaEntity.Attributes.Tags[2].Attributes.Name.ShouldContainKey("en");
|
||
mangaEntity.Attributes.Tags[2].Attributes.Name["en"].ShouldBe("School Life");
|
||
mangaEntity.Attributes.Tags[3].Attributes.Name.ShouldContainKey("en");
|
||
mangaEntity.Attributes.Tags[3].Attributes.Name["en"].ShouldBe("Slice of Life");
|
||
mangaEntity.Attributes.Tags[4].Attributes.Name.ShouldContainKey("en");
|
||
mangaEntity.Attributes.Tags[4].Attributes.Name["en"].ShouldBe("Gyaru");
|
||
}
|
||
} |