public async Task <ActionResult <CharacterResponse> > PutTemporaryHp(Guid id, [FromBody] TemporaryHpRequest request) { try { var command = request.ToCommand(); var view = await _applicationService.AddTemporaryHpAsync(id, command); return(new CharacterResponse(view)); } catch (CharacterNotFoundException e) { return(NotFound(new ErrorResponse(e))); } catch (Exception e) { _logger.LogError(e, "Unhandled exception in /characters/<id>/buff PUT"); return(StatusCode(500, new ErrorResponse(e))); } }
public async Task AddTemporaryHpAsync_ShouldAddTempHpAndReturnCharacterView() { // Arrange var id = Guid.NewGuid(); var character = new Character("SomeName", new HitPoints(42)); var temporaryHp = new AddTemporaryHp { TemporaryHp = 5 }; _characterRepository.Setup(x => x.GetByIdAsync(It.Is <Guid>(expected => expected == id))) .ReturnsAsync(character); _characterRepository.Setup(x => x.SaveAsync(It.IsAny <Character>())); _eventBus.Setup(x => x.PublishAsync <CharacterView>(It.IsAny <CharacterView>())); // Act CharacterView result = await _instance.AddTemporaryHpAsync(id, temporaryHp); // Assert _characterRepository.Verify(x => x.SaveAsync(It.Is <Character>(expected => expected == character)), Times.Once); _eventBus.Verify(x => x.PublishAsync <CharacterView>(It.Is <CharacterView>(expected => expected == result)), Times.Once); result.CurrentHp.Should().Be(42); result.TemporaryHp.Should().Be(5); }