public void GetSalesTaxAmount_ItemIsTaxedAndImported_ReturnBasicAndImportTax()
        {
            // Arrange
            var salesTaxRate            = new SalesTaxRate();
            var totalSalesTaxCalculator = new TotalSalesTaxCalculator(new List <SalesTaxCalculator> {
                new BasicSalesTaxCalculator(salesTaxRate),
                new ImportDutySalesTaxCalculator(salesTaxRate)
            });

            var item = new ShoppingBasketItem(new Product("Other", ProductType.Other), 15001.25m, true, totalSalesTaxCalculator);

            // Act
            var result = totalSalesTaxCalculator.GetSalesTaxAmount(item);

            // Assert
            Assert.AreEqual(result, 2250.25m);
        }
        public void GetPriceWithTaxIncluded_ItemIsExemptAndNotImported_ReturnPrice()
        {
            // Arrange
            var salesTaxRate            = new SalesTaxRate();
            var totalSalesTaxCalculator = new TotalSalesTaxCalculator(new List <SalesTaxCalculator> {
                new BasicSalesTaxCalculator(salesTaxRate),
                new ImportDutySalesTaxCalculator(salesTaxRate)
            });

            var item = new ShoppingBasketItem(new Product("Candy", ProductType.Candy), 16.00m, false, totalSalesTaxCalculator);

            // Act
            var result = totalSalesTaxCalculator.GetPriceWithTaxIncluded(item);

            // Assert
            Assert.AreEqual(result, 16.00m);
        }
        public void GetSalesTaxAmount_ItemIsExemptAndImported_ReturnImportTax()
        {
            // Arrange
            var salesTaxRate            = new SalesTaxRate();
            var totalSalesTaxCalculator = new TotalSalesTaxCalculator(new List <SalesTaxCalculator> {
                new BasicSalesTaxCalculator(salesTaxRate),
                new ImportDutySalesTaxCalculator(salesTaxRate)
            });

            var item = new ShoppingBasketItem(new Product("Candy", ProductType.Candy), 75.99m, true, totalSalesTaxCalculator);

            // Act
            var result = totalSalesTaxCalculator.GetSalesTaxAmount(item);

            // Assert
            Assert.AreEqual(result, 3.80m);
        }