using MangaReader.Core.Search; using MangaReader.Core.Sources.NatoManga.Api; using MangaReader.Core.Sources.NatoManga.Search; using NSubstitute; using Shouldly; namespace MangaReader.Tests.Sources.NatoManga.Search; public class NatoMangaSearchTests { [Fact] public async Task Get_Search_Result() { NatoMangaSearchResult[] searchResults = [ new() { Name = "Gal Can't Be Kind to Otaku!", Url = "https://www.natomanga.com/manga/gal-can-t-be-kind-to-otaku", Thumb = "https://img-r1.2xstorage.com/thumb/gal-can-t-be-kind-to-otaku.webp" }, new() { Name = "Gal Can’t Be Kind to Otaku!?", Url = "https://www.natomanga.com/manga/gal-cant-be-kind-to-otaku", Thumb = "https://img-r1.2xstorage.com/thumb/gal-cant-be-kind-to-otaku.webp" } ]; INatoMangaClient natoMangaClient = Substitute.For(); natoMangaClient.SearchAsync(Arg.Any(), CancellationToken.None) .Returns(Task.FromResult(searchResults)); NatoMangaSearchProvider searchProvider = new(natoMangaClient); MangaSearchResult[] searchResult = await searchProvider.SearchAsync("Gal Can't Be Kind", CancellationToken.None); searchResult.Length.ShouldBe(2); searchResult[0].Title.ShouldBe("Gal Can't Be Kind to Otaku!"); searchResult[0].Url.ShouldBe("https://www.natomanga.com/manga/gal-can-t-be-kind-to-otaku"); searchResult[0].Thumbnail.ShouldBe("https://img-r1.2xstorage.com/thumb/gal-can-t-be-kind-to-otaku.webp"); searchResult[1].Title.ShouldBe("Gal Can’t Be Kind to Otaku!?"); searchResult[1].Url.ShouldBe("https://www.natomanga.com/manga/gal-cant-be-kind-to-otaku"); searchResult[1].Thumbnail.ShouldBe("https://img-r1.2xstorage.com/thumb/gal-cant-be-kind-to-otaku.webp"); } }