示例#1
0
        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);
        }