Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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();
 }