public async Task <AnswerDTO> UpdateAnswer(EditAnswerRequest request, int answerId) { var answer = await _context.Answers .Where(x => x.Id == answerId) .FirstOrDefaultAsync(); answer.OptionId = request.OptionId; await _context.SaveChangesAsync(); return(_mapper.Map <AnswerDTO>(answer)); }
public void EditAnswer() { var updateEntityCommand = new Mock <IUpdateEntityCommand>(); var getEntityByIdQueryMock = new Mock <IGetEntityByIdQuery>(); var answer = new Answer { Id = AnswerId, Text = "Original Text", ResponseId = ResponseId }; getEntityByIdQueryMock.Setup(x => x.Execute <Answer>(AnswerId)).Returns(answer); var response = new Response { Id = ResponseId }; getEntityByIdQueryMock.Setup(x => x.Execute <Response>(ResponseId)).Returns(response); EditAnswerRequest request = new EditAnswerRequest(); request.Model = new EditAnswerModel() { AnswerId = AnswerId, UpdatedText = UpdatedText }; var timeProviderMock = new Mock <ITimeProvider>(); timeProviderMock.Setup(x => x.GetDateTimeNow()).Returns(Now); EditAnswerRequestHandler handler = new EditAnswerRequestHandler(updateEntityCommand.Object, getEntityByIdQueryMock.Object, timeProviderMock.Object); CancellationTokenSource cts = new CancellationTokenSource(); handler.Handle(request, cts.Token); getEntityByIdQueryMock.Verify(x => x.Execute <Answer>(AnswerId), Times.Once); getEntityByIdQueryMock.Verify(x => x.Execute <Response>(ResponseId), Times.Once); updateEntityCommand.Verify(x => x.Execute(It.Is <Answer>(a => a.Id == AnswerId && a.Text == UpdatedText)), Times.Once); updateEntityCommand.Verify(x => x.Execute(It.Is <Response>(a => a.Id == ResponseId && a.DateModified == Now)), Times.Once); }
public async Task <IActionResult> UpdateAnswer([FromRoute] int answerId, [FromBody] EditAnswerRequest request) { var result = await _answerService.UpdateAnswer(request, answerId); return(Ok(result)); }