public void PerRegionShippingOptionTest()
        {
            var perRegionShippingOption = new PerRegionShipping()
            {
                PerRegionCosts = new[]
                {
                    new RegionShippingCost()
                    {
                        DestinationRegion =
                            RegionShippingCost.Regions.UK,
                        Amount = .75m
                    },
                    new RegionShippingCost()
                    {
                        DestinationRegion =
                            RegionShippingCost.Regions.Europe,
                        Amount = 1.5m
                    }
                },
            };

            var shippingAmount = perRegionShippingOption.GetAmount(new LineItem()
            {
                DeliveryRegion = RegionShippingCost.Regions.Europe
            }, new Basket());

            Assert.That(shippingAmount, Is.EqualTo(1.5m));

            shippingAmount = perRegionShippingOption.GetAmount(new LineItem()
            {
                DeliveryRegion = RegionShippingCost.Regions.UK
            }, new Basket());
            Assert.That(shippingAmount, Is.EqualTo(.75m));
        }
        public void BasketShippingTotalTest()
        {
            var perRegionShippingOption = new PerRegionShipping()
            {
                PerRegionCosts = new[]
                {
                    new RegionShippingCost()
                    {
                        DestinationRegion =
                            RegionShippingCost.Regions.UK,
                        Amount = .75m
                    },
                    new RegionShippingCost()
                    {
                        DestinationRegion =
                            RegionShippingCost.Regions.Europe,
                        Amount = 1.5m
                    }
                },
            };

            var flatRateShippingOption = new FlatRateShipping {
                FlatRate = 1.1m
            };

            var basket = new Basket()
            {
                LineItems = new List <LineItem>
                {
                    new LineItem()
                    {
                        DeliveryRegion = RegionShippingCost.Regions.UK,
                        Shipping       = perRegionShippingOption
                    },
                    new LineItem()
                    {
                        DeliveryRegion = RegionShippingCost.Regions.Europe,
                        Shipping       = perRegionShippingOption
                    },
                    new LineItem()
                    {
                        Shipping = flatRateShippingOption
                    },
                }
            };

            var calculator = new ShippingCalculator();

            decimal basketShipping = calculator.CalculateShipping(basket);

            Assert.That(basketShipping, Is.EqualTo(3.35m));
        }
        public void NewCountryShippingOptionTest()
        {
            var perCountryShippingOption = new PerRegionShipping()
            {
                PerRegionCosts = new[]
                {
                    new RegionShippingCost()
                    {
                        DestinationRegion =
                            RegionShippingCost.Regions.Europe,
                        Amount = 10m
                    }
                },
            };


            var shippingAmount = perCountryShippingOption.GetAmount(new LineItem()
            {
                DeliveryRegion = RegionShippingCost.Regions.Europe
            }, new Basket());

            Assert.That(shippingAmount, Is.EqualTo(10.5m), "Shipping charge for Europe is wrong!");
        }
        public void TotalShippingTest()
        {
            var perShippingOption = new PerRegionShipping()
            {
                PerRegionCosts = new[]
                {
                    new RegionShippingCost()
                    {
                        DestinationRegion =
                            RegionShippingCost.Regions.UK,
                        Amount = .5m
                    },
                    new RegionShippingCost()
                    {
                        DestinationRegion =
                            RegionShippingCost.Regions.Europe,
                        Amount = 1m
                    },
                    new RegionShippingCost()
                    {
                        DestinationRegion =
                            RegionShippingCost.Regions.Europe,
                        Amount = 10m
                    },
                    new RegionShippingCost()
                    {
                        DestinationRegion =
                            RegionShippingCost.Regions.RestOfTheWorld,
                        Amount = 2m
                    }
                },
            };

            var flatRateShippingOption = new FlatRateShipping {
                FlatRate = 1.5m
            };

            var basket = new Basket()
            {
                LineItems = new List <LineItem>
                {
                    new LineItem()
                    {
                        DeliveryRegion = RegionShippingCost.Regions.UK,
                        Shipping       = perShippingOption
                    },
                    new LineItem()
                    {
                        DeliveryRegion = RegionShippingCost.Regions.Europe,
                        Shipping       = perShippingOption
                    },
                    new LineItem()
                    {
                        DeliveryRegion = RegionShippingCost.Regions.Europe,
                        Shipping       = perShippingOption
                    },
                    new LineItem()
                    {
                        DeliveryRegion = RegionShippingCost.Regions.RestOfTheWorld,
                        Shipping       = perShippingOption
                    },
                    new LineItem()
                    {
                        Shipping = flatRateShippingOption
                    },
                }
            };

            var calculator = new ShippingCalculator();

            decimal basketShipping = calculator.CalculateShipping(basket);

            Assert.That(basketShipping, Is.EqualTo(15.5m), "Total Amount doest not match");
        }
Example #5
0
        public void BasketShippingTotalTest()
        {
            var perRegionDiscountShippingOption = new PerRegionDiscountShipping()
            {
                SpecialRule_deducte = .5m,
                PerRegionCosts      = new[]
                {
                    new RegionShippingCost()
                    {
                        DestinationRegion = RegionShippingCost.Regions.UK,
                        Amount            = 6m
                    }
                }
            };

            var perRegionShippingOption = new PerRegionShipping()
            {
                PerRegionCosts = new[]
                {
                    new RegionShippingCost()
                    {
                        DestinationRegion =
                            RegionShippingCost.Regions.UK,
                        Amount = .75m
                    },
                    new RegionShippingCost()
                    {
                        DestinationRegion =
                            RegionShippingCost.Regions.Europe,
                        Amount = 1.5m
                    }
                },
            };

            var flatRateShippingOption = new FlatRateShipping {
                FlatRate = 1.1m
            };

            var basket = new Basket()
            {
                LineItems = new List <LineItem>
                {
                    new LineItem()
                    {
                        Id             = 0,
                        DeliveryRegion = RegionShippingCost.Regions.UK,
                        Shipping       = perRegionDiscountShippingOption,
                        SupplierId     = 1
                    },
                    new LineItem()
                    {
                        Id             = 1,
                        DeliveryRegion = RegionShippingCost.Regions.UK,
                        Shipping       = perRegionDiscountShippingOption,
                        SupplierId     = 1
                    },
                    new LineItem()
                    {
                        Id             = 2,
                        DeliveryRegion = RegionShippingCost.Regions.UK,
                        Shipping       = perRegionShippingOption
                    },
                    new LineItem()
                    {
                        Id             = 3,
                        DeliveryRegion = RegionShippingCost.Regions.Europe,
                        Shipping       = perRegionShippingOption
                    },
                    new LineItem()
                    {
                        Shipping = flatRateShippingOption
                    },
                }
            };

            var calculator = new ShippingCalculator();

            decimal basketShipping = calculator.CalculateShipping(basket);

            Assert.That(basketShipping, Is.EqualTo(14.85m));
        }