protected override void PreRestart(Exception reason, object message) { UpdateCharacterMessage characterMessage = message as UpdateCharacterMessage; _logger.Error(reason, "Error processing candidate @CharacterID", characterMessage.CharacterID); base.PreRestart(reason, message); }
public async Task HandleAsync_GivenNullResponseFromJikan_ShouldNotThrowAndCallJikan() { // Given const int malId = 1; var dbContext = InMemoryDbProvider.GetDbContext(); var jikanServiceBuilder = new JikanServiceBuilder().WithCharacterReturned(null); var character = new CharacterBuilder() .WithMalId(malId) .Build(); await dbContext.AddAsync(character); await dbContext.SaveChangesAsync(); var handler = CreateHandler(dbContext, jikanServiceBuilder.Build()); var command = new UpdateCharacterMessage { Id = Guid.NewGuid(), MalId = malId }; // When var action = handler.Awaiting(x => x.HandleAsync(command)); // Then using (new AssertionScope()) { await action.Should().NotThrowAsync(); jikanServiceBuilder.JikanClient.Verify(x => x.GetCharacter(malId), Times.Once); } }
public async Task HandleAsync_GivenExceptionFromJikan_ShouldThrowAndCallJikan() { // Given const int malId = 1; var dbContext = InMemoryDbProvider.GetDbContext(); var jikanServiceBuilder = new JikanServiceBuilder().WithGetCharacterThrowing(); var anime = new CharacterBuilder() .WithMalId(malId) .Build(); await dbContext.AddAsync(anime); await dbContext.SaveChangesAsync(); var handler = CreateHandler(dbContext, jikanServiceBuilder.Build()); var command = new UpdateCharacterMessage { Id = Guid.NewGuid(), MalId = malId }; // When var action = handler.Awaiting(x => x.HandleAsync(command)); // Then using (new AssertionScope()) { await action.Should().ThrowExactlyAsync <JikanRequestException>(); jikanServiceBuilder.JikanClient.Verify(x => x.GetCharacter(malId), Times.Once); } }
public async Task HandleAsync_GivenEmptyDatabase_ShouldNotThrowAndNotCallJikan() { // Given var dbContext = InMemoryDbProvider.GetDbContext(); var jikanServiceBuilder = new JikanServiceBuilder(); var handler = CreateHandler(dbContext, jikanServiceBuilder.Build()); var command = new UpdateCharacterMessage { Id = Guid.NewGuid(), MalId = 1 }; // When var action = handler.Awaiting(x => x.HandleAsync(command)); // Then using (new AssertionScope()) { await action.Should().NotThrowAsync(); jikanServiceBuilder.JikanClient.Verify(x => x.GetCharacter(It.IsAny <long>()), Times.Never); } }
void ProcessNotifyCandidateMessage(UpdateCharacterMessage message) { Become(Busy); _characterMessage = message; _client.GetCharacter(message.CharacterID).PipeTo(Self, success: (successMessage) => new CharacterUpdated(successMessage), failure: (ex) => new FailureMessage(ex)); }
void UpdateCharacterData(UpdateCharacterMessage message) { if (_availableWorkers.Count > 0) { _availableWorkers.Dequeue().Tell(message); } else { _queue1.Enqueue(message); } }
public async Task PublishCharacterUpdateAsync(UpdateCharacterMessage updateCharacterMessage, int delayInSeconds = 0) { var sendMessageRequest = new SendMessageRequest { MessageBody = JsonSerializer.Serialize(updateCharacterMessage), QueueUrl = _queueUrl, DelaySeconds = delayInSeconds }; await _sqsService.SendMessageAsync(sendMessageRequest); }
public async Task HandleAsync_GivenManyNicknames_ShouldUpdateWithJoinedString() { // Given const int malId = 1; var nicknames = new List <string> { "Nickname 1", "Nickname 2", "Nickname 3" }; var returnedCharacter = new Character { Nicknames = nicknames }; var jikanServiceBuilder = new JikanServiceBuilder().WithCharacterReturned(returnedCharacter); var dbContext = InMemoryDbProvider.GetDbContext(); var character = new CharacterBuilder() .WithMalId(malId) .WithName("PreUpdateName") .WithAbout("PreUpdateAbout") .WithKanjiName("PreUpdateJapanese") .WithImageUrl("PreUpdateImageUrl") .WithPopularity(0) .Build(); await dbContext.AddAsync(character); await dbContext.SaveChangesAsync(); var handler = CreateHandler(dbContext, jikanServiceBuilder.Build()); var command = new UpdateCharacterMessage { Id = Guid.NewGuid(), MalId = malId }; // When await handler.HandleAsync(command); // Then var updatedCharacter = await dbContext.AnimeCharacters.FirstAsync(x => x.MalId == malId); using (new AssertionScope()) { updatedCharacter.Nicknames.Should().Be("Nickname 1;Nickname 2;Nickname 3"); jikanServiceBuilder.JikanClient.Verify(x => x.GetCharacter(malId), Times.Once); } }
private void HandleUpdateCharacterMessage(RestDataRequestMessage message, UpdateCharacterMessage messagecontent, ref RestResponse response, RestRequestMessage request) { var user = _context.FindUserBySessionCredentials(message.SessionCredentials); if (user == default) { return; } user.PlayerData.BodyProperties = messagecontent.BodyProperties; user.PlayerData.IsFemale = messagecontent.IsFemale; response.SetSuccessful(true, "ResultFromServerTask"); }
public async Task HandleAsync(UpdateCharacterMessage updateCharacterMessage) { var characterToUpdate = await _characterRepository.GetAsync(updateCharacterMessage.MalId); if (characterToUpdate == null) { return; } var updateData = await _malApiService.GetCharacterDataAsync(updateCharacterMessage.MalId); if (updateData == null) { return; } UpdateCharacter(characterToUpdate, updateData); await _characterRepository.UpdateAsync(characterToUpdate); }
public async Task HandleAsync_GivenCorrectResponse_ShouldUpdateBasicProperties() { // Given const int malId = 1; const string returnedName = "PostUpdateName"; const string returnedAbout = "PostUpdateAbout"; const string returnedJapaneseName = "PostUpdateJapanese"; const string returnedImageUrl = "PostUpdateImageUrl"; const int returnedPopularity = 1; var returnedCharacter = new Character { Name = returnedName, About = returnedAbout, NameKanji = returnedJapaneseName, ImageURL = returnedImageUrl, Nicknames = new List <string>(), MemberFavorites = returnedPopularity }; var dbContext = InMemoryDbProvider.GetDbContext(); var jikanServiceBuilder = new JikanServiceBuilder().WithCharacterReturned(returnedCharacter); var character = new CharacterBuilder() .WithMalId(malId) .WithName("PreUpdateName") .WithAbout("PreUpdateAbout") .WithKanjiName("PreUpdateJapanese") .WithImageUrl("PreUpdateImageUrl") .WithPopularity(0) .Build(); await dbContext.AddAsync(character); await dbContext.SaveChangesAsync(); var handler = CreateHandler(dbContext, jikanServiceBuilder.Build()); var command = new UpdateCharacterMessage { Id = Guid.NewGuid(), MalId = malId }; // When await handler.HandleAsync(command); // Then var updatedCharacter = await dbContext.AnimeCharacters.FirstAsync(x => x.MalId == malId); using (new AssertionScope()) { updatedCharacter.Name.Should().Be(returnedName); updatedCharacter.About.Should().Be(returnedAbout); updatedCharacter.KanjiName.Should().Be(returnedJapaneseName); updatedCharacter.ImageUrl.Should().Be(returnedImageUrl); updatedCharacter.Popularity.Should().Be(returnedPopularity); jikanServiceBuilder.JikanClient.Verify(x => x.GetCharacter(malId), Times.Once); } }