public RouteFromParametersTests()
 {
     var conventions = new RoutingConventions();
     _sut = new RouteFromParametersConvention();
     var routes = _sut.Build(new RouteBuilderInfo(new ActionCall(typeof(MyController).GetMethod("GetSomething")), conventions));
     _route = routes.First();
 }
Ejemplo n.º 2
0
 public static void LoadModules(this RoutingConventions policy, Assembly asm)
 {
     policy
     .LoadModule(
         asm.GetTypesDerivedFrom <RoutingConventionsModule>(true).Select(t => (RoutingConventionsModule)t.CreateInstance()).ToArray()
         );
 }
Ejemplo n.º 3
0
 public static RoutingConventions RegisterControllers(this RoutingConventions policy, Func <Type, IEnumerable <MethodInfo> > actionMatch, params Type[] controllers)
 {
     foreach (var c in controllers)
     {
         policy.Actions.AddRange(actionMatch(c).Select(m => new ActionCall(m, c)));
     }
     return(policy);
 }
        public void default_builder_yields_no_routes()
        {
            var sut = new RoutingConventions();
            sut.RegisterController<SomeController>();
            var routes = sut.BuildRoutes();
            routes.Should().BeEmpty();

        }
Ejemplo n.º 5
0
        /// <summary>
        /// This conventions applies only for GET requests
        /// </summary>
        /// <param name="policy"></param>
        /// <returns></returns>
        public static RoutingConventions UseOneModelInHandlerConvention(this RoutingConventions policy, Predicate <ActionCall> applyTo = null)
        {
            var convention = new OneModelInHandlerConvention(applyTo);

            policy.Add(convention);

            return(policy);
        }
Ejemplo n.º 6
0
 public static void Run()
 {
     RoutingConventions.Configure(c =>
     {
         c.RegisterControllers(typeof(ConfigTask_Routing).Assembly);
         c.UseOneModelInHandlerConvention();
         c.HomeIs <PostsListController>(d => d.Get(new PagedInput()));
     });
 }
