コード例 #1
0
            public void ShouldThrownArgumentNullExceptionForNullValidator(
                ProductValidationService sut)
            {
                Action a = () => sut.AddValidator(null !);

                a.Should().Throw <ArgumentNullException>();
            }
コード例 #2
0
            public void ShouldReturnResultOfValidator(
                bool valid,
                ProductValidationService sut)
            {
                Mock <IProductValidator> productValidatorMock = new Mock <IProductValidator>();

                productValidatorMock
                .Setup(validator => validator.Validate(It.IsAny <IProduct>()))
                .Returns(() =>
                {
                    if (valid)
                    {
                        return(new ValidationResult());
                    }
                    else
                    {
                        return(new ValidationResult(new[] { new ValidationFailure("Test", "Test validator") }));
                    }
                });

                sut.AddValidator(productValidatorMock.Object);

                IProduct product = new ProductFaker().Generate();

                ValidationResult result = sut.Validate(product);

                result.IsValid.Should().Be(valid);
            }
コード例 #3
0
            public void ShouldAddValidatorToValidators(
                ProductValidationService sut)
            {
                IProductValidator productValidator = new FakeProductValidator();

                sut.AddValidator(productValidator);

                sut.Validators.Should().Contain(productValidator);
            }
コード例 #4
0
            public void ShouldReturnValidWhenNoValidators(
                ProductValidationService sut)
            {
                IProduct product = new ProductFaker().Generate();

                ValidationResult result = sut.Validate(product);

                result.IsValid.Should().BeTrue();
            }
コード例 #5
0
        public void ValidateProductValidationService_NegativePriceProduct()
        {
            var testDbContext            = CreateInMemoryDBContext();
            var productValidationService = new ProductValidationService(testDbContext);
            var testProduct = new Product()
            {
                Id    = 1,
                Code  = "test1",
                Name  = "Prod 1",
                Price = -50
            };
            Exception ex = Assert.Throws <CustomValidationException>(() => productValidationService.ValidateProduct(testProduct));

            Assert.Equal("Product price should not be negative", ex.Message);
        }
コード例 #6
0
        public void CanNotSellAnExpiredPie(
            string expiryDateString,
            string currentDateString,
            [Frozen(Matching.ImplementedInterfaces)] FakeClock fakeClock,
            [Frozen(Matching.ImplementedInterfaces)] ProductValidationService productValidationService,
            [Frozen(Matching.ImplementedInterfaces)] DiscountService discountService,
            Basket basket)
        {
            productValidationService.AddValidator(new ExpiredPieValidator(fakeClock));

            LocalDate expiryDate  = LocalDatePattern.CreateWithCurrentCulture("dd/MM/yyyy").Parse(expiryDateString).Value;
            Instant   currentDate = InstantPattern.CreateWithCurrentCulture("dd/MM/yyyy").Parse(currentDateString).Value;

            fakeClock.Reset(currentDate);

            Pie pie = new Pie(default(Price), expiryDate);

            AddResult result = basket.Add(pie);

            result.Success.Should().BeFalse();
        }