public async Task HandleAsync_GivenMultipleCommonSeiyuu_ShouldReturnMultipleResults() { // Given var query = new CompareAnimeQuery { AnimeMalIds = new List <long> { 1, 2 } }; var dbContext = InMemoryDbProvider.GetDbContext(); var miyukiSawashiro = new SeiyuuBuilder().WithId(Guid.NewGuid()).WithMalId(1).WithName("Miyuki Sawashiro").Build(); var chiwaSaito = new SeiyuuBuilder().WithId(Guid.NewGuid()).WithMalId(2).WithName("Chiwa Saito").Build(); var onePieceAnime = new AnimeBuilder().WithId(Guid.NewGuid()).WithMalId(1).WithTitle("One Piece").Build(); var bakemonogatariAnime = new AnimeBuilder().WithId(Guid.NewGuid()).WithMalId(2).WithTitle("Bakemonogatari").Build(); var japanese = new LanguageBuilder().WithLanguageId(LanguageId.Japanese).Build(); var animeRoles = new List <AnimeRole> { new AnimeRoleBuilder() .WithAnime(onePieceAnime) .WithSeiyuu(miyukiSawashiro) .WithCharacter(x => x.WithId(Guid.NewGuid()).WithMalId(1).WithName("Charlotte Pudding").Build()) .WithLanguage(japanese) .Build(), new AnimeRoleBuilder() .WithAnime(bakemonogatariAnime) .WithSeiyuu(miyukiSawashiro) .WithCharacter(x => x.WithId(Guid.NewGuid()).WithMalId(2).WithName("Kanbaru Suruga").Build()) .WithLanguage(japanese) .Build(), new AnimeRoleBuilder() .WithAnime(onePieceAnime) .WithSeiyuu(chiwaSaito) .WithCharacter(x => x.WithId(Guid.NewGuid()).WithMalId(1).WithName("Chimney").Build()) .WithLanguage(japanese) .Build(), new AnimeRoleBuilder() .WithAnime(bakemonogatariAnime) .WithSeiyuu(chiwaSaito) .WithCharacter(x => x.WithId(Guid.NewGuid()).WithMalId(2).WithName("Hitagi Senjougahara").Build()) .WithLanguage(japanese) .Build() }; await dbContext.AddRangeAsync(animeRoles); await dbContext.SaveChangesAsync(); var handler = CreateHandler(dbContext); // When var result = await handler.HandleAsync(query); // Then result.Should().HaveCount(2); }
public async Task HandleAsync_GivenEmptyDatabase_ShouldReturnEmptyResults() { // Given var query = new CompareAnimeQuery { AnimeMalIds = new List <long> { 1, 2 } }; var dbContext = InMemoryDbProvider.GetDbContext(); var handler = CreateHandler(dbContext); // When var result = await handler.HandleAsync(query); // Then result.Should().BeEmpty(); }
public async Task GetComparison_ExistingAnime_ShouldReturnComparisonEntities() { // Given const int bleachId = 269; const int deathNoteId = 1535; var api = new AnimeApi(requester); var query = new CompareAnimeQuery { AnimeMalIds = new List <long> { bleachId, deathNoteId } }; // When var apiResult = await api.GetComparison(query); // Then apiResult.Count.Should().Be(7); }
public async Task HandleAsync_GivenSingleAnimeIdQueryDatabase_ShouldReturnEmptyResults() { // Given var query = new CompareAnimeQuery { AnimeMalIds = new List <long> { 1 } }; var dbContext = InMemoryDbProvider.GetDbContext(); var onePieceAnime = new AnimeBuilder().WithId(Guid.NewGuid()).WithMalId(3).WithTitle("One Piece").Build(); var animeRoles = new List <AnimeRole> { new AnimeRoleBuilder() .WithAnime(onePieceAnime) .WithSeiyuu(x => x.WithId(Guid.NewGuid()).WithMalId(1).WithName("Miyuki Sawashiro").Build()) .WithCharacter(x => x.WithId(Guid.NewGuid()).WithMalId(1).WithName("Charlotte Pudding").Build()) .Build(), new AnimeRoleBuilder() .WithAnime(onePieceAnime) .WithSeiyuu(x => x.WithId(Guid.NewGuid()).WithMalId(2).WithName("Chiwa Saito").Build()) .WithCharacter(x => x.WithId(Guid.NewGuid()).WithMalId(1).WithName("Chimney").Build()) .Build(), }; await dbContext.AddRangeAsync(animeRoles); await dbContext.SaveChangesAsync(); var handler = CreateHandler(dbContext); // When var result = await handler.HandleAsync(query); // Then result.Should().BeEmpty(); }
public Task <ICollection <AnimeComparisonEntryDto> > GetComparison(CompareAnimeQuery query) => _animeApi.GetComparison(query.AnimeMalIds);
public Task <ICollection <AnimeComparisonEntryDto> > GetComparison([FromQuery] CompareAnimeQuery query) => HandleAsync(async() => await _compareAnimeQueryHandler.HandleAsync(query));