public async Task ValidateAddItem_RuleSetStrict_PriceError() { //Arrange var cart = GetValidCart(); var productPrice = new Money(Rand.Decimal(MIN_PRICE, MAX_PRICE), Usd); var testAddItem = new Faker <AddCartItem>() .RuleFor(x => x.Id, f => f.Random.Guid().ToString()) .RuleFor(x => x.Quantity, f => f.Random.Int(1, InStockQuantity)) .RuleFor(x => x.Price, f => f.Random.Decimal(MIN_PRICE, productPrice.Amount - 1)) .RuleFor(x => x.Product, f => GenTestProduct(productPrice)); var addItem = testAddItem.Generate(); //Act var validator = new AddCartItemValidator(cart); var result = await validator.ValidateAsync(addItem, ruleSet : "strict"); //Assertion Assert.False(result.IsValid); Assert.NotEmpty(result.Errors); Assert.Collection(result.Errors, x => { Assert.Equal(nameof(addItem.Price), x.PropertyName); }); }
public async Task ValidateAddItem_RuleSetDefault_Valid() { //Arrange var cart = GetValidCart(); var testAddItem = new Faker <AddCartItem>() .RuleFor(x => x.Id, f => f.Random.Guid().ToString()) .RuleFor(x => x.Quantity, f => f.Random.Int(1, InStockQuantity)) .RuleFor(x => x.Product, f => new Product(Usd, Language.InvariantLanguage)); var addItem = testAddItem.Generate(); //Act var validator = new AddCartItemValidator(cart); var result = await validator.ValidateAsync(addItem, ruleSet : "default"); //Assertion Assert.True(result.IsValid); Assert.Empty(result.Errors); }
public async Task ValidateAddItem_RuleSetDefault_Invalid() { //Arrange var cart = GetValidCart(); var addItem = new AddCartItem() { Quantity = 0 }; //Act var validator = new AddCartItemValidator(cart); var result = await validator.ValidateAsync(addItem, ruleSet : "default"); //Assertion Assert.False(result.IsValid); Assert.NotEmpty(result.Errors); Assert.Collection(result.Errors, x => { Assert.Equal(nameof(addItem.Quantity), x.PropertyName); Assert.Equal(nameof(GreaterThanValidator), x.ErrorCode); } , x => { Assert.Equal(nameof(addItem.Product), x.PropertyName); Assert.Equal(nameof(NotNullValidator), x.ErrorCode); } ); }