コード例 #1
0
        public void SlashMoviesGoesToMoviesIndex()
        {
            // Arrange (obtain routing config + set up test context)
            RouteCollection routeCollection = new RouteCollection();
            MvcApplication.RegisterRoutes(routeCollection);
            HttpContextBase testContext = new TestHttpContext("~/Movies");
            // Act (run the routing engine against this HttpContextBase)
            RouteData routeData = routeCollection.GetRouteData(testContext);
            // Assert
            Assert.IsNotNull(routeData, "NULL RouteData was returned");
            Assert.IsNotNull(routeData.Route, "No route was matched");
            Assert.AreEqual("Movies", routeData.Values["controller"], "Wrong controller");
            Assert.AreEqual("Index", routeData.Values["action"], "Wrong action");

        }
コード例 #2
0
        private static UrlHelper GetUrlHelper(string appPath = "/", RouteCollection routes = null)
        {
            if (routes == null)
            {
                routes = new RouteCollection();
                MvcApplication.RegisterRoutes(routes);
            }

            HttpContextBase httpContext = new TestHttpContext(appPath);
            RouteData routeData = new RouteData();
            routeData.Values.Add("controller", "defaultcontroller");
            routeData.Values.Add("action", "defaultaction");
            RequestContext requestContext = new RequestContext(httpContext, routeData);
            UrlHelper helper = new UrlHelper(requestContext, routes);
            return helper;
        }
コード例 #3
0
        public void SlashMoviesDetailsWithNumericIdMatchesMoviesRoute()
        {
            // Arrange (obtain routing config + set up test context)
            RouteCollection routeCollection = new RouteCollection();
            MvcApplication.RegisterRoutes(routeCollection);
            HttpContextBase testContext = new TestHttpContext("~/Movies/Details/1");
            // Act (run the routing engine against this HttpContextBase)
            RouteData routeData = routeCollection.GetRouteData(testContext);
            // Assert
            Assert.IsNotNull(routeData, "NULL RouteData was returned");
            Assert.IsNotNull(routeData.Route, "No route was matched");
            Assert.AreSame(routeCollection["Movies"], routeData.Route, "Wrong route");
            Assert.AreEqual("Movies", routeData.Values["controller"], "Wrong controller");
            Assert.AreEqual("Details", routeData.Values["action"], "Wrong action");
            Assert.AreEqual("1", routeData.Values["id"], "Wrong action");

        }
