コード例 #1
0
        public async Task DeleteHandler_ShouldReturnSuccessfulResult_WhenRequestFromAuthor()
        {
            // Arrange
            var answer = new Answer
            {
                CreatedBy = "a62b5893-acca-422b-98d1-34784abf1069",
            };

            _mockAnswerRepository.Setup(a => a.GetByIdAsync(It.IsAny <long>())).ReturnsAsync(answer);

            const string authorUserId = "a62b5893-acca-422b-98d1-34784abf1069";

            _mockCurrentUserService.Setup(u => u.UserId).Returns(authorUserId);

            var deleteCommand = new DeleteAnswerCommand
            {
                Id = 4
            };

            // Act
            var result = await _handler.Handle(deleteCommand, CancellationToken.None);

            // Assert
            result.IsSucceeded.Should().BeTrue();
        }
コード例 #2
0
        public async Task DeleteHandler_ShouldReturnNoAccessReason_WhenRequestNotFromAuthor()
        {
            // Arrange
            var answer = new Answer
            {
                CreatedBy = "019505af-4ce9-41f9-beb5-e83155523e98",
            };

            _mockAnswerRepository.Setup(a => a.GetByIdAsync(It.IsAny <long>())).ReturnsAsync(answer);

            const string otherUserId = "2b8ff508-68a1-4a22-8497-e5e373567a77";

            _mockCurrentUserService.Setup(u => u.UserId).Returns(otherUserId);

            var deleteCommand = new DeleteAnswerCommand
            {
                Id = 4
            };

            // Act
            var result = await _handler.Handle(deleteCommand, CancellationToken.None);

            // Assert
            result.IsSucceeded.Should().BeFalse();
            result.ErrorReason.Should().Be(ErrorReason.HaveNoAccess);
        }
コード例 #3
0
 public async Task <ActionResult> DeleteAnswerAsync([FromQuery(Name = "id")] IEnumerable <Guid> ids, CancellationToken token)
 {
     foreach (var id in ids)
     {
         var command = new DeleteAnswerCommand(id);
         await _commandBus.DispatchAsync(command, token);
     }
     return(Ok());
 }
コード例 #4
0
        private void NotifyCanExecuteCommands()
        {
            if (EditAnswerCommand == null || DeleteAnswerCommand == null)
            {
                return;
            }

            EditAnswerCommand.NotifyCanExecuteChanged();
            DeleteAnswerCommand.NotifyCanExecuteChanged();
        }
コード例 #5
0
 private CommandResponse ExecuteDeleteAnswer(DeleteAnswerCommand command)
 {
     foreach (var q in Questions)
     {
         var answer = q.Answers.SingleOrDefault(a => a.Id == command.AnswerId);
         if (answer != null)
         {
             q.Answers.Remove(answer);
             return(CommandResponse.Success());
         }
     }
     return(CommandResponse.Failure($"Answer {command.AnswerId} doesn't exist."));
 }
コード例 #6
0
        public async Task <IActionResult> DeleteAnswerAsync([FromRoute] DeleteAnswerRequest model, CancellationToken token)
        {
            try
            {
                var command = new DeleteAnswerCommand(model.Id, _userManager.GetLongUserId(User));
                await _commandBus.DispatchAsync(command, token);

                return(Ok());
            }
            catch (ArgumentException)
            {
                ModelState.AddModelError(nameof(model.Id), _localizer["Answer does not exists"]);
                return(BadRequest(ModelState));
            }
        }
コード例 #7
0
        public async Task DeleteHandler_ShouldReturnNotFoundReason_WhenAnswerDoesntExist()
        {
            // Arrange
            _mockAnswerRepository.Setup(a => a.GetByIdAsync(It.IsAny <long>())).ReturnsAsync(() => null);

            var deleteCommand = new DeleteAnswerCommand
            {
                Id = 4
            };

            // Act
            var result = await _handler.Handle(deleteCommand, CancellationToken.None);

            // Assert
            result.IsSucceeded.Should().BeFalse();
            result.ErrorReason.Should().Be(ErrorReason.NotFound);
        }