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