예제 #1
0
        public ActionResult Edit(Product product,HttpPostedFileBase image = null)
        {
            if(ModelState.IsValid)
            {
                if(image != null)
                {   //set to save image to DB

                    product.ImageMimeType = image.ContentType;
                    product.ImageData = new byte[image.ContentLength];
                    image.InputStream.Read(product.ImageData, 0, image.ContentLength);
                }
                if(product.ProductID != 0)
                {
                    repository.SaveProduct(product);
                }

                //saved msg 'til session end
                TempData["message"] = string.Format("{0} has been saved", product.Name);
                return RedirectToAction("Index");
            }
            else
            { //some thing wrong with data let user fix it
                return View(product);
            }
        }
예제 #2
0
        public void Can_Retrieve_Image_Data()
        {
            // Arrange - create a Product with image data
            Product prod = new Product
            {
                ProductID = 2,
                Name = "Test",
                ImageData = new byte[] { },
                ImageMimeType = "image/png"
            };
            // Arrange - create the mock repository
            Mock<IProductsRepository> mock = new Mock<IProductsRepository>();
            mock.Setup(m => m.Products).Returns(new Product[] {
                new Product {ProductID = 1, Name = "P1"},
                prod,
                new Product {ProductID = 3, Name = "P3"}
                }.AsQueryable());
            // Arrange - create the controller
            ProductController target = new ProductController(mock.Object);

            // Act - call the GetImage action method
            ActionResult result = target.GetImage(2);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(FileResult));
            Assert.AreEqual(prod.ImageMimeType,
            ((FileResult)result).ContentType);
        }
예제 #3
0
 public void DeleteProduct(Product product)
 {
     
         context.Products.Remove(product);
    
     context.SaveChanges();
 }
예제 #4
0
 public void Add( Product product, int quantity )
 {
     if (_lines.Count(x=>x.Product.ProductID == product.ProductID) > 0) {
         _lines.Where(x=>x.Product.ProductID == product.ProductID).First().Quantity += quantity;
     }
     else {
         _lines.Add(new CartLine { Product = product, Quantity = quantity });
     }
 }
 public void EditTest_CanSaveValidChanges()
 {
     var mock = new Mock<IProductRepository>();
     var target = new AdminController(mock.Object);
     var product = new Product { Name = "Test" };
     ActionResult actual = target.Edit(product, null);
     ////检查是否调用了存储库
     mock.Verify(m => m.SaveProduct(product));
     ////检查方法的结果类型
     Assert.IsNotInstanceOfType(actual, typeof(ViewResult));
 }
예제 #6
0
 public ActionResult Edit(Product product)
 {
     if (ModelState.IsValid) {
         _repository.Save(product);
         TempData["message"] = product.Name + " has been saved";
         return RedirectToAction("Index");
     }
     else {
         return View(product);
     }
 }
 public void EditTest_CannotSaveInvalidChanges()
 {
     var mock = new Mock<IProductRepository>();
     var target = new AdminController(mock.Object);
     var product = new Product { Name = "Test" };
     target.ModelState.AddModelError("error", "error");
     ActionResult actual = target.Edit(product, null);
     ////检查是否调用了存储库
     mock.Verify(m => m.SaveProduct(It.IsAny<Product>()), Times.Never());
     ////检查方法的结果类型
     Assert.IsInstanceOfType(actual, typeof(ViewResult));
 }
        public void Save(Product product)
        {
            if (product.ProductID == 0) {
                productsTable.InsertOnSubmit(product);
            }
            else if (productsTable.GetOriginalEntityState(product) == null) {
                productsTable.Attach(product);
                productsTable.Context.Refresh(RefreshMode.KeepCurrentValues, product);
            }

            productsTable.Context.SubmitChanges();
        }
예제 #9
0
        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, 2);
            target.AddItem(p2, 2);
            decimal result = target.ComputeTotalValue();

            Assert.AreEqual(result, 300M);
        }
예제 #10
0
파일: Cart.cs 프로젝트: sug27/BootCampWork
        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;
            }
        }
예제 #11
0
        public void CanClearContent()
        {
            Product product1 = new Product { ProductId = 1, Name = "Product1", Price = 100m };
            Product product2 = new Product { ProductId = 2, Name = "Product2", Price = 50m };

            Cart target = new Cart();
            target.AddItem(product1, 1);
            target.AddItem(product2, 1);

            target.Clear();

            Assert.AreEqual(target.Lines.Count(), 0);
        }
