public void Edit_Create_New()
        {
            //arrange
            var controller = new ProjectController();

            //act
            var actual = controller.Edit((int?)null) as ViewResult;

            //assert
            Assert.IsNotNull(actual);
            var model = actual.Model as EditProjectModel;
            Assert.IsNotNull(model);
        }
        public void Edit_Update_Id_Not_Found()
        {
            //arrange
            var id = 0;
            var mockLogic = new Mock<IProjectLogic>();
            mockLogic.Setup(l => l.Get(id)).Returns((ProjectObj)null);
            var controller = new ProjectController(mockLogic.Object);
            controller = SetupController<ProjectController>(controller);

            //act
            var actual = controller.Edit(0) as RedirectResult;
            var expectedUrl = controller.Url.Project_Create();

            //assert
            Assert.IsNotNull(actual);
            Assert.AreEqual(expectedUrl, actual.Url);
        }
        public void Edit_Update_Id_Found()
        {
            //arrange
            var id = 0;
            var mockLogic = new Mock<IProjectLogic>();
            var obj = new ProjectObj { Id = id };
            mockLogic.Setup(l => l.Get(id)).Returns(obj);
            var controller = new ProjectController(mockLogic.Object);

            //act
            var actual = controller.Edit(0) as ViewResult;

            //assert
            Assert.IsNotNull(actual);
            var model = actual.Model as EditProjectModel;
            Assert.IsNotNull(model);
        }
        public void Edit_Post_Update_Success()
        {
            //arrange
            var id = 2;
            var mockLogic = new Mock<IProjectLogic>(MockBehavior.Strict);
            mockLogic.Setup(m => m.Update(It.Is<ProjectObj>(p => p.Id == id), It.IsAny<string>())).Returns(true);
            var model = new EditProjectModel() { Id = id };
            var controller = new ProjectController(mockLogic.Object);
            controller = SetupController(controller);

            //act
            var actual = controller.Edit(model) as RedirectResult;
            var expectedUrl = controller.Url.Project_Show(id);

            //assert
            Assert.IsNotNull(actual);
            Assert.AreEqual(expectedUrl, actual.Url);
        }
        public void Edit_Post_Update_Bad_ModelState()
        {
            //arrange
            var mockLogic = new Mock<IProjectLogic>(MockBehavior.Strict);
            var model = new EditProjectModel() { Id = 0 };
            var controller = new ProjectController(mockLogic.Object);
            controller = SetupController(controller);
            controller.ModelState.AddModelError("test", "test");

            //act
            var actual = controller.Edit(model) as RedirectResult;
            var expectedUrl = controller.Url.Project_Edit(0);

            //assert
            Assert.IsNotNull(actual);
            Assert.AreEqual(expectedUrl, actual.Url);
        }
        public void Edit_Post_Create_Failure()
        {
            //arrange
            var mockLogic = new Mock<IProjectLogic>(MockBehavior.Strict);
            mockLogic.Setup(m => m.Create(It.IsAny<ProjectObj>(), It.IsAny<string>())).Returns(-1);
            var model = new EditProjectModel();
            var controller = new ProjectController(mockLogic.Object);
            controller = SetupController(controller);

            //act
            var actual = controller.Edit(model) as RedirectResult;
            var expectedUrl = controller.Url.Project_Create();

            //assert
            Assert.IsNotNull(actual);
            Assert.AreEqual(expectedUrl, actual.Url);
        }