public async Task <Item> AddItemToCharacterAsync(NaheulbookExecutionContext executionContext, int characterId, CreateItemRequest 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 item = await _itemService.AddItemToAsync(ItemOwnerType.Character, characterId, request); using (var uow = _unitOfWorkFactory.CreateUnitOfWork()) { uow.CharacterHistoryEntries.Add(_characterHistoryUtil.CreateLogAddItem(characterId, item)); await uow.SaveChangesAsync(); } var session = _notificationSessionFactory.CreateSession(); session.NotifyCharacterAddItem(characterId, item); await session.CommitAsync(); return(item); }
public async Task AddItemToCharacterAsync_ShouldAddACharacterHistoryEntry() { const int characterId = 4; var item = new Item(); var expectedCharacterHistoryEntry = new CharacterHistoryEntry(); _unitOfWorkFactory.GetUnitOfWork().Characters.GetWithGroupAsync(Arg.Any <int>()) .Returns(new Character { Id = characterId }); _itemService.AddItemToAsync(Arg.Any <ItemOwnerType>(), Arg.Any <int>(), Arg.Any <CreateItemRequest>()) .Returns(item); _characterHistoryUtil.CreateLogAddItem(characterId, item) .Returns(expectedCharacterHistoryEntry); await _service.AddItemToCharacterAsync(new NaheulbookExecutionContext(), characterId, new CreateItemRequest()); Received.InOrder(() => { _unitOfWorkFactory.GetUnitOfWork(1).CharacterHistoryEntries.Add(expectedCharacterHistoryEntry); _unitOfWorkFactory.GetUnitOfWork(1).SaveChangesAsync(); }); }