예제 #12
0
        public void CanAddNewLines()
        {
            Product product1 = new Product { ProductId = 1, Name = "Product1" };
            Product product2 = new Product { ProductId = 2, Name = "Product2" };

            Cart target = new Cart();
            target.AddItem(product1, 1);
            target.AddItem(product2, 1);
            CartLine[] result = target.Lines.ToArray();

            Assert.AreEqual(result.Length, 2);
            Assert.AreEqual(result[0].Product, product1);
            Assert.AreEqual(result[1].Product, product2);
        }
예제 #13
0
        public void CalcuateCartTotal()
        {
            Product product1 = new Product { ProductId = 1, Name = "Product1", Price = 100m };
            Product product2 = new Product { ProductId = 2, Name = "Product2", Price = 50m };

            Cart target = new Cart();
            target.AddItem(product1, 1);
            target.AddItem(product2, 1);
            target.AddItem(product1, 3);

            decimal actual = target.ComputeTotalValue();
            decimal expected = 450m;

            Assert.AreEqual(actual, expected);
        }
예제 #14
0
       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);
        }
예제 #15
0
        public void Can_Add_Quantity_For_Existing_Item()
        {
            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, 1);
            CartLine[] results = target.Lines.ToArray();

            Assert.AreEqual(results.Length, 2);
            Assert.AreEqual(results[0].Quantity, 2);
        }
예제 #16
0
파일: Cartest.cs 프로젝트: vanhp/SportStore
 public void Calculate_Cart_Total()
 {
     // Arrange - create some test products
     Product p1 = new Product { ProductID = 1, Name = "P1", Price = 100M };
     Product p2 = new Product { ProductID = 2, Name = "P2", Price = 50M };
     // Arrange - create a new cart
     Cart target = new Cart();
     // Act
     target.AddItem(p1, 1);
     target.AddItem(p2, 1);
     target.AddItem(p1, 3);
     decimal result = target.ComputeTotalValue();
     // Assert
     Assert.AreEqual(result, 450M);
 }
예제 #17
0
        public void CanAddQuantityForExistingLines()
        {
            Product product1 = new Product { ProductId = 1, Name = "Product1" };
            Product product2 = new Product { ProductId = 2, Name = "Product2" };

            Cart target = new Cart();
            target.AddItem(product1, 1);
            target.AddItem(product2, 1);
            target.AddItem(product1, 10);

            CartLine[] result = target.Lines.OrderBy(c => c.Product.ProductId).ToArray();

            Assert.AreEqual(result.Length, 2);
            Assert.AreEqual(result[0].Quantity, 11);
            Assert.AreEqual(result[1].Quantity, 1);
        }
예제 #18
0
        public void Can_Delete_Valid_Products()
        {
            Product product = new Product { ProductID = 2, Name = "Test" };

            Mock<IProductsRepository> mock = new Mock<IProductsRepository>();
            mock.Setup(m => m.Products).Returns(new Product[]{
                new Product{ProductID = 1, Name = "P1"},
                new Product{ProductID = 3, Name = "P3"}
            });

            AdminController target = new AdminController(mock.Object);

            target.Delete(product.ProductID);

            mock.Verify(m => m.DeleteProduct(product.ProductID));
        }
예제 #19
0
        public void Cannot_Save_Invalid_Changes()
        {
            Mock<IProductsRepository> mock = new Mock<IProductsRepository>();

            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.IsInstanceOfType(result, typeof(ViewResult));
        }
예제 #20
0
파일: Cartest.cs 프로젝트: vanhp/SportStore
 public void Can_Add_New_Lines()
 {
     // Arrange - create some test products
     Product p1 = new Product { ProductID = 1, Name = "P1" };
     Product p2 = new Product { ProductID = 2, Name = "P2" };
     // Arrange - create a new cart
     Cart target = new Cart();
     // Act
     target.AddItem(p1, 1);
     target.AddItem(p2, 1);
     CartLine[] results = target.Lines.ToArray();
     // Assert
     Assert.AreEqual(results.Length, 2);
     Assert.AreEqual(results[0].Product, p1);
     Assert.AreEqual(results[1].Product, p2);
 }
예제 #21
0
        public void can_add_products_to_cart()
        {
            // arrange
            IProductsRepository repository = Substitute.For<IProductsRepository>();
            Product someProduct = new Product { ProductID= 123 };
            repository.Products.Returns( new List<Product> { someProduct }.AsQueryable() );
            Cart cart = new Cart();

            CartController controller = new CartController(repository, null);

            // act
            controller.AddProduct(123, null, cart);

            // assert
            cart.Lines[0].Product.ShouldEqual(someProduct);
        }
