public void AddValidInvoiceLines() { //arrange var invoice = new Invoice(); var invoiceItem1 = new InvoiceLine() { InvoiceLineId = 1, Cost = 10.21, Quantity = 4, Description = "Banana" }; var invoiceItem2 = new InvoiceLine() { InvoiceLineId = 2, Cost = 5.21, Quantity = 1, Description = "Orange" }; //act invoice.AddInvoiceLine(invoiceItem1); invoice.AddInvoiceLine(invoiceItem2); //Assert Assert.IsTrue(invoice.LineItems.Count == 2, "LineItems not added successfully"); Assert.AreSame(invoice.LineItems[0], invoiceItem1, "AddInvoiceLine does not return same result as inserted"); }
public decimal RemoveItem() { var invoice = new Invoice(); invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 1, Cost = 5.21m, Quantity = 1, Description = "Orange" }); invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 2, Cost = 10.99m, Quantity = 4, Description = "Banana" }); invoice.RemoveInvoiceLine(1); var total = invoice.GetTotal(); new LogManager().Log($"RemoveItem(). Total: {total}"); return(total); }
public void TestClone() { //arrange var originalInvoice = new Invoice(); var invoiceItem1 = new InvoiceLine() { InvoiceLineId = 1, Cost = 10.21, Quantity = 4, Description = "Banana" }; var invoiceItem2 = new InvoiceLine() { InvoiceLineId = 2, Cost = 5.21, Quantity = 1, Description = "Orange" }; //act originalInvoice.AddInvoiceLine(invoiceItem1); originalInvoice.AddInvoiceLine(invoiceItem2); var clonedInvoice = originalInvoice.Clone(); //Assert Assert.IsTrue(originalInvoice.GetHashCode() == clonedInvoice.GetHashCode(), "cloned object is different to source object"); Assert.IsFalse(ReferenceEquals(clonedInvoice.LineItems[0], originalInvoice.LineItems[0]), "cloned object must not have any references to original object"); Assert.IsFalse(ReferenceEquals(clonedInvoice.LineItems[1], originalInvoice.LineItems[1]), "cloned object must not have any references to original object"); }
public decimal CreateInvoiceWithMultipleItemsAndQuantities() { var invoice = new Invoice(); invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 1, Cost = 10.21m, Quantity = 4, Description = "Banana" }); invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 2, Cost = 5.21m, Quantity = 1, Description = "Orange" }); invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 3, Cost = 5.21m, Quantity = 5, Description = "Pineapple" }); var total = invoice.GetTotal(); new LogManager().Log($"CreateInvoiceWithMultipleItemsAndQuantities(). Total: {total}"); return(total); }
public decimal CloneInvoice() { var invoice = new Invoice(); invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 1, Cost = 6.99m, Quantity = 1, Description = "Apple" }); invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 2, Cost = 6.27m, Quantity = 3, Description = "Blueberries" }); var clonedInvoice = invoice.Clone(); var total = clonedInvoice.GetTotal(); new LogManager().Log($"CloneInvoice(). Total: {total}"); return(total); }
public void TestToString() { Invoice invoice = new Invoice(); invoice.AddInvoiceLine(itemRepo.QueryByDescription("Apple"), 2); invoice.AddInvoiceLine(itemRepo.QueryByDescription("Orange"), 3); Assert.IsTrue(invoice.GetTotal() == 6.99m * 2 + 5.21m * 3, "Fail to caculate total cost"); }
public void TestToString() { Invoice invoice = new Invoice(); invoice.AddInvoiceLine(itemRepo.QueryByDescription("Apple"), 2); invoice.AddInvoiceLine(itemRepo.QueryByDescription("Orange"), 3); Assert.IsTrue(invoice.ToString() == string.Format("Invoice Number: {0}, InvoiceDate: {1:dd/MM/yyyy}, LineItemCount: {2}", invoice.InvoiceNumber, invoice.InvoiceDate, invoice.LineItems.Count)); }
public void AddInvalidInvoiceLineIdInvoiceLine() { //arrange var invoice = new Invoice(); //act var result = invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 2, Cost = 5, Quantity = 0, Description = "Orange" }); //Assert Assert.IsFalse(result.Success, "Invoice Item must have a non-zero quantity"); //arrange invoice = new Invoice(); //act result = invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = -2, Cost = 5, Quantity = 5, Description = "Orange" }); //Assert Assert.IsFalse(result.Success, "Invoice Item must have a non-negative quantity"); //arrange invoice = new Invoice(); //act invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 1, Cost = 5, Quantity = 5, Description = "Orange" }); result = invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 1, Cost = 5, Quantity = 5, Description = "Orange" }); //Assert Assert.IsFalse(result.Success, "Invoice Line Id must be unique."); }
public void TestRemoveLine() { Invoice invoice = new Invoice(); invoice.AddInvoiceLine(itemRepo.QueryByDescription("Apple"), 2); invoice.AddInvoiceLine(itemRepo.QueryByDescription("Orange"), 3); Assert.IsTrue(invoice.LineItems.Count == 2, "Did not remove a line"); invoice.RemoveInvoiceLine(1); Assert.IsTrue(invoice.LineItems.Count == 1 && invoice.LineItems[0].Description == "Orange", "Did not remove the right line"); invoice.AddInvoiceLine(itemRepo.QueryByDescription("Pineapple"), 3); invoice.RemoveInvoiceLine("00000004"); Assert.IsTrue(invoice.LineItems.Count == 1 && invoice.LineItems[0].Description == "Orange", "Did not remove the right line"); }
public void AddInvoiceLine_Update_Success() { var invoice = new Invoice() { InvoiceNumber = 1210, InvoiceDate = DateTime.Now, LineItems = new List <InvoiceLine>() { new InvoiceLine() { InvoiceLineId = 1234, Description = "Test Invoice Item", Quantity = 2, Cost = 20 } } }; var invoiceLine = new InvoiceLine() { InvoiceLineId = 1234, Description = "Test Invoice Item", Quantity = 1, Cost = 10 }; invoice.AddInvoiceLine(invoiceLine); var expected = invoiceLine; var actual = invoice.LineItems.First(); Assert.Equal(expected, actual); }
public void AddInvalidCostInvoiceLine() { //arrange var invoice = new Invoice(); //act var result = invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 2, Cost = 0, Quantity = 1, Description = "Orange" }); //Assert Assert.IsFalse(result.Success, "Invoice Item must have a non-zero cost"); //arrange invoice = new Invoice(); //act result = invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 2, Cost = -1, Quantity = 1, Description = "Orange" }); //Assert Assert.IsFalse(result.Success, "Invoice Item must have a non-negative quantity"); }
public Invoice CreateBasedInOrder(Order order) { var invoice = new Invoice(order); var invoiceLines = new List <InvoiceLine>(); var taxLine = new TaxLine(); foreach (var line in order.OrderLines) { var currentTaxLine = taxLine.GetDefaultTaxes(line.TotalPrice); var invoiceLine = new InvoiceLine(orderLine: line, taxLine: currentTaxLine); invoiceLines.Add(invoiceLine); } foreach (var line in invoiceLines) { invoice.AddInvoiceLine(line); } if (!invoice.Valid) { return(invoice); } order.Bill(); _orderRepository.Update(order); _invoiceRepository.Create(invoice); _uow.Commit(); return(invoice); }
public void AddInvoiceLine_EmptyValue_Fail() { var invoice = new Invoice() { InvoiceNumber = 1210, InvoiceDate = DateTime.Now }; InvoiceLine invoiceLine = null; Assert.False(invoice.AddInvoiceLine(invoiceLine)); }
public void AddNullInvoiceLine() { //arrange var invoice = new Invoice(); //act var result = invoice.AddInvoiceLine(null); //Assert Assert.IsFalse(result.Success, "should not be able to add null invoice item"); }
public decimal MergeInvoices() { var invoice1 = new Invoice(); invoice1.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 1, Cost = 10.33m, Quantity = 4, Description = "Banana" }); var invoice2 = new Invoice(); invoice2.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 2, Cost = 5.22m, Quantity = 1, Description = "Orange" }); invoice2.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 3, Cost = 6.27m, Quantity = 3, Description = "Blueberries" }); invoice1.MergeInvoices(invoice2); var total = invoice1.GetTotal(); new LogManager().Log($"MergeInvoices(). Total: {total}"); return(total); }
public void AddInvalidDescriptionInvoiceLine() { //arrange var invoice = new Invoice(); //act var result = invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 2, Cost = 5, Quantity = 5, Description = "" }); //Assert Assert.IsFalse(result.Success, "InvoiceLine must have a description"); }
public decimal CreateInvoiceWithOneItem() { var invoice = new Invoice(); invoice.AddInvoiceLine(new InvoiceLine() { InvoiceLineId = 1,//"1" Cost = 6.99m, Quantity = 1, Description = "Apple" }); decimal total = invoice.GetTotal(); new LogManager().Log($"CreateInvoiceWithOneItem(). Total: {total}"); return(total); }
public void RemoveValidInvoiceLines() { //arrange var invoice = new Invoice(); var invoiceItem1 = new InvoiceLine() { InvoiceLineId = 1, Cost = 10.21, Quantity = 4, Description = "Banana" }; //act invoice.AddInvoiceLine(invoiceItem1); var result = invoice.RemoveInvoiceLine(1); //assert Assert.IsTrue(invoice.LineItems.Count == 0, "LineItems was not removed successfully "); Assert.IsTrue(result.Success, "LineItems was not removed successfully "); }
public void RemoveInValidInvoiceLines() { //arrange var invoice = new Invoice(); var invoiceItem1 = new InvoiceLine() { InvoiceLineId = 1, Cost = 10.21, Quantity = 4, Description = "Banana" }; //act invoice.AddInvoiceLine(invoiceItem1); var result = invoice.RemoveInvoiceLine(2); //assert Assert.IsTrue(invoice.LineItems.Count == 1, "No LineItems should have been removed"); Assert.IsTrue(invoice.LineItems[0] == invoiceItem1, "No LineItems should have been removed"); Assert.IsFalse(result.Success, "RemoveInvoiceLine should have failed"); }