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(); } }
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); }