public void NewChoiceShippingOptionTest()
        {
            var newChoiceShippingOption = new NewChoiceShipping()
            {
                NewChoiceCosts = new[]
                {
                    new NewChoiceShippingCost()
                    {
                        DestinationRegion =
                            NewChoiceShippingCost.Regions.UK,
                        Amount = .5m
                    },
                    new NewChoiceShippingCost()
                    {
                        DestinationRegion =
                            NewChoiceShippingCost.Regions.Europe,
                        Amount = 1.0m
                    }
                },
            };

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

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

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

            var newChoiceShippingOption = new NewChoiceShipping()
            {
                NewChoiceCosts = new[]
                {
                    new NewChoiceShippingCost()
                    {
                        DestinationRegion =
                            NewChoiceShippingCost.Regions.UK,
                        Amount = .5m
                    },
                    new NewChoiceShippingCost()
                    {
                        DestinationRegion =
                            NewChoiceShippingCost.Regions.Europe,
                        Amount = 1.0m
                    }
                },
            };


            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
                    },

                    new LineItem()
                    {
                        DeliveryRegion = NewChoiceShippingCost.Regions.UK,
                        Shipping       = newChoiceShippingOption
                    },
                    new LineItem()
                    {
                        DeliveryRegion = NewChoiceShippingCost.Regions.Europe,
                        Shipping       = newChoiceShippingOption
                    },
                    new LineItem()
                    {
                        DeliveryRegion = NewChoiceShippingCost.Regions.Europe,
                        Shipping       = newChoiceShippingOption
                    },
                }
            };

            var calculator = new ShippingCalculator();

            decimal basketShipping = calculator.CalculateShipping(basket);

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