public void Shipping_via_Ups() { var calc = new ShippingCostCalculator(); var order = Mother.CreateOrder(); var cost = calc.Cost(order, ShippingCostCalculator.UpsStrategy); Assert.AreEqual(4.25d, cost); }
public void Shipping_Via_FedEx() { var calc = new ShippingCostCalculator(); var order = Mother.CreateOrder(); var cost = calc.Cost(order, ShippingCostCalculator.FedExStrategy); Assert.AreEqual(5, 00d, cost); }
public void Shipping_via_Usps() { var strategy = new UspsShippingCostStrategy(); var calc = new ShippingCostCalculator(strategy); var order = Mother.CreateOrder(); var cost = calc.Cost(order); Assert.AreEqual(3, 00d, cost); }
public override string GenerateShippingLabelFor(Order o) { var shippingCost = ShippingCostCalculator.GetCost(o.Recipient.Country, o.Sender.Country, o.TotalWeight); return($"Shipping Id: {$"SWE-{Guid.NewGuid()}" } {Environment.NewLine}" + $"To: {o.Recipient.To} {Environment.NewLine}" + $"Order total: {o.Total} {Environment.NewLine}" + $"Tax: {TaxOptions} {Environment.NewLine}" + $"Shipping Cost: {shippingCost}"); }
public override string GenerateShippingLabelFor(Order o) { if (o.Recipient.Country != o.Sender.Country) { throw new NotSupportedException("International shipping not supported"); } var shippingCost = ShippingCostCalculator.GetCost(o.Recipient.Country, o.Sender.Country, o.TotalWeight); return($"Shipping Id: AUS-{Guid.NewGuid()} {Environment.NewLine}" + $"To: {o.Recipient.To} {Environment.NewLine}" + $"Order total: {o.Total} {Environment.NewLine}" + $"Tax: {TaxOptions} {Environment.NewLine}" + $"Shipping Cost: {shippingCost}"); }
static void Main(string[] args) { // доставка по EMS var emsStrategy = new EMSStrategy(); // доставка по USP var upsStrategy = new UPSStrategy(); // доставка по FeDex var fedexStrategy = new FEDEXStrategy(); var shippingCostCalculator = new ShippingCostCalculator(); // расчет для EMS shippingCostCalculator.Strategy = emsStrategy; var result = shippingCostCalculator.Calculate(new Order()); // расчет для USP shippingCostCalculator.Strategy = upsStrategy; result = shippingCostCalculator.Calculate(new Order()); // расчет для FeDex shippingCostCalculator.Strategy = fedexStrategy; result = shippingCostCalculator.Calculate(new Order()); }
public string Finalize() { #region Create Shipping Provider ShippingProvider shippingProvider; if (order.Sender.Country == "Australia") { #region Australia Post Shipping Provider var shippingCostCalculator = new ShippingCostCalculator( internationalShippingFee: 250, extraWeightFee: 500 ) { ShippingType = ShippingType.Standard }; var customsHandlingOptions = new CustomsHandlingOptions { TaxOptions = TaxOptions.PrePaid }; var insuranceOptions = new InsuranceOptions { ProviderHasInsurance = false, ProviderHasExtendedInsurance = false, ProviderRequiresReturnOnDamange = false }; shippingProvider = new AustraliaPostShippingProvider("CLIENT_ID", "SECRET", shippingCostCalculator, customsHandlingOptions, insuranceOptions); #endregion } else if (order.Sender.Country == "Sweden") { #region Swedish Postal Service Shipping Provider var shippingCostCalculator = new ShippingCostCalculator( internationalShippingFee: 50, extraWeightFee: 100 ) { ShippingType = ShippingType.Express }; var customsHandlingOptions = new CustomsHandlingOptions { TaxOptions = TaxOptions.PayOnArrival }; var insuranceOptions = new InsuranceOptions { ProviderHasInsurance = true, ProviderHasExtendedInsurance = false, ProviderRequiresReturnOnDamange = false }; shippingProvider = new SwedishPostalServiceShippingProvider("API_KEY", shippingCostCalculator, customsHandlingOptions, insuranceOptions); #endregion } else { throw new NotSupportedException("No shipping provider found for origin country"); } #endregion order.ShippingStatus = ShippingStatus.ReadyForShippment; return(shippingProvider.GenerateShippingLabelFor(order)); }