예제 #22
0
        public void CanRemoveLine()
        {
            Product product1 = new Product { ProductId = 1, Name = "Product1" };
            Product product2 = new Product { ProductId = 2, Name = "Product2" };
            Product product3 = new Product { ProductId = 3, Name = "Product3" };

            Cart target = new Cart();
            target.AddItem(product1, 1);
            target.AddItem(product2, 3);
            target.AddItem(product3, 5);
            target.AddItem(product2, 1);

            target.RemoveLine(product2);

            Assert.AreEqual(target.Lines.Where(c => c.Product == product2).Count(), 0);
            Assert.AreEqual(target.Lines.Count(), 2);
        }
예제 #23
0
파일: Cartest.cs 프로젝트: vanhp/SportStore
 public void Can_Add_Quantity_For_Existing_Lines()
 {
     // Arrange - create some test products
     Product p1 = new Product { ProductID = 1, Name = "P1" };
     Product p2 = new Product { ProductID = 2, Name = "P2" };
     // Arrange - create a new cart
     Cart target = new Cart();
     // Act
     target.AddItem(p1, 4);
     target.AddItem(p2, 1);
     target.AddItem(p1, 3);
     CartLine[] results = target.Lines.OrderBy(c => c.Product.ProductID).ToArray();
     // Assert
     Assert.AreEqual(results.Length, 2);
     Assert.AreEqual(results[0].Quantity, 7);
     Assert.AreEqual(results[1].Quantity, 1);
 }
예제 #24
0
 public ActionResult Edit(Product product, HttpPostedFileBase image)
 {
     if (ModelState.IsValid)
     {
         if (image != null)
         {
             product.ImageMimeType = image.ContentType;
             product.ImageData = new byte[image.ContentLength];
             image.InputStream.Read(product.ImageData, 0, image.ContentLength);
         }
         repository.SaveProduct(product);
         TempData["message"] = string.Format("{0} has been saved", product.Name);
         return RedirectToAction("Index");
     }
     else
     {
         return View(product);
     }
 }
예제 #25
0
        public void Can_Remove_Lines()
        {
            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, 3);
            target.AddItem(p2, 1);
            target.RemoveLine(p2);
            target.AddItem(p3, 3);

            Assert.AreEqual(target.Lines.Where(c => c.Product == p2).Count(), 0);
            Assert.AreEqual(target.Lines.Where(c => c.Product == p1).Count(), 1);

            Assert.AreEqual(target.Lines.Count(), 2);

        }
예제 #26
0
파일: Cartest.cs 프로젝트: vanhp/SportStore
 public void Can_Clear_Contents()
 {
     // Arrange - create some test products
     Product p1 = new Product
     {
         ProductID = 1,
         Name = "P1",
         Price = 100M
     };
     Product p2 = new Product { ProductID = 2, Name = "P2", Price = 50M };
     // Arrange - create a new cart
     Cart target = new Cart();
     // Arrange - add some items
     target.AddItem(p1, 1);
     target.AddItem(p2, 1);
     // Act - reset the cart
     target.Clear();
     // Assert
     Assert.AreEqual(target.Lines.Count(), 0);
 }
예제 #27
0
 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;
             dbEntry.ImageData = product.ImageData;
             dbEntry.ImageMimeType = product.ImageMimeType;
         }
     }
     context.SaveChanges();
 }
예제 #28
0
 public void Can_Retrieve_Image_Data()
 {
     var prod = new Product
     {
         ProductID = 2,
         Name = "Test",
         ImageData = new byte[] { },
         ImageMimeType = "image/png"
     };
     var mock = new Mock<IProductRepository>();
     mock.Setup(m => m.Products)
         .Returns(value: new Product[]
         {
             new Product{ProductID = 1,Name = "P1"},
             prod,
             new Product(){ProductID = 3,Name = "P3"}, 
         }.AsQueryable());
     var target = new ProductController(mock.Object);
     ActionResult result = target.GetImage(2);
     Assert.IsNotNull(result);
     Assert.IsInstanceOfType(result, typeof(FileResult));
     Assert.AreEqual(prod.ImageMimeType, ((FileResult)result).ContentType);
 }
예제 #29
0
 public void Remove(Product product)
 {
     _lineCollection.RemoveAll(p => p.Product.ProductId == product.ProductId);
 }
예제 #30
0
        public void Can_Save_Valid_Changes()
        {
            Mock<IProductsRepository> mock = new Mock<IProductsRepository>();

            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));
        }
예제 #31
0
파일: Cart.cs 프로젝트: sug27/BootCampWork
 public void RemoveLine(Product product)
 {
     lineCollection.RemoveAll(l => l.Product.ProductID == product.ProductID);
 }