public void ShouldThrownArgumentNullExceptionForNullValidator( ProductValidationService sut) { Action a = () => sut.AddValidator(null !); a.Should().Throw <ArgumentNullException>(); }
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); }
public void ShouldAddValidatorToValidators( ProductValidationService sut) { IProductValidator productValidator = new FakeProductValidator(); sut.AddValidator(productValidator); sut.Validators.Should().Contain(productValidator); }
public void ShouldReturnValidWhenNoValidators( ProductValidationService sut) { IProduct product = new ProductFaker().Generate(); ValidationResult result = sut.Validate(product); result.IsValid.Should().BeTrue(); }
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); }
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(); }