public async Task GetOrderedPageByPopularityAsync_GivenMultipleWithPredicate_ShouldReturnEmpty() { // Given const int pageSize = 2; const int pageNumber = 2; var dbContext = InMemoryDbProvider.GetDbContext(); var repository = new SeiyuuRepository(dbContext); var seiyuu1 = new SeiyuuBuilder().WithName("Test1").Build(); var seiyuu2 = new SeiyuuBuilder().WithName("Test2").Build(); var seiyuu3 = new SeiyuuBuilder().WithName("Test3").Build(); await dbContext.Seiyuus.AddAsync(seiyuu1); await dbContext.Seiyuus.AddAsync(seiyuu2); await dbContext.Seiyuus.AddAsync(seiyuu3); await dbContext.SaveChangesAsync(); // When var result = await repository.GetOrderedPageByPopularityAsync(x => x.Name.EndsWith("1"), pageNumber, pageSize); // Then// Then using (new AssertionScope()) { result.TotalCount.Should().Be(1); result.Results.Should().BeEmpty(); result.Page.Should().Be(pageNumber); result.PageSize.Should().Be(pageSize); } }
public async Task GetAllSeiyuuRolesAsync_GivenMultipleRoles_ShouldReturnMultiple() { // Given var seiyuuId = Guid.NewGuid(); var dbContext = InMemoryDbProvider.GetDbContext(); var repository = new SeiyuuRoleRepository(dbContext); var japanese = new LanguageBuilder().WithLanguageId(LanguageId.Japanese).Build(); var seiyuu = new SeiyuuBuilder().WithId(seiyuuId).Build(); seiyuu.Role = new List <AnimeRole> { new AnimeRoleBuilder().WithLanguage(japanese).Build(), new AnimeRoleBuilder().WithLanguage(japanese).Build(), new AnimeRoleBuilder().WithLanguage(japanese).Build(), new AnimeRoleBuilder().WithLanguage(japanese).Build(), new AnimeRoleBuilder().WithLanguage(japanese).Build(), }; await dbContext.AddAsync(seiyuu); await dbContext.SaveChangesAsync(); // When var result = await repository.GetAllSeiyuuRolesAsync(seiyuuId, false); // Then result.Should().HaveCount(5); }
public async Task GetOrderedPageByPopularityAsync_GivenMultipleSeiyuu_ShouldReturnAll() { // Given var dbContext = InMemoryDbProvider.GetDbContext(); var repository = new SeiyuuRepository(dbContext); var seiyuu1 = new SeiyuuBuilder().WithName("Test1").Build(); var seiyuu2 = new SeiyuuBuilder().WithName("Test2").Build(); var seiyuu3 = new SeiyuuBuilder().WithName("Test3").Build(); await dbContext.Seiyuus.AddAsync(seiyuu1); await dbContext.Seiyuus.AddAsync(seiyuu2); await dbContext.Seiyuus.AddAsync(seiyuu3); await dbContext.SaveChangesAsync(); // When var result = await repository.GetOrderedPageByPopularityAsync(x => true); // Then using (new AssertionScope()) { result.TotalCount.Should().Be(3); result.Results.Should().HaveCount(3); } }
public async Task HandleAsync_GivenExistingSeiyuu_ShouldSkipAndNotCallJikan() { // Given var dbContext = InMemoryDbProvider.GetDbContext(); var jikanServiceBuilder = new JikanServiceBuilder(); const int startingMalId = 1; var s3Service = new S3ServiceStub(startingMalId); var anime = new SeiyuuBuilder() .WithMalId(startingMalId + 1) .Build(); await dbContext.AddAsync(anime); await dbContext.SaveChangesAsync(); var handler = CreateHandler(dbContext, jikanServiceBuilder.Build(), s3Service, 5); // When await handler.HandleAsync(); // Then jikanServiceBuilder.JikanClient.Verify(x => x.GetPersonAsync(It.IsAny <int>()), Times.Never); dbContext.Seiyuus.Should().ContainSingle(); }
public async Task HandleAsync_GivenNotExistingSeiyuuNullFromJikan_ShouldSkipAndNotInsert() { // Given var dbContext = InMemoryDbProvider.GetDbContext(); var jikanServiceBuilder = new JikanServiceBuilder().WithPersonReturned(null, null); const int startingMalId = 1; var s3Service = new S3ServiceStub(startingMalId); var anime = new SeiyuuBuilder() .WithMalId(startingMalId) .Build(); await dbContext.AddAsync(anime); await dbContext.SaveChangesAsync(); var handler = CreateHandler(dbContext, jikanServiceBuilder.Build(), s3Service, 1); // When await handler.HandleAsync(); // Then jikanServiceBuilder.JikanClient.Verify(x => x.GetPersonAsync(startingMalId + 1), Times.Once); dbContext.Seiyuus.Should().ContainSingle(); }
public async Task HandleAsync_GivenNotExistingSeiyuuExceptionFromJikan_ShouldSkipAndNotInsert() { // Given var dbContext = InMemoryDbProvider.GetDbContext(); var jikanServiceBuilder = new JikanServiceBuilder().WithGetPersonThrowing(); const int startingMalId = 1; var s3Service = new S3ServiceStub(startingMalId); var anime = new SeiyuuBuilder() .WithMalId(startingMalId) .Build(); await dbContext.AddAsync(anime); await dbContext.SaveChangesAsync(); var handler = CreateHandler(dbContext, jikanServiceBuilder.Build(), s3Service, 1); // When var action = handler.Awaiting(x => x.HandleAsync()); // Then using (new AssertionScope()) { await action.Should().ThrowExactlyAsync <JikanRequestException>(); dbContext.Seiyuus.Should().ContainSingle(); } jikanServiceBuilder.JikanClient.Verify(x => x.GetPersonAsync(startingMalId + 1), Times.Once); }
public async Task GetAsync_GivenMultipleExistingSeiyuuOneOfWhichWithId_ShouldReturnResult() { // Given var dbContext = InMemoryDbProvider.GetDbContext(); var repository = new SeiyuuRepository(dbContext); var seiyuu1 = new SeiyuuBuilder().WithMalId(1).Build(); var seiyuu2 = new SeiyuuBuilder().WithMalId(2).Build(); var seiyuu3 = new SeiyuuBuilder().WithMalId(3).Build(); var seiyuu4 = new SeiyuuBuilder().WithMalId(4).Build(); var seiyuu5 = new SeiyuuBuilder().WithMalId(5).Build(); await dbContext.Seiyuus.AddAsync(seiyuu1); await dbContext.Seiyuus.AddAsync(seiyuu2); await dbContext.Seiyuus.AddAsync(seiyuu3); await dbContext.Seiyuus.AddAsync(seiyuu4); await dbContext.Seiyuus.AddAsync(seiyuu5); await dbContext.SaveChangesAsync(); // When var result = await repository.GetAsync(3); // Then result.Should().NotBeNull(); result.MalId.Should().Be(3); }
public async Task UpdateAsync_GivenExistingSeiyuu_ShouldUpdate() { // Given var dbContext = InMemoryDbProvider.GetDbContext(); var repository = new SeiyuuRepository(dbContext); var seiyuu = new SeiyuuBuilder().WithName("Test").Build(); await dbContext.Seiyuus.AddAsync(seiyuu); await dbContext.SaveChangesAsync(); seiyuu.Name = "Updated"; // When await repository.UpdateAsync(seiyuu); // Then var allSeiyuu = await dbContext.Seiyuus.ToListAsync(); using (new AssertionScope()) { var updatedSeiyuu = allSeiyuu.SingleOrDefault(); updatedSeiyuu.Should().NotBeNull(); updatedSeiyuu.Name.Should().Be("Updated"); updatedSeiyuu.ModificationDate.Should().HaveDay(DateTime.UtcNow.Day); } }
public async Task GetAllSeiyuuRolesAsync_GivenSeiyuuWithMultipleRolesAndMainRolesOnly_ShouldReturnPartial() { // Given var seiyuuId = Guid.NewGuid(); var dbContext = InMemoryDbProvider.GetDbContext(); var repository = new SeiyuuRoleRepository(dbContext); var japanese = new LanguageBuilder().WithLanguageId(LanguageId.Japanese).Build(); var seiyuu = new SeiyuuBuilder().WithId(seiyuuId).Build(); var mainRole = new AnimeRoleTypeBuilder().WithId(AnimeRoleTypeId.Main).Build(); var supportingRole = new AnimeRoleTypeBuilder().WithId(AnimeRoleTypeId.Supporting).Build(); seiyuu.Role = new List <AnimeRole> { new AnimeRoleBuilder().WithLanguage(japanese).WithRoleType(mainRole).Build(), new AnimeRoleBuilder().WithLanguage(japanese).WithRoleType(supportingRole).Build(), new AnimeRoleBuilder().WithLanguage(japanese).WithRoleType(supportingRole).Build(), new AnimeRoleBuilder().WithLanguage(japanese).WithRoleType(supportingRole).Build(), new AnimeRoleBuilder().WithLanguage(japanese).WithRoleType(mainRole).Build() }; await dbContext.AddAsync(seiyuu); await dbContext.SaveChangesAsync(); // When var result = await repository.GetAllSeiyuuRolesAsync(seiyuuId, true); // Then result.Should().HaveCount(2); }
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_GivenNotExistingNonJapanesePersonWithoutRoles_ShouldSkipAndNotInsert() { // Given var dbContext = InMemoryDbProvider.GetDbContext(); const int startingMalId = 1; var s3Service = new S3ServiceStub(startingMalId); const string returnedSeiyuuName = "PostUpdateSeiyuuName"; const string returnedSeiyuuAbout = "PostUpdateSeiyuuAbout"; const string returnedSeiyuuGivenName = "John"; const string returnedSeiyuuFamilyNameName = "Doe"; const string returnedSeiyuuImageUrl = "PostUpdateSeiyuuImageUrl"; const int returnedSeiyuuPopularity = 1; var returnedBirthdate = new DateTime(1990, 1, 1); var returnedSeiyuu = new Person { Name = returnedSeiyuuName, About = returnedSeiyuuAbout, GivenName = returnedSeiyuuGivenName, FamilyName = returnedSeiyuuFamilyNameName, Images = new ImagesSet { JPG = new Image { ImageUrl = returnedSeiyuuImageUrl } }, MemberFavorites = returnedSeiyuuPopularity, Birthday = returnedBirthdate }; var jikanServiceBuilder = new JikanServiceBuilder().WithPersonReturned(returnedSeiyuu, null); var anime = new SeiyuuBuilder() .WithMalId(startingMalId) .Build(); await dbContext.AddAsync(anime); await dbContext.SaveChangesAsync(); var handler = CreateHandler(dbContext, jikanServiceBuilder.Build(), s3Service, 5); // When await handler.HandleAsync(); // Then jikanServiceBuilder.JikanClient.Verify(x => x.GetPersonAsync(startingMalId + 1), Times.Once); dbContext.Seiyuus.Should().ContainSingle(); }
public void ToSeiyuuSearchEntryDto_GivenSeiyuuAnime_ShouldReturnEmptySeiyuuSearchEntryDto() { // Given var seiyuu = new SeiyuuBuilder().Build(); // When var dto = seiyuu.ToSeiyuuSearchEntryDto(); // Then using (new AssertionScope()) { dto.Should().NotBeNull(); dto.ImageUrl.Should().BeEmpty(); dto.Name.Should().BeEmpty(); dto.MalId.Should().Be(default);
public async Task GetAllIdsAsync_GivenSingleSeiyuu_ShouldReturnSingle() { // Given var dbContext = InMemoryDbProvider.GetDbContext(); var repository = new SeiyuuRepository(dbContext); var seiyuu = new SeiyuuBuilder().WithName("Test1").Build(); await dbContext.Seiyuus.AddAsync(seiyuu); await dbContext.SaveChangesAsync(); // When var result = await repository.GetAllIdsAsync(); // Then result.Should().HaveCount(1); }
public async Task GetAsync_GivenExistingSeiyuuWithId_ShouldReturnResult() { // Given var dbContext = InMemoryDbProvider.GetDbContext(); var repository = new SeiyuuRepository(dbContext); var seiyuu = new SeiyuuBuilder().WithMalId(1).Build(); await dbContext.Seiyuus.AddAsync(seiyuu); await dbContext.SaveChangesAsync(); // When var result = await repository.GetAsync(1); // Then result.Should().NotBeNull(); }
public async Task AddAsync_GivenSeiyuu_ShouldAdd() { // Given var dbContext = InMemoryDbProvider.GetDbContext(); var repository = new SeiyuuRepository(dbContext); const string expectedName = "ExpectedName"; const string expectedImageUrl = "ExpectedImageUrl"; const string expectedKanjiName = "期待される日本語タイトル"; const string expectedAbout = "ExpectedAbout"; var expectedDateOfBirth = new DateTime(1990, 1, 1); const int expectedPopularity = 1000; const long expectedMalId = 1; var seiyuu = new SeiyuuBuilder() .WithName(expectedName) .WithImageUrl(expectedImageUrl) .WithMalId(expectedMalId) .WithJapaneseName(expectedKanjiName) .WithAbout(expectedAbout) .WithBirthday(expectedDateOfBirth) .WithPopularity(expectedPopularity) .Build(); // When await repository.AddAsync(seiyuu); // Then var allAnime = await dbContext.Seiyuus.ToListAsync(); var newSeiyuu = await dbContext.Seiyuus.FirstOrDefaultAsync(); using (new AssertionScope()) { allAnime.Should().ContainSingle(); newSeiyuu.Should().NotBeNull(); newSeiyuu.Name.Should().Be(expectedName); newSeiyuu.ImageUrl.Should().Be(expectedImageUrl); newSeiyuu.MalId.Should().Be(expectedMalId); newSeiyuu.KanjiName.Should().Be(expectedKanjiName); newSeiyuu.Birthday.Should().Be(expectedDateOfBirth); newSeiyuu.About.Should().Be(expectedAbout); newSeiyuu.Popularity.Should().Be(expectedPopularity); } }
public async Task GetAsync_GivenExistingSeiyuuWithId_ShouldReturnResultWithEntities() { // Given const string expectedName = "ExpectedName"; const string expectedImageUrl = "ExpectedImageUrl"; const string expectedKanjiName = "期待される日本語タイトル"; const string expectedAbout = "ExpectedAbout"; var expectedDateOfBirth = new DateTime(1990, 1, 1); const int expectedPopularity = 1000; const long expectedMalId = 1; var seiyuu = new SeiyuuBuilder() .WithName(expectedName) .WithImageUrl(expectedImageUrl) .WithMalId(expectedMalId) .WithJapaneseName(expectedKanjiName) .WithAbout(expectedAbout) .WithBirthday(expectedDateOfBirth) .WithPopularity(expectedPopularity) .Build(); var dbContext = InMemoryDbProvider.GetDbContext(); var repository = new SeiyuuRepository(dbContext); await dbContext.Seiyuus.AddAsync(seiyuu); await dbContext.SaveChangesAsync(); // When var result = await repository.GetAsync(1); // Then using (new AssertionScope()) { result.Should().NotBeNull(); result.Name.Should().Be(expectedName); result.ImageUrl.Should().Be(expectedImageUrl); result.MalId.Should().Be(expectedMalId); result.KanjiName.Should().Be(expectedKanjiName); result.Birthday.Should().Be(expectedDateOfBirth); result.About.Should().Be(expectedAbout); result.Popularity.Should().Be(expectedPopularity); } }
public async Task GetAllSeiyuuRolesByMalIdAsync_GivenNoRolesForAnime_ShouldReturnEmpty() { // Given const int seiyuuMalId = 1; var dbContext = InMemoryDbProvider.GetDbContext(); var repository = new SeiyuuRoleRepository(dbContext); var seiyuu = new SeiyuuBuilder().WithMalId(2).Build(); await dbContext.AddAsync(seiyuu); await dbContext.SaveChangesAsync(); // When var result = await repository.GetAllSeiyuuRolesByMalIdAsync(seiyuuMalId, false); // Then result.Should().BeEmpty(); }
public SeasonSummaryEntryBuilder WithSeiyuu(Action <SeiyuuBuilder> builderAction) { _seiyuuBuilder = new SeiyuuBuilder(); builderAction(_seiyuuBuilder); return(this); }
public async Task HandleAsync_GivenNotExistingJapanesePersonWithRolesAndNullResponsesFromCharacterAndAnimeRequests_ShouldInsertNewSeiyuuWithoutroles() { // Given const long animeMalId = 100; const long characterMalId = 1000; var dbContext = InMemoryDbProvider.GetDbContext(); const int startingSeiyuuMalId = 1; var s3Service = new S3ServiceStub(startingSeiyuuMalId); const string returnedSeiyuuName = "PostUpdateSeiyuuName"; const string returnedSeiyuuAbout = "PostUpdateSeiyuuAbout"; const string returnedSeiyuuGivenName = "花澤"; const string returnedSeiyuuFamilyNameName = "香菜"; const string returnedSeiyuuImageUrl = "PostUpdateSeiyuuImageUrl"; const int returnedSeiyuuPopularity = 1; var returnedBirthdate = new DateTime(1990, 1, 1); var returnedSeiyuu = new Person { Name = returnedSeiyuuName, About = returnedSeiyuuAbout, GivenName = returnedSeiyuuGivenName, FamilyName = returnedSeiyuuFamilyNameName, Images = new ImagesSet { JPG = new Image { ImageUrl = returnedSeiyuuImageUrl } }, MemberFavorites = returnedSeiyuuPopularity, Birthday = returnedBirthdate }; var returnedRoles = new List <VoiceActingRole> { new VoiceActingRole { Role = "Main", Anime = new MalImageSubItem { MalId = animeMalId }, Character = new MalImageSubItem() { MalId = characterMalId } } }; var jikanServiceBuilder = new JikanServiceBuilder() .WithPersonReturned(returnedSeiyuu, returnedRoles) .WithCharacterReturned(null) .WithAnimeReturned(null); var anime = new SeiyuuBuilder() .WithMalId(startingSeiyuuMalId) .Build(); await dbContext.AddAsync(anime); await dbContext.SaveChangesAsync(); var handler = CreateHandler(dbContext, jikanServiceBuilder.Build(), s3Service, 1); // When await handler.HandleAsync(); // Then jikanServiceBuilder.JikanClient.Verify(x => x.GetPersonAsync(startingSeiyuuMalId + 1), Times.Once); jikanServiceBuilder.JikanClient.Verify(x => x.GetAnimeAsync(animeMalId), Times.Once); jikanServiceBuilder.JikanClient.Verify(x => x.GetCharacterAsync(characterMalId), Times.Once); dbContext.Seiyuus.Should().HaveCount(2); dbContext.AnimeRoles.Should().BeEmpty(); }
public SeiyuuComparisonSubEntryBuilder WithSeiyuu(Action <SeiyuuBuilder> builderAction) { _seiyuuBuilder = new SeiyuuBuilder(); builderAction(_seiyuuBuilder); return(this); }
public async Task HandleAsync_GivenNotExistingJapanesePersonWithSingleRoles_ShouldInsertNewSeiyuuWithRole() { // Given const long animeMalId = 100; const long characterMalId = 1000; var dbContext = InMemoryDbProvider.GetDbContext(); const int startingSeiyuuMalId = 1; var s3Service = new S3ServiceStub(startingSeiyuuMalId); const string returnedSeiyuuName = "PostUpdateSeiyuuName"; const string returnedSeiyuuAbout = "PostUpdateSeiyuuAbout"; const string returnedSeiyuuGivenName = "花澤"; const string returnedSeiyuuFamilyNameName = "香菜"; const string returnedSeiyuuImageUrl = "PostUpdateSeiyuuImageUrl"; const int returnedSeiyuuPopularity = 1; var returnedBirthdate = new DateTime(1990, 1, 1); const string returnedCharacterName = "PostUpdateName"; const string returnedCharacterAbout = "PostUpdateAbout"; const string returnedCharacterJapaneseName = "PostUpdateJapanese"; const string returnedCharacterImageUrl = "PostUpdateImageUrl"; const int returnedCharacterPopularity = 1; const string returnedAnimeTitle = "PostUpdateTitle"; const string returnedAnimeAbout = "PostUpdateAbout"; const string returnedAnimeEnglishTitle = "PostUpdateEnglish"; const string returnedAnimeJapaneseTitle = "PostUpdateJapanese"; const string returnedAnimeImageUrl = "PostUpdateImageUrl"; const int returnedAnimePopularity = 3; var returnedSeiyuu = new Person { Name = returnedSeiyuuName, About = returnedSeiyuuAbout, GivenName = returnedSeiyuuGivenName, FamilyName = returnedSeiyuuFamilyNameName, Images = new ImagesSet { JPG = new Image { ImageUrl = returnedSeiyuuImageUrl } }, MemberFavorites = returnedSeiyuuPopularity, Birthday = returnedBirthdate }; var returnedRoles = new List <VoiceActingRole> { new VoiceActingRole { Role = "Main", Anime = new MalImageSubItem { MalId = animeMalId }, Character = new MalImageSubItem() { MalId = characterMalId } } }; var returnedCharacter = new Character { MalId = characterMalId, Name = returnedCharacterName, About = returnedCharacterAbout, NameKanji = returnedCharacterJapaneseName, Images = new ImagesSet { JPG = new Image { ImageUrl = returnedCharacterImageUrl } }, Nicknames = new List <string>(), Favorites = returnedCharacterPopularity }; var returnedAnime = new Anime { MalId = animeMalId, Title = returnedAnimeTitle, Synopsis = returnedAnimeAbout, TitleEnglish = returnedAnimeEnglishTitle, TitleJapanese = returnedAnimeJapaneseTitle, Images = new ImagesSet { JPG = new Image { ImageUrl = returnedAnimeImageUrl } }, TitleSynonyms = new List <string>(), Members = returnedAnimePopularity }; var jikanServiceBuilder = new JikanServiceBuilder() .WithPersonReturned(returnedSeiyuu, returnedRoles) .WithCharacterReturned(returnedCharacter) .WithAnimeReturned(returnedAnime); var anime = new SeiyuuBuilder() .WithMalId(startingSeiyuuMalId) .Build(); await dbContext.AddAsync(anime); await dbContext.SaveChangesAsync(); var handler = CreateHandler(dbContext, jikanServiceBuilder.Build(), s3Service, 1); // When await handler.HandleAsync(); // Then jikanServiceBuilder.JikanClient.Verify(x => x.GetPersonAsync(startingSeiyuuMalId + 1), Times.Once); jikanServiceBuilder.JikanClient.Verify(x => x.GetAnimeAsync(animeMalId), Times.Once); jikanServiceBuilder.JikanClient.Verify(x => x.GetCharacterAsync(characterMalId), Times.Once); using (new AssertionScope()) { dbContext.Seiyuus.Should().HaveCount(2); dbContext.Animes.Should().ContainSingle(); dbContext.AnimeCharacters.Should().ContainSingle(); dbContext.AnimeRoles.Should().ContainSingle(); } }
public async Task HandleAsync_GivenNotExistingNonJapanesePersonWithRoles_ShouldSkipAndNotInsert() { // Given const long animeMalId = 100; const long characterMalId = 1000; var dbContext = InMemoryDbProvider.GetDbContext(); const int startingSeiyuuMalId = 1; var s3Service = new S3ServiceStub(startingSeiyuuMalId); const string returnedSeiyuuName = "PostUpdateSeiyuuName"; const string returnedSeiyuuAbout = "PostUpdateSeiyuuAbout"; const string returnedSeiyuuGivenName = "John"; const string returnedSeiyuuFamilyNameName = "Doe"; const string returnedSeiyuuImageUrl = "PostUpdateSeiyuuImageUrl"; const int returnedSeiyuuPopularity = 1; var returnedBirthdate = new DateTime(1990, 1, 1); var returnedSeiyuu = new Person { Name = returnedSeiyuuName, More = returnedSeiyuuAbout, GivenName = returnedSeiyuuGivenName, FamilyName = returnedSeiyuuFamilyNameName, ImageURL = returnedSeiyuuImageUrl, MemberFavorites = returnedSeiyuuPopularity, Birthday = returnedBirthdate, VoiceActingRoles = new List <VoiceActingRole> { new VoiceActingRole { Role = "Main", Anime = new MALImageSubItem { MalId = animeMalId }, Character = new MALImageSubItem { MalId = characterMalId } } } }; var jikanServiceBuilder = new JikanServiceBuilder().WithPersonReturned(returnedSeiyuu); var anime = new SeiyuuBuilder() .WithMalId(startingSeiyuuMalId) .Build(); await dbContext.AddAsync(anime); await dbContext.SaveChangesAsync(); var handler = CreateHandler(dbContext, jikanServiceBuilder.Build(), s3Service, 5); // When await handler.HandleAsync(); // Then jikanServiceBuilder.JikanClient.Verify(x => x.GetPerson(startingSeiyuuMalId + 1), Times.Once); dbContext.Seiyuus.Should().ContainSingle(); }