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"); }
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; }
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"); }
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"])); }