Exemple #1
0
        public void GetTaxSettings_AppsettingsWithTaxes_MappedTaxes()
        {
            //Arrange
            IConfigurationRoot  configurationRoot   = Helper.GetConfigurationRoot(Path.Combine("SettingsFixtures", "appsettingsWithTaxes.json"));
            ConfigurationHelper configurationHelper = new ConfigurationHelper(configurationRoot);

            //Act
            TaxSettings taxSettings = configurationHelper.GetTaxSettings();

            //Assert
            Assert.AreEqual(1, taxSettings.ImportedTaxes.Count);
            Assert.AreEqual(1, taxSettings.FlatTaxes.Count);

            FlatTax flatTax = taxSettings.FlatTaxes.Single();

            Assert.AreEqual(0.1m, flatTax.Rate);
            Assert.AreEqual("Basic Sales Tax", flatTax.Description);
            Assert.AreEqual(3, flatTax.ExcludedCategories.Count);
            Assert.AreEqual(CategoryType.Books, flatTax.ExcludedCategories.First());
            Assert.AreEqual(CategoryType.Foods, flatTax.ExcludedCategories.Skip(1).First());
            Assert.AreEqual(CategoryType.MedicalProducts, flatTax.ExcludedCategories.Skip(2).First());

            ImportedTax importedTax = taxSettings.ImportedTaxes.Single();

            Assert.AreEqual(0.05m, importedTax.Rate);
            Assert.AreEqual("Import duty", importedTax.Description);

            IList <Tax> taxes = taxSettings.GetAllTaxes();

            Assert.AreEqual(2, taxes.Count);

            Assert.AreEqual("Import duty", taxes.Last().Description);
            Assert.AreEqual("Basic Sales Tax", taxes.First().Description);
        }
        static void Main(string[] args)
        {
            try
            {
                #region Bootstrap

                IConfigurationRoot configuration = GetConfigurationRoot();
                var         configurationHelper  = new ConfigurationHelper(configuration);
                TaxSettings taxSettings          = configurationHelper.GetTaxSettings();
                IList <Tax> taxes         = taxSettings.GetAllTaxes();
                var         taxCalculator = new TaxCalculator(taxes);
                IDictionary <string, CategoryType> productCategories = configurationHelper.GetProductCategories();
                var shoppingBasketCreator = new ShoppingBasketCreator();
                var receiptDetailCreator  = new ReceiptDetailCreator();
                var receiptDeatilPrinter  = new ReceiptDeatilPrinter();

                #endregion

                string[]             inputLines     = GetInputLines(configuration);
                ShoppingBasket       shoppingBasket = shoppingBasketCreator.CreateShoppingBasket(inputLines, productCategories);
                IList <TaxedProduct> taxedProducts  = taxCalculator.ApplyTaxes(shoppingBasket);
                ReceiptDetail        receiptDetail  = receiptDetailCreator.CreateReceiptDetail(taxedProducts);
                receiptDeatilPrinter.Print(receiptDetail);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Console.ReadLine();
            }
        }
Exemple #3
0
        public void GetTaxSettings_AppSettingsWithImportedTaxes_MappedImportedTaxes()
        {
            //Arrange
            IConfigurationRoot  configurationRoot   = Helper.GetConfigurationRoot(Path.Combine("SettingsFixtures", "appsettingsWithImportedTaxes.json"));
            ConfigurationHelper configurationHelper = new ConfigurationHelper(configurationRoot);

            //Act
            TaxSettings taxSettings = configurationHelper.GetTaxSettings();

            //Assert
            Assert.AreEqual(1, taxSettings.ImportedTaxes.Count);
            Assert.AreEqual(0, taxSettings.FlatTaxes.Count);

            ImportedTax importedTax = taxSettings.ImportedTaxes.Single();

            Assert.AreEqual(0.05m, importedTax.Rate);
            Assert.AreEqual("Import duty", importedTax.Description);

            IList <Tax> taxes = taxSettings.GetAllTaxes();

            Assert.AreEqual(1, taxes.Count);

            Tax tax = taxes.Single();

            Assert.AreEqual("Import duty", tax.Description);
        }