Added abstraction layeer IHtmlLoader. Finished reorganizing test project folder structure.
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
using MangaReader.Core.Http;
|
||||
using MangaReader.Core.Metadata;
|
||||
using MangaReader.Core.Sources.MangaNato.Metadata;
|
||||
using MangaReader.Tests.Utilities;
|
||||
using NSubstitute;
|
||||
using Shouldly;
|
||||
using System.Data;
|
||||
|
||||
namespace MangaReader.Tests.Sources.MangaNato.Metadata;
|
||||
|
||||
public class MangaNatoMetadataTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task Get_Manga()
|
||||
{
|
||||
string mangaHtml = await ReadJsonResourceAsync("Manga-Response.html");
|
||||
|
||||
IHttpService httpService = Substitute.For<IHttpService>();
|
||||
|
||||
httpService.GetStringAsync(Arg.Any<string>(), CancellationToken.None)
|
||||
.Returns(Task.FromResult(mangaHtml));
|
||||
|
||||
HtmlLoader htmlLoader = new(httpService);
|
||||
|
||||
MangaNatoWebCrawler webCrawler = new(htmlLoader);
|
||||
SourceManga? manga = await webCrawler.GetMangaAsync("/test-url", CancellationToken.None);
|
||||
|
||||
manga.ShouldNotBeNull();
|
||||
|
||||
manga.Title.Name.ShouldBe("Please Go Home, Akutsu-San!");
|
||||
|
||||
manga.AlternateTitles.Select(x => x.Name).ShouldBe([
|
||||
"Kaette kudasai! Akutsu-san",
|
||||
"Yankee Musume",
|
||||
"ヤンキー娘",
|
||||
"帰ってください! 阿久津さん"]);
|
||||
|
||||
SourceMangaContributor[] expectedContributors =
|
||||
[
|
||||
new() { Name = "Nagaoka Taichi", Role = SourceMangaContributorRole.Author }
|
||||
];
|
||||
|
||||
manga.Contributors.ShouldBeEquivalentTo(expectedContributors);
|
||||
|
||||
manga.Status.ShouldBe(MangaStatus.Ongoing);
|
||||
manga.Genres.ShouldBe(["Comedy", "Romance", "School life"]);
|
||||
manga.UpdateDate.ShouldBe(new DateTime(2024, 9, 26, 0, 12, 0));
|
||||
manga.Views.ShouldBe(93_300_000);
|
||||
manga.RatingPercent.ShouldBe(97);
|
||||
manga.Votes.ShouldBe(15979);
|
||||
|
||||
//manga.Description.ShouldStartWith("Ooyama-kun normally doesn’t get involved with Akutsu-san, a delinquent girl in his class");
|
||||
manga.Description?.Name.ShouldStartWith("Ooyama-kun normally doesn’t get involved with Akutsu-san, a delinquent girl in his class");
|
||||
manga.Description?.Name.ShouldEndWith("Artist's Pixiv: https://www.pixiv.net/member.php?id=133935");
|
||||
|
||||
manga.Chapters.Count.ShouldBe(236);
|
||||
|
||||
manga.Chapters[0].Url.ShouldBe("https://chapmanganato.to/manga-hf984788/chapter-186");
|
||||
manga.Chapters[0].Number.ShouldBe(186);
|
||||
manga.Chapters[0].Title.ShouldBe("Chapter 186");
|
||||
manga.Chapters[0].Views.ShouldBe(37_900);
|
||||
manga.Chapters[0].UploadDate.ShouldBe(new DateTime(2024, 9, 26, 0, 9, 0));
|
||||
|
||||
manga.Chapters[235].Url.ShouldBe("https://chapmanganato.to/manga-hf984788/chapter-0.1");
|
||||
manga.Chapters[235].Number.ShouldBe(0.1f);
|
||||
manga.Chapters[235].Title.ShouldBe("Vol.0 Chapter : Oneshot");
|
||||
manga.Chapters[235].Views.ShouldBe(232_200);
|
||||
manga.Chapters[235].UploadDate.ShouldBe(new DateTime(2021, 8, 24, 1, 8, 0));
|
||||
}
|
||||
|
||||
private static async Task<string> ReadJsonResourceAsync(string resourceName)
|
||||
{
|
||||
return await ResourceHelper.ReadJsonResourceAsync($"MangaReader.Tests.Sources.MangaNato.Metadata.{resourceName}");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user