public void Customer_UpdateCustomer_UpdateSelfOk()
        {
            // Arrange
            var SessionMock = new TestControllerBuilder();
            var Controller = new CustomerController(new CustomerBLL(new CustomerRepoStub()));
            SessionMock.InitializeController(Controller);

            Controller.Session["Email"] = userEmail;
            var customerView = new CustomerView()
            {
                CustomerId = customerModel.CustomerId,
                Email = customerModel.Email,
                Firstname = customerModel.Firstname,
                Lastname = customerModel.Lastname,
                Address = customerModel.Address,
                Zipcode = customerModel.Zipcode,
                City = customerModel.City
            };

            // Act
            var result = Controller.UpdateCustomerInfo(customerView);

            // Assert
            Assert.IsTrue(result);
        }
        public void Customer_AdminIndex_NoAdminSession()
        {
            // Arrange
            var SessionMock = new TestControllerBuilder();
            var Controller = new CustomerController(new CustomerBLL(new CustomerRepoStub()));
            SessionMock.InitializeController(Controller);

            Controller.Session["Admin"] = null;

            var expRouteName = "";
            var expAction = "Index";
            var expController = "Home";

            // Act
            var result = (RedirectToRouteResult)Controller.Index();

            // Assert
            Assert.AreEqual(expRouteName, result.RouteName);
            Assert.AreEqual(expAction, result.RouteValues["action"]);
            Assert.AreEqual(expController, result.RouteValues["controller"]);
        }
        public void Customer_Show_CustomerOk()
        {
            // Arrange
            var SessionMock = new TestControllerBuilder();
            var Controller = new CustomerController(new CustomerBLL(new CustomerRepoStub()));
            SessionMock.InitializeController(Controller);

            Controller.Session["Admin"] = true;
            var customerId = 1;
            var returnUrl = "returnUrl";

            var expViewName = "Administration_Customer";
            var expViewBagCustomer = new CustomerView()
            {
                CustomerId = customerModel.CustomerId,
                Email = customerModel.Email,
                Firstname = customerModel.Firstname,
                Lastname = customerModel.Lastname,
                Address = customerModel.Address,
                Zipcode = customerModel.Zipcode,
                City = customerModel.City
            };
            var expViewBagReturnUrl = returnUrl;

            // Act
            var result = (ViewResult)Controller.ShowCustomer(customerId,returnUrl);

            var viewBagCustomer = result.ViewBag.Customer;
            var viewBagReturnUrl = result.ViewBag.ReturnUrl;

            // Assert
            Assert.AreEqual(expViewName, result.ViewName);

            Assert.AreEqual(expViewBagCustomer.CustomerId, viewBagCustomer.CustomerId);
            Assert.AreEqual(expViewBagCustomer.Firstname, viewBagCustomer.Firstname);
            Assert.AreEqual(expViewBagCustomer.Lastname, viewBagCustomer.Lastname);
            Assert.AreEqual(expViewBagCustomer.Address, viewBagCustomer.Address);
            Assert.AreEqual(expViewBagCustomer.Zipcode, viewBagCustomer.Zipcode);
            Assert.AreEqual(expViewBagCustomer.City, viewBagCustomer.City);

            Assert.AreEqual(expViewBagReturnUrl, viewBagReturnUrl);
        }
        public void Customer_Show_Customer_NotAdmin()
        {
            // Arrange
            var SessionMock = new TestControllerBuilder();
            var Controller = new CustomerController(new CustomerBLL(new CustomerRepoStub()));
            SessionMock.InitializeController(Controller);

            Controller.Session["Admin"] = false;
            var customerId = 1;
            var returnUrl = "returnUrl";

            var expRouteName = "";
            var expAction = "Index";
            var expController = "Home";

            // Act
            var result = (RedirectToRouteResult)Controller.ShowCustomer(customerId, returnUrl);

            // Assert
            Assert.AreEqual(expRouteName, result.RouteName);
            Assert.AreEqual(expAction, result.RouteValues["action"]);
            Assert.AreEqual(expController, result.RouteValues["controller"]);
        }
        public void Customer_Index_ok()
        {
            // Arrange
            var SessionMock = new TestControllerBuilder();
            var Controller = new CustomerController(new CustomerBLL(new CustomerRepoStub()));
            SessionMock.InitializeController(Controller);

            Controller.Session["Admin"] = true;

            var expViewName = "";

            // Act
            var result = (ViewResult)Controller.Index();

            // Assert
            Assert.AreEqual(expViewName,result.ViewName);
        }
        public void Customer_DeleteCustomer_Ok()
        {
            // Arrange
            var SessionMock = new TestControllerBuilder();
            var Controller = new CustomerController(new CustomerBLL(new CustomerRepoStub()));
            SessionMock.InitializeController(Controller);
            Controller.Session["Admin"] = true;
            var email = userEmail;

            // Act
            var result = Controller.DeleteCustomer(email);

            // Assert
            Assert.IsTrue(result);
        }
        public void Customer_DeleteCustomer_NoEmailSession()
        {
            // Arrange
            var SessionMock = new TestControllerBuilder();
            var Controller = new CustomerController(new CustomerBLL(new CustomerRepoStub()));
            SessionMock.InitializeController(Controller);
            Controller.Session["Email"] = null;
            var email = userEmail;

            // Act
            var result = (bool)Controller.DeleteCustomer(email);

            // Assert
            Assert.IsFalse(result);
        }
        public void Customer_DeleteCustomer_DeleteSelfNotAllowed()
        {
            // Arrange
            var SessionMock = new TestControllerBuilder();
            var Controller = new CustomerController(new CustomerBLL(new CustomerRepoStub()));
            SessionMock.InitializeController(Controller);
            Controller.Session["Admin"] = true;
            Controller.Session["Email"] = adminEmail;
            var email = adminEmail;

            // Act
            var result = Controller.DeleteCustomer(email);

            // Assert
            Assert.IsFalse(result);
        }
        public void Customer_CustomerlistPartial_List()
        {
            // Arrange
            var Controller = new CustomerController(new CustomerBLL(new CustomerRepoStub()));

            var expModel= new CustomerView()
            {
                CustomerId = customerModel.CustomerId,
                Email = customerModel.Email,
                Firstname = customerModel.Firstname,
                Lastname = customerModel.Lastname,
                Address = customerModel.Address,
                Zipcode = customerModel.Zipcode,
                City = customerModel.City
            };
            var expResult = new List<CustomerView>();
            expResult.Add(expModel);
            expResult.Add(expModel);
            expResult.Add(expModel);

            // Act
            var result = (PartialViewResult)Controller.CustomerlistPartial();
            var modelresult = (List<CustomerView>)result.Model;

            // Assert
            Assert.AreEqual("", result.ViewName);
            for (var i = 0; i < modelresult.Count; i++)
            {
                Assert.AreEqual(expResult[i].CustomerId, modelresult[i].CustomerId);
                Assert.AreEqual(expResult[i].Email, modelresult[i].Email);
                Assert.AreEqual(expResult[i].Firstname, modelresult[i].Firstname);
                Assert.AreEqual(expResult[i].Lastname, modelresult[i].Lastname);
                Assert.AreEqual(expResult[i].Address, modelresult[i].Address);
                Assert.AreEqual(expResult[i].Zipcode, modelresult[i].Zipcode);
                Assert.AreEqual(expResult[i].City, modelresult[i].City);
            }
        }