public async Task PutEditEffect_CallEffectService() { var editEffectRequest = new EditEffectRequest(); var expectedEffectResponse = new EffectResponse(); var effect = new Effect { Id = 42 }; _effectService.EditEffectAsync(_executionContext, 42, editEffectRequest) .Returns(effect); _mapper.Map <EffectResponse>(effect) .Returns(expectedEffectResponse); var result = await _effectsController.PutEditEffectAsync(_executionContext, 42, editEffectRequest); result.Value.Should().Be(expectedEffectResponse); await _effectService.Received(1) .EditEffectAsync(_executionContext, 42, editEffectRequest); }
public async Task <ActionResult <EffectResponse> > PutEditEffectAsync( [FromServices] NaheulbookExecutionContext executionContext, [FromRoute] int effectId, EditEffectRequest request ) { try { var effect = await _effectService.EditEffectAsync(executionContext, effectId, request); var effectResponse = _mapper.Map <EffectResponse>(effect); return(effectResponse); } catch (ForbiddenAccessException ex) { throw new HttpErrorException(StatusCodes.Status403Forbidden, ex); } catch (EffectNotFoundException ex) { throw new HttpErrorException(StatusCodes.Status404NotFound, ex); } }
public async Task <Effect> EditEffectAsync(NaheulbookExecutionContext executionContext, int effectId, EditEffectRequest request) { await _authorizationUtil.EnsureAdminAccessAsync(executionContext); using (var uow = _unitOfWorkFactory.CreateUnitOfWork()) { var effect = await uow.Effects.GetWithModifiersAsync(effectId); if (effect == null) { throw new EffectNotFoundException(); } effect.Name = request.Name; effect.SubCategoryId = request.SubCategoryId; effect.Description = request.Description; effect.Dice = request.Dice; effect.TimeDuration = request.TimeDuration; effect.CombatCount = request.CombatCount; effect.Duration = request.Duration; effect.LapCount = request.LapCount; effect.DurationType = request.DurationType; effect.Modifiers = request.Modifiers.Select(s => new EffectModifier { StatName = s.Stat, Type = s.Type, Value = s.Value }).ToList(); await uow.SaveChangesAsync(); return(effect); } }