Ejemplo n.º 1
0
        public void Can_Get_CityAndCountryPorvider_CitySelectListItem()
        {
            MyMock mock = new MyMock();

            SelectListItem[] result = CityAndCountryPorvider.GetCitySelectListItem(mock.ProductRepository.Object.Cities, 2);

            Assert.AreEqual(4, result.Length);
            Assert.AreEqual("City1", result[0].Text);
            Assert.AreEqual("1", result[0].Value);
            Assert.AreEqual("City3", result[2].Text);
            Assert.AreEqual("3", result[2].Value);
            Assert.IsTrue(result[1].Selected);
        }
Ejemplo n.º 2
0
        public void Can_Get_Data()
        {
            MyMock myMock = new MyMock();

            myMock.ProductRepository.Setup(m => m.Products).Returns(GetProductsData());
            var controller = new WebApiController(myMock.ProductRepository.Object);

            ProductsListJsonViewModel result = controller.GetSpecifyProductIntro("ALL");

            Assert.AreEqual(5, result.CategoryList.Count());
            Assert.AreEqual("ALL", result.CategoryList.First());
            Assert.AreEqual(10, result.Products.Count());
            Assert.AreEqual(2, result.TotalPage);
        }
Ejemplo n.º 3
0
        public void Can_Get_Initial_UserData_in_Edit_User()
        {
            var myMock     = new MyMock();
            var controller = new HomeController(myMock.ProductRepository.Object, myMock.UserManager.Object);

            UserInfoEditModel result = (controller.EditUser() as ViewResult).Model as UserInfoEditModel;

            Assert.AreEqual("testuser", result.Name);
            Assert.AreEqual("*****@*****.**", result.Email);
            Assert.AreEqual("0987654321", result.Phone);
            Assert.AreEqual(1, result.CityID);
            Assert.AreEqual(1, result.CountryID);
            Assert.AreEqual("111號", result.ShippingAddress);
        }
Ejemplo n.º 4
0
        public void Check_BtnOnNavBar_With_Administrators_Logined()
        {
            var myMock = new MyMock();

            myMock.UserManager.Setup(u => u.IsAuthenticated).Returns(true);
            myMock.UserManager.Setup(u => u.IsInRole(It.IsAny <string>(), "Administrators")).Returns(true);
            var controller = new AccountController(myMock.UserManager.Object);

            Dictionary <string, object> result = controller.BtnOnNavBar().Model as Dictionary <string, object>;

            Assert.AreEqual(2, result.Count);
            Assert.AreEqual(0, result["AccountLevel"]);
            Assert.AreEqual(myMock.AppUser.UserName, result["UserName"]);
        }
Ejemplo n.º 5
0
        public void Can_Get_Data_With_KeyString()
        {
            MyMock myMock = new MyMock();
            string key    = "2";

            myMock.ProductRepository.Setup(m => m.Products).Returns(GetProductsData());
            var controller = new WebApiController(myMock.ProductRepository.Object);

            ProductsListJsonViewModel result = controller.GetSpecifyProductIntro("ALL", key);

            Assert.AreEqual(3, result.Products.Count());
            Assert.AreEqual(1, result.TotalPage);
            Assert.AreEqual("smartphone2", result.Products.First().Name);
        }
Ejemplo n.º 6
0
        public void Cannot_Add_Invalid_Product_To_Cart()
        {
            var myMock = new MyMock();

            myMock.ProductRepository.Setup(m => m.Products).Returns(new Product[] {
                new Product {
                    ID = 1, Name = "P1", CategoryID = 1
                },
            }.AsQueryable());
            Cart           cart   = new Cart();
            CartController target = new CartController(myMock.ProductRepository.Object, null, null, null);

            target.AddToCart(cart, 2, 1);

            Assert.AreEqual(cart.Lines.Count(), 0);
        }
