コード例 #1
0
        public async Task <CreateCustomerCommandResponse> Handle(CreateCustomerCommand request, CancellationToken cancellationToken)
        {
            var response = new CreateCustomerCommandResponse();

            var validator = new CreateCustomerCommandValidator();
            var result    = await validator.ValidateAsync(request);

            if (result.Errors.Count > 0)
            {
                response.Success          = false;
                response.ValidationErrors = new List <string>();
                foreach (var error in result.Errors)
                {
                    response.ValidationErrors.Add(error.ErrorMessage);
                }
            }

            if (result.Errors.Count > 0)
            {
                throw new ValidationException(result);
            }

            if (response.Success)
            {
                var customer = _mapper.Map <Customer>(request);
                customer = await _customerRepository.AddAsync(customer);

                response.Customer = _mapper.Map <CreateCustomerViewModel>(customer);
            }
            return(response);
        }
コード例 #2
0
 public CreateCustomerHandlerTest(QueryTestFixture fixture)
 {
     _unitOfWork    = fixture.UnitOfWork;
     _bus           = fixture.Bus;
     _notifications = fixture.Notifications;
     _validator     = new CreateCustomerCommandValidator();
 }
コード例 #3
0
        public void CreateCustomerCommand_EmptyFirstName_ReturnError()
        {
            var command = new CreateCustomerCommand()
            {
                FirstName = string.Empty,
                LastName  = "Kent",
                Dob       = new DateTime(1990, 1, 2)
            };

            var validator = new CreateCustomerCommandValidator();

            validator.ShouldHaveValidationErrorFor(x => x.FirstName, command);
        }
        public void FailsIfEmailInvalid(string email, bool expectedValid)
        {
            var command = new CreateCustomerCommand
            {
                FirstName    = "Herbert",
                LastName     = "Scrackle",
                EmailAddress = email
            };

            var sut = new CreateCustomerCommandValidator();

            var result = sut.Validate(command);

            result.IsValid.Should().Be(expectedValid);
        }
        public void FailsIfLastNameNotProvided(string lastName, bool expectedValid)
        {
            var command = new CreateCustomerCommand
            {
                FirstName    = "Herbert",
                LastName     = lastName,
                EmailAddress = "*****@*****.**"
            };

            var sut = new CreateCustomerCommandValidator();

            var result = sut.Validate(command);

            result.IsValid.Should().Be(expectedValid);
        }
        public async Task ValidateAsync_InvalidCommand_ValidationResultIsNotValid()
        {
            // Arrange
            var validator = new CreateCustomerCommandValidator();
            var command   = new CreateCustomerCommand
            {
                Name = "John Doe"
            };

            // Act
            var result = await validator.ValidateAsync(command);

            // Assert
            result.Should().NotBeNull();
            result.IsValid.Should().BeFalse();
            result.Errors.Should().NotBeEmpty();
        }
        public void ItShouldCreateIfNewCustomer()
        {
            Customer customer  = null;
            var      readStore = new Mock <ICustomerRepository>();

            readStore.Setup(_ => _.GetCustomerById(It.IsAny <int>())).ReturnsAsync(customer);

            var sut    = new CreateCustomerCommandValidator(readStore.Object);
            var result = sut.Validate(new CreateCustomerCommand
            {
                Id        = 1,
                FirstName = "first",
                LastName  = "last",
            });

            result.IsValid.ShouldBe(true);
        }
        public async Task ValidateAsync_ValidCommand_ValidationResultIsValid()
        {
            // Arrange
            var validator = new CreateCustomerCommandValidator();
            var command   = new CreateCustomerCommand
            {
                Name        = "John Doe",
                Age         = 30,
                PhoneNumber = 123456789,
                Website     = "https://www.example.com"
            };

            // Act
            var result = await validator.ValidateAsync(command);

            // Assert
            result.Should().NotBeNull();
            result.IsValid.Should().BeTrue();
            result.Errors.Should().BeEmpty();
        }
        public void ItShouldNotCreateIfExists()
        {
            var customer = new Customer {
                CustomerId = 1
            };
            var readStore = new Mock <ICustomerRepository>();

            readStore.Setup(_ => _.GetCustomerById(It.IsAny <int>())).ReturnsAsync(customer);

            var sut    = new CreateCustomerCommandValidator(readStore.Object);
            var result = sut.Validate(new CreateCustomerCommand
            {
                Id        = 1,
                FirstName = "first",
                LastName  = "last",
            });

            result.IsValid.ShouldBe(false);
            result.Errors[0].ErrorMessage.ShouldBe("Customer already exists");
        }
コード例 #10
0
 /// <summary>
 /// Returns true if ... is valid.
 /// </summary>
 /// <returns><c>true</c> if this instance is valid; otherwise, <c>false</c>.</returns>
 public override bool IsValid()
 {
     ValidationResult = new CreateCustomerCommandValidator().Validate(this);
     return(ValidationResult.IsValid);
 }
コード例 #11
0
 public void TestInitialize()
 {
     _validator = new CreateCustomerCommandValidator();
 }