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(); }
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); }
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()); }
private void NotifyCanExecuteCommands() { if (EditAnswerCommand == null || DeleteAnswerCommand == null) { return; } EditAnswerCommand.NotifyCanExecuteChanged(); DeleteAnswerCommand.NotifyCanExecuteChanged(); }
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.")); }
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)); } }
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); }