Ejemplo n.º 7
0
        public void Cannot_View_Nonexistent_Product_Detail()
        {
            var myMock = new MyMock();

            myMock.ProductRepository.Setup(m => m.Products).Returns(new Product[]
            {
                new Product {
                    ID = 1, Name = "P1"
                }
            });
            HomeController controller = new HomeController(myMock.ProductRepository.Object, null);

            var result = controller.ProductDetail(2);

            Assert.AreEqual(400, ((HttpStatusCodeResult)result).StatusCode);
        }
Ejemplo n.º 8
0
        public void Can_View_Product_Detail()
        {
            var myMock = new MyMock();

            myMock.ProductRepository.Setup(m => m.Products).Returns(new Product[]
            {
                new Product {
                    ID = 1, Name = "P1"
                }
            });
            HomeController target = new HomeController(myMock.ProductRepository.Object, null);

            Product p1 = (target.ProductDetail(1) as ViewResult).Model as Product;

            Assert.AreEqual(1, p1.ID);
            Assert.AreEqual("P1", p1.Name);
        }
Ejemplo n.º 9
0
        public void Cannot_Get_Initial_Data_in_ProductEdit_When_Invalid_Id()
        {
            var myMock = new MyMock();

            myMock.ProductRepository.Setup(m => m.Products).Returns(new Product[] {
                new Product {
                    ID = 1, Name = "P1"
                },
                new Product {
                    ID = 2, Name = "P2"
                }
            });
            AdminController controller = new AdminController(myMock.ProductRepository.Object, myMock.UserManager.Object);

            ActionResult result = controller.ProductEdit(3);

            Assert.AreEqual(400, ((HttpStatusCodeResult)result).StatusCode);
        }
Ejemplo n.º 10
0
        public void Cannot_Login_When_ModelState_Invalid()
        {
            var        myMock  = new MyMock();
            LoginModel details = new LoginModel()
            {
                Name = myMock.AppUser.UserName, Password = myMock.AppUser.PasswordHash
            };
            var controller = new AccountController(myMock.UserManager.Object);

            controller.ModelState.AddModelError("error", "error");

            var result     = controller.Login(details, "returnUrl") as Task <ActionResult>;
            var viewresult = result.Result as ViewResult;

            Assert.AreEqual("", viewresult.ViewName);
            Assert.AreEqual(details, viewresult.Model);
            Assert.AreEqual(false, viewresult.ViewData.ModelState.IsValid);
        }
