/// <summary>
        /// Intercepts the route definition before the route is output to JavaScript
        /// </summary>
        /// <param name="definition">Route definition to manipulate</param>
        /// <returns>
        /// Value indicating whether to add the route after the interception
        /// </returns>
        public bool Intercept(RouteDefinition definition)
        {
            var constraints = from constraint in (definition.Route.Constraints ?? new RouteValueDictionary())
                              where constraint.Value != null
                              where constraint.Value.GetType().GetInterfaces().Contains(constraintType)
                              let attr = constraint.Value.GetType().GetCustomAttributes(attributeType, false).OfType<JsConstraintAttribute>().FirstOrDefault()
                              where attr != null
                              select new RouteConstraintDefinition(constraint.Key, attr.ConstraintName, serializer.Serialize(constraint.Value));

            foreach (var constraintDefinition in constraints)
                definition.Constraints.Add(constraintDefinition);

            return true;
        }
 public void ToJavaScript_ReturnsRouteManagerRouteDefinitionPattern()
 {
     var definition = new RouteDefinition(TestRoute) { Name = routeName };
     Assert.Equal(expectedPattern, definition.ToJavaScript());   
 }
 public void Ctr_SetsRouteProperty()
 {
     var route = TestRoute;
     var definition = new RouteDefinition(route);
     Assert.Same(route, definition.Route);
 }
 public void Ctr_SetsUrlPatternProperty()
 {
     var route = TestRoute;
     var definition = new RouteDefinition(route);
     Assert.Same(route.Url, definition.UrlPattern);
 }
 public bool Intercept(RouteDefinition definition)
 {
     return ReturnValue;
 }