public async Task ValidateChangePriceItem_RuleSetStrict_Invalid() { //Arrange var cart = GetValidCart(); var item = Faker.PickRandom(cart.Items); var newItemPrice = new ChangeCartItemPrice { LineItemId = item.Id, NewPrice = item.ListPrice.Amount - Rand.Decimal(0, item.ListPrice.Amount) }; //Act var validator = new ChangeCartItemPriceValidator(cart); var result = await validator.ValidateAsync(newItemPrice, ruleSet : "strict"); //Assertion Assert.False(result.IsValid); Assert.NotEmpty(result.Errors); Assert.Collection(result.Errors, x => { Assert.Equal(nameof(item.SalePrice), x.PropertyName); }); }
public async Task ValidateChangePriceItem_RuleSetDefault_Invalid() { //Arrange var cart = GetValidCart(); var newItemPrice = new ChangeCartItemPrice { LineItemId = null, NewPrice = -1 }; //Act var validator = new ChangeCartItemPriceValidator(cart); var result = await validator.ValidateAsync(newItemPrice, ruleSet : "default"); //Assertion Assert.False(result.IsValid); Assert.NotEmpty(result.Errors); Assert.Equal(3, result.Errors.Count); Assert.Collection(result.Errors, x => { Assert.Equal(nameof(newItemPrice.NewPrice), x.PropertyName); Assert.Equal(nameof(GreaterThanOrEqualValidator), x.ErrorCode); } , x => { Assert.Equal(nameof(newItemPrice.LineItemId), x.PropertyName); Assert.Equal(nameof(NotNullValidator), x.ErrorCode); } , x => { Assert.Equal(nameof(newItemPrice.LineItemId), x.PropertyName); Assert.Equal(nameof(NotEmptyValidator), x.ErrorCode); } ); }
public async Task ValidateChangePriceItem_RuleSetStrict_Valid() { // Arrange var aggregate = GetValidCartAggregate(); var item = _fixture.Create <LineItem>(); item.IsGift = false; aggregate.Cart.Items = new List <LineItem> { item }; var newItemPrice = new PriceAdjustment { LineItemId = item.Id, NewPrice = item.ListPrice + _fixture.Create <decimal>() }; var validator = new ChangeCartItemPriceValidator(); // Act var result = await validator.ValidateAsync(newItemPrice, options => options.IncludeRuleSets("strict")); // Assert result.IsValid.Should().BeTrue(); result.Errors.Should().BeEmpty(); }
public async Task ValidateChangePriceItem_RuleSetStrict_Invalid() { // Arrange var aggregate = GetValidCartAggregate(); var item = _fixture.Create <LineItem>(); item.IsGift = false; aggregate.Cart.Items = new List <LineItem> { item }; var newItemPrice = new PriceAdjustment { LineItemId = item.Id, LineItem = item, NewPrice = item.ListPrice - _fixture.Create <decimal>() }; var validator = new ChangeCartItemPriceValidator(); // Act var result = await validator.ValidateAsync(newItemPrice, options => options.IncludeRuleSets("strict")); // Assert result.IsValid.Should().BeFalse(); result.Errors.Should().NotBeEmpty(); result.Errors.Should().HaveCount(1); result.Errors.Should().Contain(x => x.ErrorCode == "UNABLE_SET_LESS_PRICE"); }
public async Task ValidateChangePriceItem_RuleSetDefault_Valid() { // Arrange var aggregate = GetValidCartAggregate(); var newItemPrice = new PriceAdjustment(_fixture.Create <string>(), _fixture.Create <decimal>()); var validator = new ChangeCartItemPriceValidator(aggregate); // Act var result = await validator.ValidateAsync(newItemPrice, ruleSet : "default"); // Assert result.IsValid.Should().BeTrue(); result.Errors.Should().BeEmpty(); }
public async Task ValidateChangePriceItem_RuleSetDefault_Valid() { // Arrange var newItemPriceAdjustment = new PriceAdjustment { LineItemId = _fixture.Create <string>(), NewPrice = _fixture.Create <decimal>() }; var validator = new ChangeCartItemPriceValidator(); // Act var result = await validator.ValidateAsync(newItemPriceAdjustment, options => options.IncludeRuleSets("default")); // Assert result.IsValid.Should().BeTrue(); result.Errors.Should().BeEmpty(); }
public async Task ValidateChangePriceItem_RuleSetDefault_Invalid() { var newItemPrice = new PriceAdjustment() { NewPrice = -1 }; // Act var validator = new ChangeCartItemPriceValidator(); var result = await validator.ValidateAsync(newItemPrice, options => options.IncludeRuleSets("default")); // Assert result.IsValid.Should().BeFalse(); result.Errors.Should().NotBeEmpty(); result.Errors.Should().HaveCount(3); result.Errors.Should().Contain(x => x.PropertyName == "NewPrice" && x.ErrorCode.Contains("GreaterThanOrEqualValidator")); result.Errors.Should().Contain(x => x.PropertyName == "LineItemId" && x.ErrorCode.Contains("NotEmptyValidator")); result.Errors.Should().Contain(x => x.PropertyName == "LineItemId" && x.ErrorCode.Contains("NotNullValidator")); }
public async Task ValidateChangePriceItem_RuleSetDefault_Invalid() { // Arrange var aggregate = GetValidCartAggregate(); var newItemPrice = new PriceAdjustment(null, -1); // Act var validator = new ChangeCartItemPriceValidator(aggregate); var result = await validator.ValidateAsync(newItemPrice, ruleSet : "default"); // Assert result.IsValid.Should().BeFalse(); result.Errors.Should().NotBeEmpty(); result.Errors.Should().HaveCount(3); result.Errors.Should().Contain(x => x.PropertyName == "NewPrice" && x.ErrorCode == nameof(GreaterThanOrEqualValidator)); result.Errors.Should().Contain(x => x.PropertyName == "LineItemId" && x.ErrorCode == nameof(NotEmptyValidator)); result.Errors.Should().Contain(x => x.PropertyName == "LineItemId" && x.ErrorCode == nameof(NotNullValidator)); }
public async Task ValidateChangePriceItem_RuleSetStrict_Valid() { // Arrange var aggregate = GetValidCartAggregate(); var item = _fixture.Create <LineItem>(); aggregate.Cart.Items = new List <LineItem> { item }; var newItemPrice = new PriceAdjustment(item.Id, item.ListPrice + _fixture.Create <decimal>()); var validator = new ChangeCartItemPriceValidator(aggregate); // Act var result = await validator.ValidateAsync(newItemPrice, ruleSet : "strict"); // Assert result.IsValid.Should().BeTrue(); result.Errors.Should().BeEmpty(); }
public async Task ValidateChangePriceItem_RuleSetStrict_Valid() { //Arrange var cart = GetValidCart(); var item = Faker.PickRandom(cart.Items); var newItemPrice = new ChangeCartItemPrice { LineItemId = item.Id, NewPrice = item.ListPrice.Amount + Rand.Decimal(MIN_PRICE, MAX_PRICE) }; //Act var validator = new ChangeCartItemPriceValidator(cart); var result = await validator.ValidateAsync(newItemPrice, ruleSet : "strict"); //Assertion Assert.True(result.IsValid); Assert.Empty(result.Errors); }