Ejemplo n.º 7
0
        public RouteFromParametersTests()
        {
            var conventions = new RoutingConventions();

            _sut = new RouteFromParametersConvention();
            var routes = _sut.Build(new RouteBuilderInfo(new ActionCall(typeof(MyController).GetMethod("GetSomething")), conventions));

            _route = routes.First();
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Configures routing conventions and applies them to RouteTable
        /// </summary>
        /// <param name="cfg"></param>
        public static void Configure(Action <RoutingConventions> cfg)
        {
            cfg.MustNotBeNull();
            var routing = new RoutingConventions();

            cfg(routing);
            var routes = routing.BuildRoutes();

            foreach (var route in routes)
            {
                RouteTable.Routes.Add(route);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Configures routing conventions and applies them route collection
        /// </summary>
        /// <param name="cfg"></param>
        /// <param name="httpConfiguration"></param>
        public static void Configure(Action <RoutingConventions> cfg, HttpConfiguration httpConfiguration)
        {
            cfg.MustNotBeNull();
            var routing = new RoutingConventions();

            cfg(routing);
            var routes = routing.BuildRoutes();

            foreach (var route in routes)
            {
                httpConfiguration.Routes.Add("", route);
            }
        }
Ejemplo n.º 10
0
 public void handles_one_model_in_argument_properly()
 {
     var sut = new RoutingConventions();
     sut.UseOneModelInHandlerConvention();
     sut.RegisterController<ModelFixtureController>();
     var id = 2;
     sut.HomeIs<ModelFixtureController>(f => f.Get(new ModelHandlerInput(){Page = 67}));
     var routes = sut.BuildRoutes();
     var def = routes.Last();
     def.Url.Should().Be("{*catch}");
     def.Defaults["controller"].Should().Be("ModelFixture");
     def.Defaults["action"].Should().Be("Get");
     def.Defaults["page"].Should().Be(67);                       
 }
Ejemplo n.º 11
0
 public void handles_argument_list_properly()
 {
     var sut = new RoutingConventions();
     sut.UseHandlerConvention();
     sut.RegisterController<HandlerFixtureController>();
     var id = 2;
     sut.HomeIs<HandlerFixtureController>(f => f.Get(id));
     var routes = sut.BuildRoutes();
     routes.Count().Should().Be(2);
     var def = routes.Last();
     def.Url.Should().Be("{*catch}");
     def.Defaults["controller"].Should().Be("HandlerFixture");
     def.Defaults["action"].Should().Be("Get");
     def.Defaults["page"].Should().Be(2);                       
 }
 public void get_route_is_generated_from_input_model()
 {
     var sut = new RoutingConventions();
     sut.UseOneModelInHandlerConvention();
     sut.RegisterController<ModelFixtureController>();
     
     var routes = sut.BuildRoutes();
     routes.Count().Should().Be(2);
     var def = routes.First();
     def.Url.Should().Be("ModelFixture/{page}/{text}/{optional}");
     def.Defaults["controller"].Should().Be("ModelFixture");
     def.Defaults["action"].Should().Be("Get");
     def.Defaults.ContainsKey("page").Should().BeFalse();
     def.Defaults["text"].Should().Be(UrlParameter.Optional);
     def.Defaults["optional"].Should().Be(UrlParameter.Optional);
 }
 public void post_route_ignores_input_model()
 {
     var sut = new RoutingConventions();
     sut.UseOneModelInHandlerConvention();
     sut.RegisterController<ModelFixtureController>();
     
     var routes = sut.BuildRoutes();
     routes.Count().Should().Be(2);
     var def = routes.Last();
     def.Url.Should().Be("ModelFixture");
     def.Defaults["controller"].Should().Be("ModelFixture");
     def.Defaults["action"].Should().Be("Post");
     def.Defaults.ContainsKey("page").Should().BeFalse();
     def.Defaults.ContainsKey("text").Should().BeFalse();
     def.Defaults.ContainsKey("optional").Should().BeFalse();
     
 }
Ejemplo n.º 14
0
        public void post_route_ignores_input_model()
        {
            var sut = new RoutingConventions();

            sut.UseOneModelInHandlerConvention();
            sut.RegisterController <ModelFixtureController>();

            var routes = sut.BuildRoutes();

            routes.Count().Should().Be(2);
            var def = routes.Last();

            def.Url.Should().Be("ModelFixture");
            def.Defaults["controller"].Should().Be("ModelFixture");
            def.Defaults["action"].Should().Be("Post");
            def.Defaults.ContainsKey("page").Should().BeFalse();
            def.Defaults.ContainsKey("text").Should().BeFalse();
            def.Defaults.ContainsKey("optional").Should().BeFalse();
        }
Ejemplo n.º 15
0
        public void handles_argument_list_properly()
        {
            var sut = new RoutingConventions();

            sut.UseHandlerConvention();
            sut.RegisterController <HandlerFixtureController>();
            var id = 2;

            sut.HomeIs <HandlerFixtureController>(f => f.Get(id));
            var routes = sut.BuildRoutes();

            routes.Count().Should().Be(2);
            var def = routes.Last();

            def.Url.Should().Be("{*catch}");
            def.Defaults["controller"].Should().Be("HandlerFixture");
            def.Defaults["action"].Should().Be("Get");
            def.Defaults["page"].Should().Be(2);
        }
Ejemplo n.º 16
0
        public void route_is_generated_from_input_model()
        {
            var sut = new RoutingConventions();

            sut.Add((IBuildRoutes) new OneModelInHandlerConvention());
            sut.RegisterController <ModelFixtureController>();

            var routes = sut.BuildRoutes();

            routes.Count().Should().Be(1);
            var def = routes.Last();

            def.RouteTemplate.Should().Be("ModelFixture/{page}/{text}/{optional}");
            def.Defaults["controller"].Should().Be("ModelFixture");
            def.Defaults["action"].Should().Be("Get");
            def.Defaults.ContainsKey("page").Should().BeFalse();
            def.Defaults["text"].Should().Be(RouteParameter.Optional);
            def.Defaults["optional"].Should().Be(RouteParameter.Optional);
        }
Ejemplo n.º 17
0
        public void handles_one_model_in_argument_properly()
        {
            var sut = new RoutingConventions();

            sut.UseOneModelInHandlerConvention();
            sut.RegisterController <ModelFixtureController>();
            var id = 2;

            sut.HomeIs <ModelFixtureController>(f => f.Get(new ModelHandlerInput()
            {
                Page = 67
            }));
            var routes = sut.BuildRoutes();
            var def    = routes.Last();

            def.Url.Should().Be("{*catch}");
            def.Defaults["controller"].Should().Be("ModelFixture");
            def.Defaults["action"].Should().Be("Get");
            def.Defaults["page"].Should().Be(67);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Scans assembly and registers routing convetions but not configuration modules. Uses dependency resolver
        /// </summary>
        /// <param name="policy"></param>
        /// <param name="asm"></param>
        /// <param name="res">Null means it uses the current dependecy resolver</param>
        public static RoutingConventions RegisterConventions(this RoutingConventions policy, Assembly asm, IDependencyResolver res = null)
        {
            if (res == null)
            {
#if WEBAPI
                throw  new ArgumentNullException("res", "A dependency resolver instance is required for WebApi");
#else
                res = DependencyResolver.Current;
#endif
            }

            foreach (var builder in asm.GetTypesDerivedFrom <IBuildRoutes>())
            {
                policy.Add(res.GetInstance <IBuildRoutes>(builder));
            }

            foreach (var modifier in asm.GetTypesDerivedFrom <IModifyRoute>())
            {
                policy.Add(res.GetInstance <IModifyRoute>(modifier));
            }

            return(policy);
        }
Ejemplo n.º 19
0
 public RouteBuilderInfo(ActionCall call, RoutingConventions conventions)
 {
     _conventions = conventions;
     ActionCall   = call;
 }
Ejemplo n.º 20
0
 public LambdaConventionConfigurator(RoutingConventions parent, Predicate <ActionCall> predicate)
 {
     _parent = parent;
     _lambda = new LambdaConventionHost(predicate);
 }
Ejemplo n.º 21
0
 public static RoutingConventions UseHandlerConvention(this RoutingConventions policy)
 {
     policy.Add(new HandlerRouteConvention());
     return(policy);
 }
Ejemplo n.º 22
0
 public HomeActionCall(RoutingConventions parent)
 {
     _parent = parent;
 }
Ejemplo n.º 23
0
 /// <summary>
 /// Registers actions from the provided types.
 /// All types should be Controllers
 /// </summary>
 /// <param name="policy"></param>
 /// <param name="controllers"></param>
 public static RoutingConventions RegisterControllers(this RoutingConventions policy, params Type[] controllers)
 {
     return(RegisterControllers(policy, ControllerExtensions.GetActionMethods, controllers));
 }
Ejemplo n.º 24
0
        public static RoutingConventions RegisterController <T>(this RoutingConventions policy) where T : Controller
#endif
        {
            policy.RegisterControllers(typeof(T));
            return(policy);
        }
Ejemplo n.º 25
0
        ///// <summary>
        ///// Register as actions types matching a criteria
        ///// </summary>
        ///// <param name="policy"></param>
        ///// <param name="asm"></param>
        ///// <param name="match"></param>
        //public static RoutingConventions RegisterController(this RoutingConventions policy, Assembly asm, Func<Type, bool> match)
        //{
        //    RegisterController(policy, asm.GetTypes().Where(match).ToArray());
        //    return policy;
        //}

        /// <summary>
        /// Registers actions from controller
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="policy"></param>
#if WEBAPI
        public static RoutingConventions RegisterController <T>(this RoutingConventions policy) where T : ApiController
Ejemplo n.º 26
0
 public static RoutingConventions RegisterControllers(this RoutingConventions policy, Assembly asm, Func <Type, IEnumerable <MethodInfo> > actionMatch)
 {
     return(RegisterControllers(policy, actionMatch, asm.GetControllerTypes().ToArray()));
 }
Ejemplo n.º 27
0
 /// <summary>
 /// Register types deriving from Controller class
 /// </summary>
 /// <param name="policy"></param>
 /// <param name="asm"></param>
 public static RoutingConventions RegisterControllers(this RoutingConventions policy, Assembly asm)
 {
     return(RegisterControllers(policy, asm.GetControllerTypes().ToArray()));
 }
 public LambdaConventionConfigurator(RoutingConventions parent,Predicate<ActionCall> predicate)
 {
     _parent = parent;
     _lambda = new LambdaConventionHost(predicate);
 }