コード例 #1
0
        public async Task ValidateShipment_RuleSetStrict_PriceError()
        {
            //Arrange
            var cartService = new Moq.Mock <ICartService>();

            cartService.Setup(x => x.GetAvailableShippingMethodsAsync(It.IsAny <ShoppingCart>())).Returns(Task.FromResult(ShippingMethods));
            var cart     = GetValidCart();
            var shipment = Faker.PickRandom(cart.Shipments);

            shipment.Price = new Money(shipment.Price.Amount + 1m, Usd);
            cart.Shipments.Add(shipment);

            //Act
            var validator = new CartShipmentValidator(cart, cartService.Object);
            var result    = await validator.ValidateAsync(shipment, ruleSet : "strict");

            //Assertion
            Assert.False(result.IsValid);
            Assert.Single(result.Errors);

            Assert.Collection(result.Errors, x =>
            {
                Assert.Equal(nameof(shipment.Price), x.PropertyName);
            });

            Assert.Single(shipment.ValidationErrors);

            Assert.Collection(shipment.ValidationErrors, x =>
            {
                Assert.Equal(nameof(PriceError), x.ErrorCode);
            });
        }
コード例 #2
0
        public async Task ValidateShipment_RuleSetDefault_PriceError()
        {
            // Arrange
            var shipment = new CartModule.Core.Model.Shipment
            {
                ShipmentMethodCode   = "shippingMethodCode",
                ShipmentMethodOption = ":)",
            };

            shipment.Price = _shippingRate.Rate + 1;

            // Act
            var validator = new CartShipmentValidator();
            var result    = await validator.ValidateAsync(new ShipmentValidationContext
            {
                Shipment           = shipment,
                AvailShippingRates = _context.AvailShippingRates
            });

            // Assert
            result.IsValid.Should().BeFalse();
            result.Errors.Should().NotBeEmpty();
            result.Errors.Should().HaveCount(1);
            result.Errors.Should().Contain(x => x.ErrorCode == "SHIPMENT_METHOD_PRICE_CHANGED");
        }
コード例 #3
0
        public async Task ValidateShipment_RuleSetDefault_ShipmentMethodCodeIsEmpty_Valid()
        {
            // Arrange
            var shipment = new CartModule.Core.Model.Shipment
            {
                ShipmentMethodCode = string.Empty
            };

            // Act
            var validator = new CartShipmentValidator(_context.AvailShippingRates);
            var result    = await validator.ValidateAsync(shipment, ruleSet : "default");

            // Assert
            result.IsValid.Should().BeTrue();
            result.Errors.Should().BeEmpty();
        }
コード例 #4
0
        public async Task ValidateShipment_RuleSetStrict_Valid()
        {
            //Arrange
            var cartService = new Moq.Mock <ICartService>();

            cartService.Setup(x => x.GetAvailableShippingMethodsAsync(It.IsAny <ShoppingCart>())).Returns(Task.FromResult(ShippingMethods));
            var cart = GetValidCart();

            //Act
            var validator             = new CartShipmentValidator(cart, cartService.Object);
            var shipmentForValidation = cart.Shipments[0];
            var result = await validator.ValidateAsync(shipmentForValidation, ruleSet : "strict");

            //Assertion
            Assert.True(result.IsValid);
            Assert.Empty(result.Errors);
            Assert.Empty(shipmentForValidation.ValidationErrors);
        }
コード例 #5
0
        public async Task ValidateShipment_RuleSetStrict_UnavailableMethodError()
        {
            // Arrange
            var shipment = new CartModule.Core.Model.Shipment
            {
                ShipmentMethodCode = "UnavailableShipmentMethod"
            };

            // Act
            var validator = new CartShipmentValidator(_context.AvailShippingRates);
            var result    = await validator.ValidateAsync(shipment, ruleSet : "strict");

            // Assert
            result.IsValid.Should().BeFalse();
            result.Errors.Should().NotBeEmpty();
            result.Errors.Should().HaveCount(1);
            result.Errors.Should().Contain(x => x.ErrorCode == "SHIPMENT_METHOD_UNAVAILABLE");
        }
コード例 #6
0
        public async Task ValidateShipment_RuleSetDefault_ShipmentMethodCodeIsNull_Valid()
        {
            // Arrange
            var shipment = new CartModule.Core.Model.Shipment
            {
                ShipmentMethodCode = null
            };

            // Act
            var validator = new CartShipmentValidator();
            var result    = await validator.ValidateAsync(new ShipmentValidationContext
            {
                Shipment           = shipment,
                AvailShippingRates = _context.AvailShippingRates
            });

            // Assert
            result.IsValid.Should().BeTrue();
            result.Errors.Should().BeEmpty();
        }
コード例 #7
0
        public async Task ValidateShipment_RuleSetStrict_UnavailableMethodError()
        {
            //Arrange
            var cartService = new Moq.Mock <ICartService>();

            cartService.Setup(x => x.GetAvailableShippingMethodsAsync(It.IsAny <ShoppingCart>())).Returns(Task.FromResult(ShippingMethods));
            var cart = GetValidCart();

            var testShipments = new Faker <Shipment>()
                                .CustomInstantiator(f => new Shipment(Usd))
                                .RuleFor(s => s.ShipmentMethodCode, f => f.Random.Guid().ToString());

            var unavailableShipment = testShipments.Generate();

            cart.Shipments.Add(unavailableShipment);

            //Act
            var validator = new CartShipmentValidator(cart, cartService.Object);
            var result    = await validator.ValidateAsync(unavailableShipment, ruleSet : "strict");

            //Assertion
            Assert.False(result.IsValid);
            Assert.Single(result.Errors);

            Assert.Collection(result.Errors, x =>
            {
                Assert.Equal(nameof(unavailableShipment.ShipmentMethodCode), x.PropertyName);
            });

            Assert.Single(unavailableShipment.ValidationErrors);

            Assert.Collection(unavailableShipment.ValidationErrors, x =>
            {
                Assert.Equal(nameof(UnavailableError), x.ErrorCode);
            });
        }