public void Build_Invoice_With_Multiple_Days_AM_and_PM() { var dailySummaries = new List<IChargeSummary> { new ChargeSummary { RateDescription = "AM rate", Cost = 3.233333333333333333333334m, TimeSpent = new TimeSpan(1, 37, 0) }, new ChargeSummary { RateDescription = "PM rate", Cost = 17.5m, TimeSpent = new TimeSpan(7, 0, 0) }, new ChargeSummary { RateDescription = "AM rate", Cost = 4.066666666666666666666666m, TimeSpent = new TimeSpan(2, 02, 0) }, new ChargeSummary { RateDescription = "PM rate", Cost = 0m, TimeSpent = new TimeSpan(0, 0, 0) } }; var invoiceBuilder = new InvoiceBuilder(); var invoices = invoiceBuilder.BuildInvoice(dailySummaries); Assert.AreEqual(3, invoices.Count); var am = invoices.First(i => i.Description.Contains("AM rate")); var pm = invoices.First(i => i.Description.Contains("PM rate")); var total = invoices.First(i => i.Description.Contains("Total")); Assert.AreEqual("£7.30", am.Value); Assert.AreEqual("Charge for 3h 39m (AM rate):", am.Description); Assert.AreEqual("£17.50", pm.Value); Assert.AreEqual("Charge for 7h 0m (PM rate):", pm.Description); Assert.AreEqual("£24.80", total.Value); Assert.AreEqual("Total Charge:", total.Description); }
public void Build_Invoice_With_PM_Rate_And_Empty_AM() { var dailySummaries = new List<IChargeSummary> { new ChargeSummary { RateDescription = "AM rate", Cost = 0.0m, TimeSpent = new TimeSpan(0, 0, 0) }, new ChargeSummary { RateDescription = "PM rate", Cost = 2m, TimeSpent = new TimeSpan(2, 0, 0) } }; var invoiceBuilder = new InvoiceBuilder(); var invoices = invoiceBuilder.BuildInvoice(dailySummaries); Assert.AreEqual(3, invoices.Count); var am = invoices.First(i => i.Description.Contains("AM rate")); var pm = invoices.First(i => i.Description.Contains("PM rate")); var total = invoices.First(i => i.Description.Contains("Total")); Assert.AreEqual("£0.00", am.Value); Assert.AreEqual("Charge for 0h 0m (AM rate):", am.Description); Assert.AreEqual("£2.00", pm.Value); Assert.AreEqual("Charge for 2h 0m (PM rate):", pm.Description); Assert.AreEqual("£2.00", total.Value); Assert.AreEqual("Total Charge:", total.Description); }
public void Build_Invoice_With_Single_Day_Values() { var dailySummaries = new List<IChargeSummary> { new ChargeSummary { RateDescription = "AM rate", Cost = 0.93333333334m, TimeSpent = new TimeSpan(0, 28, 0) }, new ChargeSummary { RateDescription = "PM rate", Cost = 6.75m, TimeSpent = new TimeSpan(2, 42, 0) } }; var invoiceBuilder = new InvoiceBuilder(); var invoices = invoiceBuilder.BuildInvoice(dailySummaries); Assert.AreEqual(3, invoices.Count); var am = invoices.First(i => i.Description.Contains("AM rate")); var pm = invoices.First(i => i.Description.Contains("PM rate")); var total = invoices.First(i => i.Description.Contains("Total")); Assert.AreEqual("£0.90", am.Value); Assert.AreEqual("Charge for 0h 28m (AM rate):", am.Description); Assert.AreEqual("£6.70", pm.Value); Assert.AreEqual("Charge for 2h 42m (PM rate):", pm.Description); Assert.AreEqual("£7.60", total.Value); Assert.AreEqual("Total Charge:", total.Description); }