public void RegisterRoutesForController_WhenProvidedWithControllerContainingUrlRouteAttributeWithNoPath_ShouldThrowInvalidOperationException()
        {
            var routeCollection = new RouteCollection();

            RouteAttributeUtility.RegisterRoutesForController(routeCollection, typeof(ControllerContainingUrlRouteAttributeWithNoPathController));

            // Exception
        }
        public void RegisterRoutesForController_WhenProvidedWithControllerContainingConstraintAttributesWithEmptyRegex_ShouldThrowInvalidOperationException()
        {
            var routeCollection = new RouteCollection();

            RouteAttributeUtility.RegisterRoutesForController(routeCollection, typeof(ControllerContainingConstraintAttributesWithEmptyRegexController));

            // Exception
        }
        public void RegisterRoutesForController_WhenProvidedWithControllerWithUrlRouteConstraint_ShouldAddRouteWithConstraint()
        {
            var routeCollection = new RouteCollection();

            RouteAttributeUtility.RegisterRoutesForController(routeCollection, typeof(ControllerContainingUrlRouteAndConstraintAttributesController));

            Assert.AreEqual(1, ((Route)routeCollection[0]).Constraints.Count);
            Assert.AreEqual("[a-zA-Z]+", ((Route)routeCollection[0]).Constraints["exampleRouteParameter"]);
        }
        public void RegisterRoutesForController_WhenProvidedWithControllerContainingUrlRouteAndDefaultAttributes_ShouldAddRouteWithDefaultParameterValue()
        {
            var routeCollection = new RouteCollection();

            RouteAttributeUtility.RegisterRoutesForController(routeCollection, typeof(ControllerContainingUrlRouteAndDefaultAttributesController));

            Assert.AreEqual(3, ((Route)routeCollection[0]).Defaults.Count);
            Assert.AreEqual("blah", ((Route)routeCollection[0]).Defaults["exampleRouteParameter"]);
        }
        public void RegisterRoutesForController_WhenProvidedWithControllerWithDuplicateUrlRoutePathsNames_ShouldAddRoutesInPriorityOrder()
        {
            var routeCollection = new RouteCollection();

            RouteAttributeUtility.RegisterRoutesForController(routeCollection, typeof(ControllerWithDuplicateUrlRoutePathsNamesController));

            Assert.AreEqual("PerformSomeAction3", ((Route)routeCollection[0]).Defaults["action"].ToString());
            Assert.AreEqual("PerformSomeAction2", ((Route)routeCollection[1]).Defaults["action"].ToString());
            Assert.AreEqual("PerformSomeAction1", ((Route)routeCollection[2]).Defaults["action"].ToString());
        }
        public void RegisterRoutesForController_WhenProvidedWithControllerContainingOverriddenActionName_ShouldRegisterRouteCorrectly()
        {
            var routeCollection = new RouteCollection();

            RouteAttributeUtility.RegisterRoutesForController(routeCollection, typeof(ControllerContainingOverriddenActionNameController));

            Assert.IsInstanceOf(typeof(Route), routeCollection[0]);
            Route googleRedirectRoute = (Route)routeCollection[0];

            Assert.AreEqual("OverriddenActionName", googleRedirectRoute.Defaults["action"].ToString());
            Assert.AreEqual("ControllerContainingOverriddenActionName", googleRedirectRoute.Defaults["controller"].ToString());
            Assert.AreEqual("Google", googleRedirectRoute.Url);
        }