public override bool Equals(object obj) { OrderItemLine line = obj as OrderItemLine; if (line != null) { return(line.Id == this.Id); } return(base.Equals(obj)); }
public void AddingLineWithAlreadyExistingSkuWillSetItBackToEmpty() { OrderItemLine line1 = new OrderItemLine(1, "1234-56789", "#2 Pencil Pack", 1.99m, 10, 19.9m, false); OrderItemLine line2 = new OrderItemLine(); view.OrderItemsLines.Add(line1); view.OrderItemsLines.Add(line2); OrderItemLine newLine2 = new OrderItemLine(1, "1234-56789", null, null, 2, null, false); newLine2.Id = line2.Id; presenter.OnChangedOrderItemLine(newLine2); Assert.AreEqual(2, view.OrderItemsLines.Count); OrderItemLine updatedLine = view.OrderItemsLines[1]; Assert.AreEqual(line2.Id, updatedLine.Id); Assert.IsTrue(String.IsNullOrEmpty(updatedLine.Sku)); Assert.IsTrue(String.IsNullOrEmpty(updatedLine.Name)); Assert.IsNull(updatedLine.Price); Assert.IsFalse(updatedLine.ProductId > 0); }
public void ShouldUpdateProductPriceOnChangeOrderItemLine() { productService.AddProduct(new Product(1, "1234-56789", "#2 Pencil Pack", 1.99m, null)); decimal fakePrice = 0.01m; OrderItemLine line1 = new OrderItemLine(1, "1234-56789", "Fake product name", fakePrice, 10, 0m, false); view.OrderItemsLines.Add(line1); presenter.OnChangedOrderItemLine(line1); Assert.IsTrue(view.OrderItemsLinesRequested); Assert.IsTrue(view.OrderItemsLinesShown); Assert.AreEqual(1.99m, view.OrderItemsLines[0].Price); Assert.AreEqual("#2 Pencil Pack", view.OrderItemsLines[0].Name); }
public void ShouldUpdateOrderItemSkuOnProductSelected() { view.OrderItemsLines = new List<OrderItemLine>(); productService.AddProduct(new Product(1, "1234-56789", "#2 Pencil Pack", 1.99m, null)); OrderItemLine line1 = new OrderItemLine(1, "1234-56789", "#2 Pencil Pack", 1.99m, 10, 19.9m, false); OrderItemLine line2 = new OrderItemLine(2, "9876-54321", "Stencil Pad", .79m, 10, 7.9m, false); view.OrderItemsLines.Add(line1); view.OrderItemsLines.Add(line2); view.EditingOrderItemLine = line1; presenter.OnProductSelected("1234-56789"); Assert.IsTrue(view.SetEditingProductCalled); Assert.AreEqual("1234-56789", view.ShownSku); Assert.AreEqual("#2 Pencil Pack", view.ShownName); Assert.AreEqual(1.99m, view.ShownPrice); }
public void ShouldUpdateItemTotalAndOrderTotalOnOrderItemLineChanged() { decimal? price = 1.99m; productService.AddProduct(new Product(1, "1234-56789", "#2 Pencil Pack", 1.99m, null)); productService.AddProduct(new Product(2, "9876-54321", "Stencil Pad", 0.79m, null)); //Total set to 0, so it can be updated by the presenter. OrderItemLine line1 = new OrderItemLine(1, "1234-56789", "#2 Pencil Pack", price, 10, 0m, false); OrderItemLine line2 = new OrderItemLine(2, "9876-54321", "Stencil Pad", .79m, 10, 7.9m, false); view.OrderItemsLines.Add(line1); view.OrderItemsLines.Add(line2); short newQty = 20; OrderItemLine lineUpdated = new OrderItemLine(1, line1.Sku, line1.Name, line1.Price, newQty, 0, false); lineUpdated.Id = line1.Id; presenter.OnChangedOrderItemLine(lineUpdated); Assert.IsTrue(view.OrderItemsLinesRequested); Assert.IsTrue(view.OrderItemsLinesShown); Assert.AreEqual(newQty, view.OrderItemsLines[0].Quantity); Assert.AreEqual(price * newQty, view.OrderItemsLines[0].Total); Assert.AreEqual(line1.Total + line2.Total, view.OrderTotalPrice); }
public void ShouldSubmitOrderItemsToControllerOnSave() { OrderItemLine line1 = new OrderItemLine(1, "1234-56789", "#2 Pencil Pack", 1.99m, 10, 19.9m, false); OrderItemLine line2 = new OrderItemLine(2, "9876-54321", "Stencil Pad", .79m, 10, 7.9m, false); view.OrderItemsLines.Add(line1); view.OrderItemsLines.Add(line2); presenter.OnSave(); Assert.IsTrue(controller.SaveCurrentOrderAsDraftCalled); Assert.AreEqual(2, controller.CurrentOrder.Details.Count); Assert.AreEqual(1, controller.CurrentOrder.Details[0].ProductId); Assert.AreEqual(2, controller.CurrentOrder.Details[1].ProductId); }
public void ShouldMaintainSelectedValueWhenEditingOrderLine() { view.OrderItemsLines = new List<OrderItemLine>(); OrderItemLine line1 = new OrderItemLine(1, "1234-56789", "#2 Pencil Pack", 1.99m, 10, 19.9m, false); OrderItemLine line2 = new OrderItemLine(2, "9876-54321", "Stencil Pad", .79m, 10, 7.9m, false); view.OrderItemsLines.Add(line1); view.OrderItemsLines.Add(line2); bool selectedValue = true; int rowIndex = 1; presenter.OnEditOrderItemLine(rowIndex, selectedValue); Assert.IsTrue(view.OrderItemsLinesRequested); Assert.IsTrue(view.OrderItemsLinesShown); Assert.AreEqual(selectedValue, view.OrderItemsLines[rowIndex].Selected); }
public void ShouldIgnoreInvalidOrderItemsWhenPassingToControllerOnSave() { OrderItemLine line1 = new OrderItemLine(1, "1234-56789", "#2 Pencil Pack", 1.99m, 10, 19.9m, false); OrderItemLine line2 = new OrderItemLine(2, "9876-54321", "Stencil Pad", null, 10, 7.9m, false); //Invalid, no UnitPrice OrderItemLine line3 = new OrderItemLine(2, "9876-54321", "Stencil Pad", .79m, 0, 7.9m, false); //Invalid, quantity is zero view.OrderItemsLines.Add(line1); view.OrderItemsLines.Add(line2); view.OrderItemsLines.Add(line3); presenter.OnSave(); Assert.AreEqual(1, controller.CurrentOrder.Details.Count); Assert.AreEqual(1, controller.CurrentOrder.Details[0].ProductId); }
public void ShouldDeleteCorrectOrderLinesOnDelete() { OrderItemLine line1 = new OrderItemLine(1, "1234-56789", "#2 Pencil Pack", 1.99m, 10, 19.90m, false); OrderItemLine line2 = new OrderItemLine(2, "9876-54321", "Stencil Pad", .79m, 10, 7.9m, false); OrderItemLine line3 = new OrderItemLine(3, "4356-43239", "#6 Pencil Pack", 1.99m, 10, 19.90m, false); view.OrderItemsLines.Add(line1); view.OrderItemsLines.Add(line2); view.OrderItemsLines.Add(line3); List<OrderItemLine> lines = new List<OrderItemLine>(); lines.Add(line1); lines.Add(line3); presenter.OnDeleteOrderItemLines(lines); Assert.IsTrue(view.OrderItemsLinesShown); Assert.AreEqual(1, view.OrderItemsLines.Count); Assert.AreEqual(line2, view.OrderItemsLines[0]); }
public void ShouldDeleteAndShowRemainingOrderItemLinesOnDelete() { List<OrderItemLine> lines = new List<OrderItemLine>(); OrderItemLine orderItemLine = new OrderItemLine(); view.OrderItemsLines.Add(orderItemLine); lines.Add(orderItemLine); presenter.OnDeleteOrderItemLines(lines); Assert.IsTrue(view.OrderItemsLinesShown); Assert.AreEqual(0, view.OrderItemsLines.Count); }
public void RepeatedSkuIsNotValid() { string sku = "1234-56789"; OrderItemLine line1 = new OrderItemLine(1, sku, "#2 Pencil Pack", 1.99m, 10, 19.9m, false); view.OrderItemsLines.Add(line1); string errorMessage = string.Empty; Assert.IsFalse(presenter.IsSkuValid(sku, out errorMessage)); Assert.IsFalse(string.IsNullOrEmpty(errorMessage)); }
public void NotUsedSkuIsValid() { OrderItemLine line1 = new OrderItemLine(1, "1234-56789", "#2 Pencil Pack", 1.99m, 10, 19.9m, false); view.OrderItemsLines.Add(line1); Product product = new Product(1, "9876-54321", "#2 Pencil Pack", 1.99m, "#2 Pencil Pack"); productService.AddProduct(product); string errorMessage = string.Empty; Assert.IsTrue(presenter.IsSkuValid("9876-54321", out errorMessage)); Assert.IsTrue(string.IsNullOrEmpty(errorMessage)); }