public async Task <ValidationResult> Handle(UpdateCardPriorityInColumnCommand request, CancellationToken cancellationToken) { if (!request.IsValid()) { return(request.ValidationResult); } var board = await _boardRepository.GetById(request.BoardId); if (board == null) { AddError(UserMessages.NotFound.Format("Board").Message); return(ValidationResult); } if (!board.ColumnExists(request.ColumnId)) { AddError(UserMessages.NotFound.Format("Column").Message); return(ValidationResult); } if (!board.CardExistsInColumn(request.ColumnId, request.CardId)) { AddError(UserMessages.NotFound.Format("Card").Message); return(ValidationResult); } board.UpdateCardPriorityInColumn(request.ColumnId, request.CardId, request.NewCardPriorityInColumn); return(await Commit(_boardRepository.UnitOfWork)); }
public async Task Handle_UpdateCardPriorityInColumnCommand_ShouldFailValidation_WhenNewPriorityInColumnLessThanOne() { // Arrange var command = new UpdateCardPriorityInColumnCommand(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), 0); // Act var validationResult = await _boardCommandHandler.Handle(command, CancellationToken.None); // Assert Assert.False(validationResult.IsValid); Assert.Single(validationResult.Errors); Assert.Equal(UserMessages.MustBeGreatherThan.Format("NewCardPriorityInColumn", 0).Message, validationResult.Errors.First().ErrorMessage); }
public async Task Handle_UpdateCardPriorityInColumnCommand_ShouldFailValidation_WhenEmptyCardId() { // Arrange var command = new UpdateCardPriorityInColumnCommand(Guid.NewGuid(), Guid.NewGuid(), Guid.Empty, 2); // Act var validationResult = await _boardCommandHandler.Handle(command, CancellationToken.None); // Assert Assert.False(validationResult.IsValid); Assert.Single(validationResult.Errors); Assert.Equal(UserMessages.RequiredField.Format("CardId").Message, validationResult.Errors.First().ErrorMessage); }
public async Task Handle_UpdateCardPriorityInColumnCommand_ShouldFailValidation_WhenColumnNotFoundInBoard() { // Arrange var board = new Board("Personal Board"); var command = new UpdateCardPriorityInColumnCommand(board.Id, Guid.NewGuid(), Guid.NewGuid(), 2); _autoMocker.GetMock <IBoardRepository>() .Setup(x => x.GetById(command.BoardId)).ReturnsAsync(board); // Act var validationResult = await _boardCommandHandler.Handle(command, CancellationToken.None); // Assert _autoMocker.GetMock <IBoardRepository>() .Verify(x => x.GetById(It.Is <Guid>(x => x.Equals(command.BoardId))), Times.Once); Assert.False(validationResult.IsValid); Assert.Single(validationResult.Errors); Assert.Equal(UserMessages.NotFound.Format("Column").Message, validationResult.Errors.First().ErrorMessage); }
public async Task Handle_UpdateCardPriorityInColumnCommand_ShouldUpdateAndCommit_WhenValid() { // Arrange var board = new Board("Personal Board"); var column = new Column("To do"); board.AddColumn(column); var sleepCard = new Card("Sleep"); var workCard = new Card("Work"); board.AddCardToColumn(column.Id, sleepCard); board.AddCardToColumn(column.Id, workCard); var command = new UpdateCardPriorityInColumnCommand(board.Id, column.Id, sleepCard.Id, 2); _autoMocker.GetMock <IBoardRepository>() .Setup(x => x.GetById(command.BoardId)).ReturnsAsync(board); _autoMocker.GetMock <IBoardRepository>() .Setup(x => x.UnitOfWork).Returns(_autoMocker.GetMock <IUnitOfWork>().Object); _autoMocker.GetMock <IUnitOfWork>() .Setup(x => x.Commit()).Returns(Task.FromResult(true)); // Act var validationResult = await _boardCommandHandler.Handle(command, CancellationToken.None); // Assert _autoMocker.GetMock <IBoardRepository>() .Verify(x => x.GetById(It.Is <Guid>(x => x.Equals(command.BoardId))), Times.Once); _autoMocker.GetMock <IUnitOfWork>() .Verify(x => x.Commit(), Times.Once); Assert.True(validationResult.IsValid); }