示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
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));
        }
示例#4
0
        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));
        }
示例#5
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);
        }
示例#6
0
        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);
        }
示例#7
0
        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));
        }
示例#8
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);
        }
示例#9
0
        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));
        }
示例#10
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));
        }