private UpdateStatementCommand GetValidCommand()
        {
            var command = new UpdateStatementCommand();
            command.Id = Guid.NewGuid();
            command.Date = DateTime.UtcNow;
            command.Notes.RandomString(500);
            command.Amount = 123;
            command.InvoiceId = Guid.NewGuid();

            return command;
        }
        public void IsValid_Amount_MinValue()
        {
            // Arrange
            _command = GetValidCommand();
            _command.Amount = -1;

            // Act
            var result = _command.IsValid();

            // Assert
            Assert.False(result);
        }
        public void IsValid_Notes_Null()
        {
            // Arrange
            _command = GetValidCommand();
            _command.Notes = null;

            // Act
            var result = _command.IsValid();

            // Assert
            Assert.True(result);
        }
        public void IsValid_Notes_MaxValue()
        {
            // Arrange
            _command = GetValidCommand();
            _command.Notes = _command.Notes.RandomString(501);

            // Act
            var result = _command.IsValid();

            // Assert
            Assert.False(result);
        }
        public void IsValid_Date_MinValue()
        {
            // Arrange
            _command = GetValidCommand();
            _command.Date = DateTime.MinValue;

            // Act
            var result = _command.IsValid();

            // Assert
            Assert.False(result);
        }
        public void IsValid_Id_Empty()
        {
            // Arrange
            _command = GetValidCommand();
            _command.Id = Guid.Empty;

            // Act
            var result = _command.IsValid();

            // Assert
            Assert.False(result);
        }
Beispiel #7
0
        public async Task Handle_UpdateStatementCommand_Return_True()
        {
            //arrange
            Guid INVOICE_ID = Guid.NewGuid();
            var command = new UpdateStatementCommand()
            {
                Id = Guid.NewGuid(),
                Amount = 123.45,
                Date = DateTime.UtcNow,
                Notes = "NOTES",
                InvoiceId = INVOICE_ID
            };

            _mocker.GetMock<IInvoiceRepository>()
                .Setup(m => m.GetById(It.Is<Guid>(id => id == INVOICE_ID)))
                .Returns(value: new Invoice())
                .Verifiable("IInvoiceRepository.GetById should have been called");

            _mocker.GetMock<IStatementRepository>()
                .Setup(m => m.GetById(It.IsAny<Guid>()))
                .Returns(value: new Statement())
                .Verifiable("IStatementRepository.GetById should have been called");

            _mocker.GetMock<IStatementRepository>()
                .Setup(m => m.GetByDate(It.IsAny<Guid>(), It.IsAny<DateTime>()))
                .Returns(value: null)
                .Verifiable("IStatementRepository.GetByName should have been called");

            _mocker.GetMock<IStatementRepository>()
                .Setup(m => m.UpdateAsync(It.IsAny<Statement>()))
                .Verifiable("IStatementRepository.Update should have been called");

            _mocker.GetMock<IMediatorHandler>()
                .Setup(m => m.RaiseEvent(It.IsAny<StatementUpdatedEvent>()))
                .Verifiable("An event StatementUpdatedEvent 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.True(result);
        }
Beispiel #8
0
        public async Task <bool> Handle(UpdateStatementCommand 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 invoice = _invoiceRepository.GetById(request.InvoiceId);

            if (invoice == null)
            {
                await _mediatorHandler.RaiseEvent(
                    new DomainValidationEvent(
                        "Statement Invoice ID does not exist. Please select a valid value."));

                return(false);
            }

            var getByDate = _statementRepository.GetByDate(request.InvoiceId, request.Date);

            if (getByDate != null && getByDate.Id != request.Id)
            {
                await _mediatorHandler.RaiseEvent(
                    new DuplicatedRecordEvent(
                        "Name",
                        "Statement",
                        "A Stement with {0} and {1} is already present. Please select another value."));

                return(false);
            }

            var model = _mapper.Map <Statement>(request);

            await _statementRepository.UpdateAsync(model);

            await _mediatorHandler.RaiseEvent(new StatementUpdatedEvent()
            {
                Old = oldStatement,
                New = model
            });

            return(true);
        }
 public UpdateStatementCommandTests()
 {
     _command = new UpdateStatementCommand();
 }