public async Task <CreatedActionResult <ActiveStatsModifier> > PostAddModifiersAsync( [FromServices] NaheulbookExecutionContext executionContext, [FromRoute] int characterId, AddCharacterModifierRequest request ) { try { var item = await _characterService.AddModifiersAsync(executionContext, characterId, request); return(_mapper.Map <ActiveStatsModifier>(item)); } catch (ForbiddenAccessException ex) { throw new HttpErrorException(StatusCodes.Status403Forbidden, ex); } catch (CharacterNotFoundException ex) { throw new HttpErrorException(StatusCodes.Status404NotFound, ex); } }
public async Task AddModifiersAsync_ShouldAddCharacterModifier() { const int characterId = 4; var executionContext = new NaheulbookExecutionContext(); var character = new Character(); var request = new AddCharacterModifierRequest(); var characterModifier = new CharacterModifier(); _mapper.Map <CharacterModifier>(request) .Returns(characterModifier); _unitOfWorkFactory.GetUnitOfWork().Characters.GetWithGroupAsync(characterId) .Returns(character); var actualCharacterModifier = await _service.AddModifiersAsync(executionContext, characterId, request); Received.InOrder(() => { _unitOfWorkFactory.GetUnitOfWork().CharacterModifiers.Add(characterModifier); _unitOfWorkFactory.GetUnitOfWork().Received(1).SaveChangesAsync(); }); actualCharacterModifier.Should().BeSameAs(characterModifier); }
public async Task AddModifiersAsync_ShouldLog() { const int characterId = 4; var character = new Character(); var characterHistoryEntry = new CharacterHistoryEntry(); var request = new AddCharacterModifierRequest(); var characterModifier = new CharacterModifier(); _mapper.Map <CharacterModifier>(request) .Returns(characterModifier); _unitOfWorkFactory.GetUnitOfWork().Characters.GetWithGroupAsync(characterId) .Returns(character); _characterHistoryUtil.CreateLogAddModifier(character, characterModifier) .Returns(characterHistoryEntry); await _service.AddModifiersAsync(new NaheulbookExecutionContext(), characterId, request); Received.InOrder(() => { _unitOfWorkFactory.GetUnitOfWork().CharacterHistoryEntries.Add(characterHistoryEntry); _unitOfWorkFactory.GetUnitOfWork().Received(1).SaveChangesAsync(); }); }
public async Task <CharacterModifier> AddModifiersAsync(NaheulbookExecutionContext executionContext, int characterId, AddCharacterModifierRequest request) { using (var uow = _unitOfWorkFactory.CreateUnitOfWork()) { var character = await uow.Characters.GetWithGroupAsync(characterId); if (character == null) { throw new CharacterNotFoundException(characterId); } _authorizationUtil.EnsureCharacterAccess(executionContext, character); var characterModifier = _mapper.Map <CharacterModifier>(request); characterModifier.Character = character; uow.CharacterModifiers.Add(characterModifier); uow.CharacterHistoryEntries.Add(_characterHistoryUtil.CreateLogAddModifier(character, characterModifier)); await uow.SaveChangesAsync(); var session = _notificationSessionFactory.CreateSession(); session.NotifyCharacterAddModifier(characterId, characterModifier); await session.CommitAsync(); return(characterModifier); } }