public void UpdateProductPost_CorrectProduct_ReturnsCorrectViewRedirectToRouteResult()
        {
            // Arrange
            Mock <IClientOrderProvider> clientOrderProviderMock = new Mock <IClientOrderProvider>();
            Mock <IClientOrderHandler>  clientOrderHandlerMock  = new Mock <IClientOrderHandler>();

            clientOrderHandlerMock.Setup(x => x.Update(It.IsAny <ClientOrder>()))
            .Returns(true);
            Mock <IClientOrderValidator> clientOrderValidatorMock = new Mock <IClientOrderValidator>();

            clientOrderValidatorMock.Setup(x => x.CanUpdateClientOrder(It.IsAny <ClientOrder>()))
            .Returns(new List <KeyValuePair <string, string> >());
            Mock <IUserProvider> userProviderMock = new Mock <IUserProvider>();

            userProviderMock.Setup(x => x.GetAll()).Returns(new List <ApplicationUser>());
            Mock <IDeliveryProvider> deliveryProviderMock = new Mock <IDeliveryProvider>();

            deliveryProviderMock.Setup(x => x.GetAll()).Returns(new List <Delivery>());
            Mock <IProductProvider> productProviderMock = new Mock <IProductProvider>();

            productProviderMock.Setup(x => x.GetAll()).Returns(new List <Product>());

            ClientOrderController controller = new ClientOrderController(clientOrderProviderMock.Object,
                                                                         clientOrderHandlerMock.Object,
                                                                         clientOrderValidatorMock.Object,
                                                                         userProviderMock.Object,
                                                                         deliveryProviderMock.Object,
                                                                         productProviderMock.Object
                                                                         );
            // Act
            JsonResult result = controller.UpdateClientOrderPost(this.clientOrders[0]) as JsonResult;

            // Assert
            Assert.IsNotNull(result);
        }
        public void UpdateProductPost_NullProdut_ReturnsCorrectViewResult()
        {
            // Arrange
            Mock <IClientOrderProvider>  clientOrderProviderMock  = new Mock <IClientOrderProvider>();
            Mock <IClientOrderHandler>   clientOrderHandlerMock   = new Mock <IClientOrderHandler>();
            Mock <IClientOrderValidator> clientOrderValidatorMock = new Mock <IClientOrderValidator>();

            clientOrderValidatorMock.Setup(x => x.CanAddClientOrder(null))
            .Throws <ArgumentNullException>();
            Mock <IUserProvider> userProviderMock = new Mock <IUserProvider>();

            userProviderMock.Setup(x => x.GetAll()).Returns(new List <ApplicationUser>());
            Mock <IDeliveryProvider> deliveryProviderMock = new Mock <IDeliveryProvider>();

            deliveryProviderMock.Setup(x => x.GetAll()).Returns(new List <Delivery>());
            Mock <IProductProvider> productProviderMock = new Mock <IProductProvider>();

            productProviderMock.Setup(x => x.GetAll()).Returns(new List <Product>());

            ClientOrderController controller = new ClientOrderController(clientOrderProviderMock.Object,
                                                                         clientOrderHandlerMock.Object,
                                                                         clientOrderValidatorMock.Object,
                                                                         userProviderMock.Object,
                                                                         deliveryProviderMock.Object,
                                                                         productProviderMock.Object
                                                                         );
            // Act

            ViewResult result = controller.UpdateClientOrderPost(null) as ViewResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.IsFalse(controller.ModelState.IsValid);
            Assert.AreEqual(1, controller.ModelState.Keys.Count);
            Assert.AreEqual("", controller.ModelState.Keys.FirstOrDefault());
            Assert.AreEqual("UpdateClientOrder", result.ViewName);
        }