コード例 #4
0
        private static void TestRouteMatch(string httpVerb, string url, string controller, string action, object routeProperties = null)
        {
            // Arrange (obtain routing config + set up test context)
            RouteCollection routeCollection = new RouteCollection();
            MvcApplication.RegisterRoutes(routeCollection);
            HttpContextBase testContext = new TestHttpContext(url, httpVerb);

            // Act (run the routing engine against this HttpContextBase)
            RouteData routeData = routeCollection.GetRouteData(testContext);

            // Assert
            Assert.IsNotNull(routeData, "NULL RouteData was returned");
            Assert.IsNotNull(routeData.Route, "No route was matched");
            Assert.AreEqual(controller, routeData.Values["controller"], "Wrong controller");
            Assert.AreEqual(action, routeData.Values["action"], "Wrong action");

            if (routeProperties != null)
            {
                Assert.IsTrue(TestRouteValues(routeData.Values, routeProperties));
            }
        }
        public void ShouldRenderEditViewByPOSTForAnUpdatedAndInvalidMovie()
        {
            // Arrange
            const int id = 1;

            HttpContextBase testContext = new TestHttpContext("~/Movies/Edit/1", "POST");
            ControllerContext context = new ControllerContext(new RequestContext(testContext, new RouteData()), _controller);
            _controller.ControllerContext = context;

            var fakeForm = new FormCollection { { "ID", "1" }, { "Title", "When Harry Met Sally1" }, { "Genre", "Chic movie" }, { "Year", "2004" }, { "Image", "~/Content/logo.png" } };
            _controller.ValueProvider = fakeForm.ToValueProvider();
            _controller.ViewData.ModelState.AddModelError("Key", "ErrorMessage");

            // Act
            ActionResult actual = _controller.EditPost(id);

            // Assert
            Assert.IsNotNull(actual, "The returned ActionResult is Null");
            Assert.IsInstanceOf<ViewResult>(actual, "The returned ActionResult was not an instance of ViewResult");

            ViewResult viewResult = (ViewResult) actual;
            Assert.IsNotNull(viewResult.ViewData.Model, "The value of viewResult.ViewData.Model is Null");
            Assert.IsInstanceOf<Movie>(viewResult.ViewData.Model, "The value of viewResult.ViewData.Model is not an instance of Comment");

            Movie model = (Movie) viewResult.ViewData.Model;
            Assert.IsTrue(model.ID == id, string.Format("The value of Model.Id should be '{0}' but it is '{1}'", id, model.ID));
            Assert.IsTrue(model.Title == "When Harry Met Sally1", string.Format("The value of Model.Title should be '{0}' but it is '{1}'", "When Harry Met Sally1", model.Title));
            Assert.IsTrue(model.Genre == "Chic movie", string.Format("The value of Model.Genre should be '{0}' but it is '{1}'", "Chic movie", model.Genre));
            Assert.IsTrue(model.Year == 2004, string.Format("The value of Model.Year should be '{0}' but it is '{1}'", 2004, model.Year));
        }
        public void ShouldRenderEditViewByPOSTForANewUpdatedAndValidMovie()
        {
            // Arrange
            const int id = 2;

            HttpContextBase testContext = new TestHttpContext("~/Movies/Edit/1", "POST");
            ControllerContext context = new ControllerContext(new RequestContext(testContext, new RouteData()), _controller);
            _controller.ControllerContext = context;

            var fakeForm = new FormCollection { { "ID", "1" }, { "Title", "When Harry Met Sally1" }, { "Genre", "Chic movie" }, { "Year", "2004" }, { "Image", "~/Content/logo.png" } };
            _controller.ValueProvider = fakeForm.ToValueProvider();

            // Act
            ActionResult actual = _controller.EditPost(id);

            // Assert
            Assert.IsNotNull(actual, "The returned ActionResult is Null");
            Assert.IsInstanceOf<RedirectToRouteResult>(actual, "The returned ActionResult was not an instance of RedirectToRouteResult");

            RedirectToRouteResult viewResult = (RedirectToRouteResult) actual;
            Assert.IsNotNull(viewResult.RouteName == "Default", string.Format("The RedirectToRouteResult RouteName should be 'Default' but it is '{0}'", viewResult.RouteName));
            Assert.IsTrue(viewResult.RouteValues["Action"].ToString() == "Index", string.Format("The value of RouteValues[\"Action\"] should be 'Index' but it is '{0}'", viewResult.RouteValues["Action"]));
        }
        public void ShouldRenderCreateViewByPOSTForAnInvalidMovie()
        {
            // Arrange
            HttpContextBase testContext = new TestHttpContext("~/Movies/Create", "POST");
            ControllerContext context = new ControllerContext(new RequestContext(testContext, new RouteData()), _controller);
            _controller.ControllerContext = context;

            var fakeForm = new FormCollection { { "Year", "2011" }, { "Title", "When Harry Met Sally1" } };
            _controller.ValueProvider = fakeForm.ToValueProvider();
            _controller.ViewData.ModelState.AddModelError("Key", "ErrorMessage");
            IPrincipal fakeUser = new GenericPrincipal(new GenericIdentity("User1", "Forms"), null);

            // Act
            ActionResult actual = _controller.Create(string.Empty, string.Empty, fakeUser);

            // Assert
            Assert.IsNotNull(actual, "The returned ActionResult is Null");
            Assert.IsInstanceOf<ViewResult>(actual, "The returned ActionResult was not an instance of ViewResult");

            ViewResult viewResult = (ViewResult) actual;
            Assert.IsNotNull(viewResult.ViewData.Model, "The value of viewResult.ViewData.Model is Null");
            Assert.IsInstanceOf<Movie>(viewResult.ViewData.Model, "The value of viewResult.ViewData.Model is not an instance of Movie");

            Movie model = (Movie) viewResult.ViewData.Model;
            Assert.IsTrue(model.ID == 0, string.Format("The value of Model.MovieID should be '{0}' but it is '{1}'", 0, model.ID));
            Assert.IsTrue(model.Year == 2011, string.Format("The value of Model.Year should be '{0}' but it is '{1}'", 2011, model.Year));
            Assert.IsTrue(model.Title == "When Harry Met Sally1", string.Format("The value of Model.Title should be '{0}' but it is '{1}'", "When Harry Met Sally1", model.Title));
        }
        public void ShouldRenderMovieDetailsViewByPOSTForANewValidMovie()
        {
            // Arrange
            HttpContextBase testContext = new TestHttpContext("~/Movies/Create", "POST");
            ControllerContext context = new ControllerContext(new RequestContext(testContext, new RouteData()), _controller);
            _controller.ControllerContext = context;

            var fakeForm = new FormCollection { { "Year", "2011" }, { "Title", "When Harry Met Sally1" }};
            _controller.ValueProvider = fakeForm.ToValueProvider();
            IPrincipal fakeUser = new GenericPrincipal(new GenericIdentity("User1", "Forms"), null);

            // Act
            ActionResult actual = _controller.Create(string.Empty, string.Empty, fakeUser);

            // Assert
            Assert.IsNotNull(actual, "The returned ActionResult is Null");
            Assert.IsInstanceOf<RedirectToRouteResult>(actual, "The returned ActionResult was not an instance of RedirectToRouteResult");

            RedirectToRouteResult viewResult = (RedirectToRouteResult) actual;
            Assert.IsTrue(viewResult.RouteValues["Action"].ToString() == "Details", string.Format("The value of RouteValues[\"Action\"] should be 'Details' but it is '{0}'", viewResult.RouteValues["Action"]));
            Assert.IsTrue((int) viewResult.RouteValues["id"] == 4, string.Format("The RouteValues[\"id\"] should be '{0}' but it is '{1}'", 4, viewResult.RouteValues["id"]));
        }
        public void ShouldRenderEditViewByPOSTForAnUpdatedAndInvalidGroup()
        {
            // Arrange
            const int groupId = 2;

            HttpContextBase testContext = new TestHttpContext("~/Groups/Edit/5", "POST");
            ControllerContext context = new ControllerContext(new RequestContext(testContext, new RouteData()), _controller);
            _controller.ControllerContext = context;

            var fakeForm = new FormCollection { { "ID", "2" }, { "Description", "Description 2 Updated" }, { "Name", "Test Group 2" } };
            _controller.ValueProvider = fakeForm.ToValueProvider();
            _controller.ViewData.ModelState.AddModelError("Key", "ErrorMessage");

            // Act
            ActionResult actual = _controller.EditPost(groupId);

            // Assert
            Assert.IsNotNull(actual, "The returned ActionResult is Null");
            Assert.IsInstanceOf<ViewResult>(actual, "The returned ActionResult was not an instance of ViewResult");

            ViewResult viewResult = (ViewResult) actual;
            Assert.IsNotNull(viewResult.ViewData.Model, "The value of viewResult.ViewData.Model is Null");
            Assert.IsInstanceOf<Group>(viewResult.ViewData.Model, "The value of viewResult.ViewData.Model is not an instance of Group");

            Group model = (Group) viewResult.ViewData.Model;
            Assert.IsTrue(model.ID == groupId, string.Format("The value of Model.Id should be '{0}' but it is '{1}'", groupId, model.ID));
            Assert.IsTrue(model.Description == "Description 2 Updated", string.Format("The value of Model.Description should be '{0}' but it is '{1}'", "Description 2 Updated", model.Description));
            Assert.IsTrue(model.Name == "Test Group 2", string.Format("The value of Model.Name should be '{0}' but it is '{1}'", "Test Group 2", model.Name));
        }
        public void ShouldRenderEditViewByPOSTForANewUpdatedAndValidGroup()
        {
            // Arrange
            const int groupId = 2;

            HttpContextBase testContext = new TestHttpContext("~/Groups/Edit/5", "POST");
            ControllerContext context = new ControllerContext(new RequestContext(testContext, new RouteData()), _controller);
            _controller.ControllerContext = context;

            var fakeForm = new FormCollection { { "ID", "2" }, { "Description", "Description 2 Updated" }, { "Name", "Test Group 2" } };
            _controller.ValueProvider = fakeForm.ToValueProvider();

            // Act
            ActionResult actual = _controller.EditPost(groupId);

            // Assert
            Assert.IsNotNull(actual, "The returned ActionResult is Null");
            Assert.IsInstanceOf<RedirectToRouteResult>(actual, "The returned ActionResult was not an instance of RedirectToRouteResult");

            RedirectToRouteResult viewResult = (RedirectToRouteResult) actual;
            Assert.IsNotNull(viewResult.RouteName == "Default", string.Format("The RedirectToRouteResult RouteName should be 'Default' but it is '{0}'", viewResult.RouteName));
            Assert.IsTrue(viewResult.RouteValues["Action"].ToString() == "Index", string.Format("The value of RouteValues[\"Action\"] should be 'Index' but it is '{0}'", viewResult.RouteValues["Action"]));
        }
        public void ShouldRenderEditViewByPOSTForAnUpdatedAndInvalidComment()
        {
            // Arrange
            const int commentId = 2;

            HttpContextBase testContext = new TestHttpContext("~/Comments/Edit/5", "POST");
            ControllerContext context = new ControllerContext(new RequestContext(testContext, new RouteData()), _controller);
            _controller.ControllerContext = context;

            var fakeForm = new FormCollection { { "ID", "2" }, { "Description", "Description 2 Updated" }, { "Rating", "3" }, { "MovieID", "1" } };
            _controller.ValueProvider = fakeForm.ToValueProvider();
            _controller.ViewData.ModelState.AddModelError("Key", "ErrorMessage");

            // Act
            ActionResult actual = _controller.EditPost(commentId);

            // Assert
            Assert.IsNotNull(actual, "The returned ActionResult is Null");
            Assert.IsInstanceOf<ViewResult>(actual, "The returned ActionResult was not an instance of ViewResult");

            ViewResult viewResult = (ViewResult) actual;
            Assert.IsNotNull(viewResult.ViewData.Model, "The value of viewResult.ViewData.Model is Null");
            Assert.IsInstanceOf<Comment>(viewResult.ViewData.Model, "The value of viewResult.ViewData.Model is not an instance of Comment");

            Comment model = (Comment) viewResult.ViewData.Model;
            Assert.IsTrue(model.ID == commentId, string.Format("The value of Model.Id should be '{0}' but it is '{1}'", commentId, model.ID));
            Assert.IsTrue(model.Description == "Description 2 Updated", string.Format("The value of Model.Description should be '{0}' but it is '{1}'", "Description 2 Updated", model.Description));
            Assert.IsTrue(model.Rating == 3, string.Format("The value of Model.Rating should be '{0}' but it is '{1}'", 3, model.Rating));
            Assert.IsTrue(model.MovieID == 1, string.Format("The value of Model.MovieID should be '{0}' but it is '{1}'", 1, model.MovieID));
        }
        public void ShouldRenderEditViewByPOSTForANewUpdatedAndValidComment()
        {
            // Arrange
            const int commentId = 2;

            HttpContextBase testContext = new TestHttpContext("~/Comments/Edit/5", "POST");
            ControllerContext context = new ControllerContext(new RequestContext(testContext, new RouteData()), _controller);
            _controller.ControllerContext = context;

            var fakeForm = new FormCollection { { "ID", "2" }, { "Description", "Description 2 Updated" }, { "Rating", "3" }, { "MovieId", "1" } };
            _controller.ValueProvider = fakeForm.ToValueProvider();

            // Act
            ActionResult actual = _controller.EditPost(commentId);

            // Assert
            Assert.IsNotNull(actual, "The returned ActionResult is Null");
            Assert.IsInstanceOf<RedirectToRouteResult>(actual, "The returned ActionResult was not an instance of RedirectToRouteResult");

            RedirectToRouteResult viewResult = (RedirectToRouteResult) actual;
            Assert.IsNotNull(viewResult.RouteName == "Default", string.Format("The RedirectToRouteResult RouteName should be 'Default' but it is '{0}'", viewResult.RouteName));
            Assert.IsTrue(viewResult.RouteValues["Controller"].ToString() == "Movies", string.Format("The value of RouteValues[\"Controller\"] should be 'Movies' but it is '{0}'", viewResult.RouteValues["Controller"]));
            Assert.IsTrue(viewResult.RouteValues["Action"].ToString() == "Details", string.Format("The value of RouteValues[\"Action\"] should be 'Details' but it is '{0}'", viewResult.RouteValues["Action"]));
            Assert.IsTrue((int)viewResult.RouteValues["id"] == 1, string.Format("The RouteValues[\"id\"] should be '{0}' but it is '{1}'", 1, viewResult.RouteValues["id"]));
        }