public async Task Handle_UpdateStatementAmountCommand_Invalid_Id() { //arrange Guid STATEMENT_ID = Guid.NewGuid(); var command = new UpdateStatementAmountCommand() { Id = Guid.NewGuid(), Amount = 123.45, IsPaid = true }; _mocker.GetMock<IStatementRepository>() .Setup(m => m.GetById(It.Is<Guid>(id => id == STATEMENT_ID))) .Returns(value: new Statement()); _mocker.GetMock<IStatementRepository>() .Setup(m => m.GetById(It.Is<Guid>(id => id != STATEMENT_ID))) .Returns(value: null) .Verifiable("IStatementRepository.GetById should have been called"); _mocker.GetMock<IMediatorHandler>() .Setup(m => m.RaiseEvent(It.IsAny<NotFoundEvent>())) .Verifiable("An event NotFoundEvent should have been raised"); //act var result = await _statementCommandHandler.Handle(command, CancellationToken.None); //assert _mocker.GetMock<IStatementRepository>().Verify(); _mocker.GetMock<IInvoiceRepository>().Verify(); _mocker.GetMock<IMediatorHandler>().Verify(); Assert.False(result); }
private UpdateStatementAmountCommand GetValidCommand() { var command = new UpdateStatementAmountCommand(); command.Amount = 123; command.IsPaid = true; command.Id = Guid.NewGuid(); return(command); }
public void IsValid_Valid_Id() { // Arrange _command = GetValidCommand(); // Act var result = _command.IsValid(); // Assert Assert.True(result); }
public void IsValid_Invalid_Amount() { // Arrange _command = GetValidCommand(); _command.Amount = -1; // Act var result = _command.IsValid(); // Assert Assert.False(result); }
public async Task Handle_UpdateStatementAmountCommand_Return_True() { //arrange Guid STATEMENT_ID = Guid.NewGuid(); double oldAmount = 123; var oldIsPaid = false; var command = new UpdateStatementAmountCommand() { Id = STATEMENT_ID, Amount = 123.45, IsPaid = true }; _mocker.GetMock<IStatementRepository>() .Setup(m => m.GetById(It.Is<Guid>(id => id == STATEMENT_ID))) .Returns(value: new Statement() { Amount = oldAmount, IsPaid = oldIsPaid }) .Verifiable("IStatementRepository.GetById should have been called"); _mocker.GetMock<IStatementRepository>() .Setup(m => m.UpdateAsync(It.IsAny<Statement>())) .Verifiable("IStatementRepository.Update should have been called"); StatementUpdatedEvent statementEvent = null; _mocker.GetMock<IMediatorHandler>() .Setup(m => m.RaiseEvent(It.IsAny<StatementUpdatedEvent>())) .Callback<StatementUpdatedEvent>(e => statementEvent = e); //act var result = await _statementCommandHandler.Handle(command, CancellationToken.None); //assert _mocker.GetMock<IStatementRepository>().Verify(); _mocker.GetMock<IInvoiceRepository>().Verify(); _mocker.GetMock<IMediatorHandler>().Verify(); Assert.True(result); Assert.NotNull(statementEvent); Assert.Equal(command.IsPaid, statementEvent.New.IsPaid); Assert.Equal(oldIsPaid, statementEvent.Old.IsPaid); Assert.Equal(command.Amount, statementEvent.New.Amount); Assert.Equal(oldAmount, statementEvent.Old.Amount); }
public async Task <bool> Handle(UpdateStatementAmountCommand request, CancellationToken cancellationToken) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (!request.IsValid()) { await _mediatorHandler.RaiseEvent( new DomainValidationEvent(request.ValidationResult.ToString())); return(false); } var oldStatement = _statementRepository.GetById(request.Id); if (oldStatement == null) { await _mediatorHandler.RaiseEvent(new NotFoundEvent(request.Id, "Statement", "Statement not found.")); return(false); } var newStatement = (Statement)oldStatement.Clone(); newStatement.Amount = request.Amount; newStatement.IsPaid = request.IsPaid; await _statementRepository.UpdateAsync(newStatement); await _mediatorHandler.RaiseEvent(new StatementUpdatedEvent() { Old = oldStatement, New = newStatement }); return(true); }
public UpdateStatementAmountCommandTests() { _command = new UpdateStatementAmountCommand(); }