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();
        }
Пример #3
0
        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();
        }
Пример #5
0
 public Task <ICollection <AnimeComparisonEntryDto> > GetComparison(CompareAnimeQuery query) => _animeApi.GetComparison(query.AnimeMalIds);
Пример #6
0
 public Task <ICollection <AnimeComparisonEntryDto> > GetComparison([FromQuery] CompareAnimeQuery query)
 => HandleAsync(async() => await _compareAnimeQueryHandler.HandleAsync(query));