Ejemplo n.º 11
0
        public void Cannot_Login_When_User_Nonexistent()
        {
            var myMock = new MyMock();

            myMock.UserManager.Setup(u => u.IsAuthenticated).Returns(false);
            myMock.UserManager.Setup(u => u.FindAsync(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(new AppUser());
            LoginModel details = new LoginModel()
            {
                Name = myMock.AppUser.UserName, Password = myMock.AppUser.PasswordHash
            };
            var controller = new AccountController(myMock.UserManager.Object);

            var result     = controller.Login(details, "returnUrl") as Task <ActionResult>;
            var viewresult = result.Result as ViewResult;

            Assert.AreEqual("returnUrl", viewresult.ViewBag.returnUrl);
            Assert.AreEqual(false, viewresult.ViewData.ModelState.IsValid);
        }
Ejemplo n.º 12
0
        public void Can_Remove_From_Cart()
        {
            var     myMock  = new MyMock();
            Product product = new Product {
                ID = 1, Name = "P1"
            };

            myMock.ProductRepository.Setup(m => m.Products).Returns(new Product[] {
                product,
            }.AsQueryable());
            Cart cart = new Cart();

            cart.AddItem(product, 2);
            CartController target = new CartController(myMock.ProductRepository.Object, null, null, null);

            target.RemoveFromCart(cart, product.ID, "ThisIsReturnUrl");

            Assert.AreEqual(cart.Lines.Count(), 0);
        }
Ejemplo n.º 13
0
        public void Can_Get_Initial_Data_in_ProductEdit()
        {
            var myMock = new MyMock();

            myMock.ProductRepository.Setup(m => m.Products).Returns(new Product[] {
                new Product {
                    ID = 1, Name = "P1"
                },
                new Product {
                    ID = 2, Name = "P2"
                }
            });
            AdminController controller = new AdminController(myMock.ProductRepository.Object, myMock.UserManager.Object);

            Product result = (controller.ProductEdit(1) as ViewResult).Model as Product;

            Assert.AreEqual(1, result.ID);
            Assert.AreEqual("P1", result.Name);
        }
Ejemplo n.º 14
0
        public void Remove_Product_From_Cart_Goes_ReturnUrl()
        {
            var     myMock  = new MyMock();
            Product product = new Product {
                ID = 1, Name = "P1"
            };

            myMock.ProductRepository.Setup(m => m.Products).Returns(new Product[] {
                product,
            }.AsQueryable());
            Cart cart = new Cart();

            cart.AddItem(product, 2);
            CartController target = new CartController(myMock.ProductRepository.Object, null, null, null);

            RedirectToRouteResult result = target.RemoveFromCart(cart, product.ID, "ThisIsReturnUrl");

            Assert.AreEqual(result.RouteValues["returnUrl"], "ThisIsReturnUrl");
        }
Ejemplo n.º 15
0
        public void Can_Login()
        {
            var myMock = new MyMock();

            myMock.UserManager.Setup(u => u.IsAuthenticated).Returns(false);
            myMock.UserManager.Setup(u => u.FindAsync(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(myMock.AppUser);
            myMock.UserManager.Setup(u => u.CreateIdentityAsync(It.IsAny <AppUser>(), It.IsAny <string>())).ReturnsAsync(new ClaimsIdentity());
            myMock.UserManager.Setup(u => u.AuthManager.SignOut());
            LoginModel details = new LoginModel()
            {
                Name = myMock.AppUser.UserName, Password = myMock.AppUser.PasswordHash
            };
            var controller = new AccountController(myMock.UserManager.Object);

            var result     = controller.Login(details, "returnUrl") as Task <ActionResult>;
            var viewresult = result.Result as RedirectResult;

            Assert.AreEqual("returnUrl", viewresult.Url);
        }
Ejemplo n.º 16
0
        public void Cannot_Checkout_Empty_Cart()
        {
            var     myMock   = new MyMock();
            Product product1 = new Product {
                ID = 1, Name = "P1"
            };
            Product product2 = new Product {
                ID = 1, Name = "P1"
            };

            myMock.ProductRepository.Setup(m => m.Products).Returns(new Product[] {
                product1, product2
            }.AsQueryable());
            Cart           cart   = new Cart();
            CartController target = new CartController(myMock.ProductRepository.Object, null, null, myMock.UserManager.Object);

            var result = target.Checkout(cart) as RedirectToRouteResult;

            Assert.AreEqual("Index", result.RouteValues["action"]);
        }
Ejemplo n.º 17
0
        public void Adding_Product_To_Cart_Then_Not_Redirect()
        {
            var myMock = new MyMock();

            myMock.ProductRepository.Setup(m => m.Products).Returns(new Product[] {
                new Product {
                    ID = 1, Name = "P1", CategoryID = 1
                },
                new Product {
                    ID = 2, Name = "P2", CategoryID = 1
                }
            }.AsQueryable());
            Cart           cart   = new Cart();
            CartController target = new CartController(myMock.ProductRepository.Object, null, null, null);

            RedirectToRouteResult result = target.AddToCart(cart, 2, 1);

            Assert.AreEqual(result.RouteValues["action"], "ProductDetail");
            Assert.AreEqual(result.RouteValues["productID"], 2);
        }
Ejemplo n.º 18
0
        public void Cannot_Edit_Nonexistent_Product()
        {
            var     myMock = new MyMock();
            Product p      = new Product {
                ID = 3, Name = "P3"
            };

            myMock.ProductRepository.Setup(m => m.Products).Returns(new Product[] {
                new Product {
                    ID = 1, Name = "P1"
                },
                new Product {
                    ID = 2, Name = "P2"
                }
            });
            AdminController controller = new AdminController(myMock.ProductRepository.Object, myMock.UserManager.Object);

            var          result     = controller.ProductEdit(p, null) as Task <ActionResult>;
            ActionResult viewresult = result.Result as ActionResult;

            Assert.AreEqual(((HttpStatusCodeResult)viewresult).StatusCode, 400);
        }
Ejemplo n.º 19
0
        public void Can_Delete_Valid_Products()
        {
            var     myMock = new MyMock();
            Product prod   = new Product {
                ID = 2, Name = "Test"
            };

            myMock.ProductRepository.Setup(m => m.Products).Returns(new Product[] {
                new Product {
                    ID = 1, Name = "P1"
                },
                prod,
                new Product {
                    ID = 3, Name = "P3"
                },
            });

            AdminController controller = new AdminController(myMock.ProductRepository.Object, myMock.UserManager.Object);

            controller.ProductDelete(prod.ID);

            myMock.ProductRepository.Verify(m => m.DeleteProduct(prod.ID), Times.Once());
        }
Ejemplo n.º 20
0
        public void Cannot_Create_User_When_ModelState_Invalid()
        {
            var myMock = new MyMock();
            CreateAccountModel userInfo = new CreateAccountModel
            {
                Name            = "UserName",
                Email           = "*****@*****.**",
                Password        = "******",
                PasswordConfirm = "12sd45er78",
                Phone           = "0123456789",
                CityID          = 2,
                CountryID       = 3,
                ShippingAddress = "999"
            };
            var controller = new AdminController(myMock.ProductRepository.Object, myMock.UserManager.Object);

            controller.ViewData.ModelState.AddModelError("error", "error");

            var result     = controller.UserCreate(userInfo) as Task <ActionResult>;
            var viewresult = result.Result as ViewResult;

            Assert.AreEqual("~/Views/Home/CreateUser.cshtml", viewresult.ViewName);
        }
Ejemplo n.º 21
0
        public void Cannot_Remove_Product_That_Not_In_Cart()
        {
            var     myMock   = new MyMock();
            Product product1 = new Product {
                ID = 1, Name = "P1"
            };
            Product product2 = new Product {
                ID = 1, Name = "P1"
            };

            myMock.ProductRepository.Setup(m => m.Products).Returns(new Product[] {
                product1, product2
            }.AsQueryable());
            Cart cart = new Cart();

            cart.AddItem(product1, 2);
            CartController target = new CartController(myMock.ProductRepository.Object, null, null, null);

            target.RemoveFromCart(cart, 2, "ThisIsReturnUrl");

            Assert.AreEqual(cart.Lines.Count(), 1);
            Assert.AreEqual(cart.Lines.First().Product.ID, 1);
            Assert.AreEqual(cart.Lines.First().Quantity, 2);
        }
Ejemplo n.º 22
0
        public void Can_Edit_Product()
        {
            var     myMock = new MyMock();
            Product p      = new Product {
                ID = 1, Name = "NewName"
            };

            myMock.ProductRepository.Setup(m => m.Products).Returns(new Product[] {
                new Product {
                    ID = 1, Name = "P1"
                },
                new Product {
                    ID = 2, Name = "P2"
                }
            });
            myMock.ProductRepository.Setup(m => m.SaveProduct(It.IsAny <Product>()));
            AdminController controller = new AdminController(myMock.ProductRepository.Object, myMock.UserManager.Object);

            var result = controller.ProductEdit(p, null) as Task <ActionResult>;
            RedirectToRouteResult viewresult = result.Result as RedirectToRouteResult;

            myMock.ProductRepository.Verify(m => m.SaveProduct(p), Times.Once());
            Assert.AreEqual("ProductIndex", viewresult.RouteValues["action"]);
        }
Ejemplo n.º 23
0
        public void Can_Create_User()
        {
            var myMock = new MyMock();

            //不確認CreateAsync功能
            myMock.UserManager.Setup(u => u.CreateAsync(It.IsAny <AppUser>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Success);
            CreateAccountModel userInfo = new CreateAccountModel
            {
                Name            = "UserName",
                Email           = "*****@*****.**",
                Password        = "******",
                PasswordConfirm = "12sd45er78",
                Phone           = "0123456789",
                CityID          = 2,
                CountryID       = 3,
                ShippingAddress = "999"
            };
            var controller = new AdminController(myMock.ProductRepository.Object, myMock.UserManager.Object);

            var result     = controller.UserCreate(userInfo) as Task <ActionResult>;
            var viewresult = result.Result;

            Assert.AreEqual("UserIndex", (viewresult as RedirectToRouteResult).RouteValues["action"]);
        }
Ejemplo n.º 24
0
        public void Can_View_Order_Index()
        {
            var myMock = new MyMock();

            myMock.ProductRepository.Setup(m => m.ProductOrders).Returns(new ProductOrder[]
            {
                new ProductOrder {
                    ID              = 1,
                    AppUserID       = "1",
                    Date            = new DateTime(2020, 12, 12, 12, 12, 12),
                    ProductList     = "1:name,2,199",
                    ReceiverName    = "rec",
                    ShippingAddress = "131號"
                },
                new ProductOrder {
                    ID              = 2,
                    AppUserID       = "2",
                    Date            = new DateTime(2020, 12, 12, 12, 12, 12),
                    ProductList     = "10:Product,3,1199",
                    ReceiverName    = "another",
                    ShippingAddress = "1號"
                }
            });
            var controller = new HomeController(myMock.ProductRepository.Object, myMock.UserManager.Object);

            List <UserOrderViewModel> data = (controller.ViewOrder(1) as ViewResult).Model as List <UserOrderViewModel>;

            Assert.AreEqual(1, data.Count);
            Assert.AreEqual(new DateTime(2020, 12, 12, 12, 12, 12), data[0].Date);
            Assert.AreEqual("rec", data[0].ReceiverName);
            Assert.AreEqual("131號", data[0].ShippingAddress);
            Assert.AreEqual("1", data[0].ProductList[0][0]);
            Assert.AreEqual("name", data[0].ProductList[0][1]);
            Assert.AreEqual("2", data[0].ProductList[0][2]);
            Assert.AreEqual("199", data[0].ProductList[0][3]);
        }
Ejemplo n.º 25
0
        public void Can_View_Order_Detail()
        {
            var      myMock = new MyMock();
            DateTime time   = DateTime.Now;

            myMock.ProductRepository.Setup(u => u.ProductOrders).Returns(new ProductOrder[]
            {
                new ProductOrder {
                    ID              = 1,
                    Date            = time,
                    ReceiverName    = "Rec1",
                    ShippingAddress = "address1",
                    ProductList     = "1:name1,2,1999"
                },
                new ProductOrder {
                    ID              = 2,
                    Date            = time,
                    ReceiverName    = "Rec2",
                    ShippingAddress = "address2",
                    ProductList     = "2:name2,1,3999&3:name3,1,9999"
                }
            });
            var controller = new AdminController(myMock.ProductRepository.Object, myMock.UserManager.Object);

            UserOrderViewModel result = (controller.OrderDetail(2) as ViewResult).Model as UserOrderViewModel;

            Assert.AreEqual(time, result.Date);
            Assert.AreEqual("Rec2", result.ReceiverName);
            Assert.AreEqual("address2", result.ShippingAddress);
            Assert.AreEqual(2, result.ProductList.Count);
            Assert.AreEqual("2", result.ProductList[0][0]);
            Assert.AreEqual("name2", result.ProductList[0][1]);
            Assert.AreEqual("1", result.ProductList[0][2]);
            Assert.AreEqual("3999", result.ProductList[0][3]);
            Assert.AreEqual("3", result.ProductList[1][0]);
        }