public async Task <CommandResult> Handle(DeleteDeckCommand request, CancellationToken cancellationToken) { var commandResult = new CommandResult(); var isOwnerOfDeck = await _userService.IsUserDeckOwner(request.Deck.UserId, request.Deck.Id.GetValueOrDefault()); if (isOwnerOfDeck) { await _deckService.DeleteDeckByIdAndUserId(request.Deck.UserId, request.Deck.Id.GetValueOrDefault()); commandResult.Data = request.Deck.Id.GetValueOrDefault(); commandResult.IsSuccessful = true; } else { commandResult.Errors = new List <string> { "Insufficient permissions to delete this deck." }; } return(commandResult); }
public async Task Given_A_Deck_If_User_Is_Owner_Should_Delete_Deck() { // Arrange var deck = new DeckInputModel { Id = 3242, MainDeck = new List <CardInputModel>() }; var command = new DeleteDeckCommand { Deck = deck }; _deckService.DeleteDeckByIdAndUserId(Arg.Any <string>(), Arg.Any <long>()).Returns(3242); _userService.IsUserDeckOwner(Arg.Any <string>(), Arg.Any <long>()).Returns(true); // Act await _sut.Handle(command, CancellationToken.None); // Assert await _deckService.Received(1).DeleteDeckByIdAndUserId(Arg.Any <string>(), Arg.Any <long>()); }