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");
        }
Example #5
0
        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"));
        }
Example #8
0
        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));
        }
Example #9
0
        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);
        }