public void AddItem(Product product, int quantity) { CartLine line = lineCollection.Where(p => p.Product.ProductID == product.ProductID).FirstOrDefault(); if (line == null) { lineCollection.Add(new CartLine { Product = product, Quantity = quantity }); } else { line.Quantity += quantity; } }
public ActionResult Edit(Product product) { if (ModelState.IsValid) { repository.SaveProduct(product); TempData["message"] = string.Format("{0} has been saved", product.Name); return RedirectToAction("Index"); } else { return View(product); } }
public void Can_Save_Valid_Changes() { Mock<IProductRepository> mock = new Mock<IProductRepository>(); AdminController target = new AdminController(mock.Object); Product product = new Product { Name = "Test" }; ActionResult result = target.Edit(product); mock.Verify(m => m.SaveProduct(product)); Assert.IsNotInstanceOfType(result, typeof(ViewResult)); }
public void Calculate_Cart_Total() { Product p1 = new Product { ProductID = 1, Name = "P1", Price = 100M }; Product p2 = new Product { ProductID = 2, Name = "P2", Price = 50M }; Cart target = new Cart(); target.AddItem(p1, 1); target.AddItem(p2, 1); target.AddItem(p1, 3); decimal result = target.ComputeTotalValue(); Assert.AreEqual(result, 450M); }
public void Can_Add_New_Lines() { Product p1 = new Product { ProductID = 1, Name = "P1" }; Product p2 = new Product { ProductID = 2, Name = "P2" }; Cart target = new Cart(); target.AddItem(p1, 1); target.AddItem(p2, 1); CartLine[] results = target.Lines.ToArray(); Assert.AreEqual(results.Length, 2); Assert.AreEqual(results[0].Product, p1); Assert.AreEqual(results[1].Product, p2); }
public void Can_Add_Quantity_For_Existing_Lines() { Product p1 = new Product { ProductID = 1, Name = "P1" }; Product p2 = new Product { ProductID = 2, Name = "P2" }; Cart target = new Cart(); target.AddItem(p1, 1); target.AddItem(p2, 1); target.AddItem(p1, 10); CartLine[] results = target.Lines.OrderBy(c => c.Product.ProductID).ToArray(); Assert.AreEqual(results.Length, 2); Assert.AreEqual(results[0].Quantity, 11); Assert.AreEqual(results[1].Quantity, 1); }
public void SaveProduct(Product product) { if (product.ProductID == 0) { context.Products.Add(product); } else { Product dbEntry = context.Products.Find(product.ProductID); if (dbEntry != null) { dbEntry.Name = product.Name; dbEntry.Description = product.Description; dbEntry.Price = product.Price; dbEntry.Category = product.Category; } } context.SaveChanges(); }
public void Can_Remove_Line() { Product p1 = new Product { ProductID = 1, Name = "P1" }; Product p2 = new Product { ProductID = 2, Name = "P2" }; Product p3 = new Product { ProductID = 3, Name = "P3" }; Cart target = new Cart(); target.AddItem(p1, 1); target.AddItem(p2, 3); target.AddItem(p3, 5); target.AddItem(p2, 1); target.RemoveLine(p2); Assert.AreEqual(target.Lines.Where(c => c.Product == p2).Count(), 0); Assert.AreEqual(target.Lines.Count(), 2); }
public void Cannot_Save_Invalid_Changes() { Mock<IProductRepository> mock = new Mock<IProductRepository>(); AdminController target = new AdminController(mock.Object); Product product = new Product { Name = "Test" }; target.ModelState.AddModelError("error", "error"); ActionResult result = target.Edit(product); mock.Verify(m => m.SaveProduct(It.IsAny<Product>()), Times.Never()); Assert.IsNotInstanceOfType(result, typeof(ViewResult)); }
public void Can_Delete_Valid_Products() { Product prod = new Product { ProductID = 2, Name = "Test" }; Mock<IProductRepository> mock = new Mock<IProductRepository>(); mock.Setup(m => m.Products).Returns(new Product[] { new Product {ProductID = 1, Name = "P1"}, prod, new Product {ProductID = 3, Name = "P2"}, }.AsQueryable()); AdminController target = new AdminController(mock.Object); target.Delete(prod.ProductID); mock.Verify(m => m.DeleteProduct(prod.ProductID)); }
public void Can_Clear_Contents() { Product p1 = new Product { ProductID = 1, Name = "P1", Price = 100M }; Product p2 = new Product { ProductID = 2, Name = "P2", Price = 50M }; Cart target = new Cart(); target.AddItem(p1, 1); target.AddItem(p2, 2); target.Clear(); Assert.AreEqual(target.Lines.Count(), 0); }
public void RemoveLine(Product product) { lineCollection.RemoveAll(l => l.Product.ProductID == product.ProductID); }