public override decimal GetAmount(LineItem lineItem, Basket.Basket basket) { return (from c in PerRegionCosts where c.DestinationRegion == lineItem.DeliveryRegion select c.Amount).Single(); }
public decimal CalculateShipping(Basket basket) { foreach (var lineItem in basket.LineItems) { lineItem.ShippingAmount = lineItem.Shipping.GetAmount(lineItem, basket); lineItem.ShippingDescription = lineItem.Shipping.GetDescription(lineItem, basket); } return basket.LineItems.Sum(li => li.ShippingAmount); }
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 override string GetDescription(LineItem lineItem, Basket.Basket basket) { return "Flat rate shipping"; }
public override decimal GetAmount(LineItem lineItem, Basket.Basket basket) { return FlatRate; }
public abstract string GetDescription(LineItem lineItem, Basket.Basket basket);
public abstract decimal GetAmount(LineItem lineItem, Basket.Basket basket);
public override string GetDescription(LineItem lineItem, Basket.Basket basket) { return string.Format("Shipping to {0}", lineItem.DeliveryRegion); }