public void HigherPriorityWins() { var frenchTax1 = GetFrenchTax(); frenchTax1.Priority = 1; frenchTax1.Rate = 0.1; var anyCountryTax = GetAnyCountryTax(); anyCountryTax.Priority = 2; anyCountryTax.Rate = 0.2; var frenchTax2 = GetFrenchTax(); frenchTax2.Priority = 3; frenchTax2.Rate = 0.3; var taxProvider = new FakeTaxProvider(new[] { frenchTax1, frenchTax2, anyCountryTax }); var cart = ShoppingCartHelpers.PrepareCart(null, new[] { taxProvider }); cart.Country = frenchTax1.Country; var subtotal = cart.Subtotal(); Assert.That(cart.Taxes().Amount, Is.EqualTo(subtotal * frenchTax2.Rate)); anyCountryTax.Priority = 4; Assert.That(cart.Taxes().Amount, Is.EqualTo(subtotal * anyCountryTax.Rate)); }
public void TaxDoesntApplyToDifferentCountry() { var oregonTax = GetOregonTax(); var taxProvider = new FakeTaxProvider(new[] { oregonTax }); var cart = ShoppingCartHelpers.PrepareCart(null, new[] { taxProvider }); cart.Country = "France"; cart.ZipCode = "97218"; var taxes = cart.Taxes(); Assert.That(taxes.Name, Is.Null); Assert.That(taxes.Amount, Is.EqualTo(0)); }
public void AnyCountryTaxAppliesToAnyCountry() { var anyCountryTax = GetAnyCountryTax(); var taxProvider = new FakeTaxProvider(new[] { anyCountryTax }); var cart = ShoppingCartHelpers.PrepareCart(null, new[] { taxProvider }); var subtotal = cart.Subtotal(); cart.Country = Country.UnitedStates; cart.ZipCode = "98008"; Assert.That(cart.Taxes().Amount, Is.EqualTo(subtotal * anyCountryTax.Rate)); cart.Country = "France"; Assert.That(cart.Taxes().Amount, Is.EqualTo(subtotal * anyCountryTax.Rate)); }
public void NoNegativeTax() { var frenchTax = GetFrenchTax(); frenchTax.Rate = -0.5; var taxProvider = new FakeTaxProvider(new[] { frenchTax }); var cart = ShoppingCartHelpers.PrepareCart(null, new[] { taxProvider }); cart.Country = frenchTax.Country; var taxes = cart.Taxes(); Assert.That(taxes.Name, Is.Null); Assert.That(taxes.Amount, Is.EqualTo(0)); }
public void RightTaxAppliesToTabRates() { var tabZipTax = new ZipCodeTaxPart(); ContentHelpers.PreparePart(tabZipTax, "Tax"); tabZipTax.Rates = TabRates; var taxProvider = new FakeTaxProvider(new[] { tabZipTax }); var cart = ShoppingCartHelpers.PrepareCart(null, new[] { taxProvider }); cart.Country = "United States"; cart.ZipCode = "52412"; CheckTaxes(cart.Taxes().Amount, 11.12); }
public void RightTaxAppliesToCsvRates() { var csvZipTax = new ZipCodeTaxPart(); ContentHelpers.PreparePart(csvZipTax, "Tax"); csvZipTax.Rates = CsvRates; var taxProvider = new FakeTaxProvider(new[] { csvZipTax }); var cart = ShoppingCartHelpers.PrepareCart(null, new[] { taxProvider }); cart.Country = "United States"; cart.ZipCode = "52627"; CheckTaxes(cart.Taxes().Amount, 6.95); }
public void NoApplicableTaxesYieldsNoTax() { var frenchTax = GetFrenchTax(); var britishTax = GetBritishTax(); var washingtonTax = GetWashingtonTax(); var oregonTax = GetOregonTax(); var taxProvider = new FakeTaxProvider(new[] { washingtonTax, britishTax, frenchTax, oregonTax }); var cart = ShoppingCartHelpers.PrepareCart(null, new[] { taxProvider }); cart.Country = "Kazakhstan"; var taxes = cart.Taxes(); Assert.That(taxes.Name, Is.Null); Assert.That(taxes.Amount, Is.EqualTo(0)); }
public void TaxDoesNotApplyToNonMatchingZip() { var csvZipTax = new ZipCodeTaxPart(); ContentHelpers.PreparePart(csvZipTax, "Tax"); csvZipTax.Rates = CsvRates; var taxProvider = new FakeTaxProvider(new[] { csvZipTax }); var cart = ShoppingCartHelpers.PrepareCart(null, new[] { taxProvider }); cart.Country = "United States"; cart.ZipCode = "90210"; var taxes = cart.Taxes(); Assert.AreEqual(0, taxes.Amount); Assert.IsNull(taxes.Name); }
public void RightTaxAppliesToRightCountry() { var frenchTax = GetFrenchTax(); var britishTax = GetBritishTax(); var washingtonTax = GetWashingtonTax(); var oregonTax = GetOregonTax(); var taxProvider = new FakeTaxProvider(new[] { washingtonTax, britishTax, frenchTax, oregonTax }); var cart = ShoppingCartHelpers.PrepareCart(null, new[] { taxProvider }); var subtotal = cart.Subtotal(); cart.Country = frenchTax.Country; Assert.That(cart.Taxes().Amount, Is.EqualTo(subtotal * frenchTax.Rate)); cart.Country = britishTax.Country; Assert.That(cart.Taxes().Amount, Is.EqualTo(subtotal * britishTax.Rate)); cart.Country = Country.UnitedStates; var taxes = cart.Taxes(); Assert.That(taxes.Name, Is.Null); Assert.That(taxes.Amount, Is.EqualTo(0)); }
public void RightTaxAppliesToRightState() { var oregonTax = GetOregonTax(); var washingtonTax = GetWashingtonTax(); var taxProvider = new FakeTaxProvider(new[] { oregonTax, washingtonTax }); var cart = ShoppingCartHelpers.PrepareCart(null, new[] { taxProvider }); cart.Country = Country.UnitedStates; var subtotal = cart.Subtotal(); cart.ZipCode = "98008"; Assert.That(cart.Taxes().Amount, Is.EqualTo(subtotal * washingtonTax.Rate)); cart.ZipCode = "97218"; Assert.That(cart.Taxes().Amount, Is.EqualTo(subtotal * oregonTax.Rate)); cart.ZipCode = "92210"; var taxes = cart.Taxes(); Assert.That(taxes.Name, Is.Null); Assert.That(taxes.Amount, Is.EqualTo(0)); }