public void Route_is_not_picted_if_one_parameter_condition_does_return_false() { var route = new Route("GET", "/test/{ProductId}/{Title}", App); route.AddCondition("ProductId", value => true); route.AddCondition("ProductId", value => false); Assert.True(DoesNotRouteTo(route, Utils.BuildGetRequest("/test/foo/nice-product"))); }
public void Route_is_picted_if_all_parameter_conditions_return_true() { var route = new Route("GET", "/test/{ProductId}/{Title}", App); route.AddCondition("ProductId", value => true); route.AddCondition("ProductId", value => true); route.AddCondition("Title", value => true); Assert.True(RoutesTo(route, _other, "/test/foo/nice-product")); }
public void Passes_parameter_values_to_parameter_condition_functions() { var route = new Route("GET", "/test/{ProductId}/{Title}", App); string receivedProductId = null; string receivedTitle = null; route.AddCondition("ProductId", value => { receivedProductId = value.Value; return(true); }); route.AddCondition("Title", value => { receivedTitle = value.Value; return(true); }); var router = new Router(); router.AddRoute(route); router.Resolve(Utils.BuildGetRequest("/test/123/foo")); Assert.Equal("123", receivedProductId); Assert.Equal("foo", receivedTitle); }
public void Does__otherturn_Route_if_condition_is_false() { var url = "/test"; var Route = new Route("GET", url, App); Route.AddCondition(new RouteCondition(data => data.OwinEnv.ContainsKey("KeyNeedsToExist"))); Assert.True(DoesNotRouteTo(Route, url)); }
public void Router_stops_checking_conditions_if_it_found_condition_that_returns_false() { var route = new Route("GET", "/test", App); var c1 = false; var c2 = false; var c3 = false; var c4 = false; route.AddCondition(new RouteCondition(data => { c1 = true; return(true); })); route.AddCondition(new RouteCondition(data => { c2 = true; return(true); })); route.AddCondition(new RouteCondition(data => { c3 = true; return(false); })); route.AddCondition(new RouteCondition(data => { c4 = true; return(true); })); var router = new Router(); router.AddRoute(route); router.Resolve(Utils.BuildGetRequest("/test")); Assert.True(c1 && c2 && c3 && !c4); }
public void All_Parameter_condition_for_same_paramter_get_checked_until_one_returns_false() { var route = new Route("GET", "/test/{ProductId}/{Title}", App); var c1 = false; var c2 = false; var c3 = false; route.AddCondition("ProductId", value => { c1 = true; return(true); }); route.AddCondition("ProductId", value => { c2 = true; return(false); }); route.AddCondition("ProductId", value => { c3 = true; return(true); }); var router = new Router(); router.AddRoute(route); router.Resolve(Utils.BuildGetRequest("/test/1234/title")); Assert.True(c1); Assert.True(c2); Assert.False(c3); }
public void Route_instance_is_passed_to_condition_function() { var route = new Route("GET", "/test", App); Route receivedRoute = null; route.AddCondition(new RouteCondition(data => { receivedRoute = data.Route; return(true); })); var router = new Router(); router.AddRoute(route); router.Resolve(Utils.BuildGetRequest("/test")); Assert.Equal(route, receivedRoute); }
public void Route_parameters_passed_to_condition_function_are_not_null_if_route_contains_no_parameters() { var route = new Route("GET", "/test", App); IDictionary <string, RouteValue> receivedParams = null; route.AddCondition(new RouteCondition(data => { receivedParams = data.RouteParameters; return(true); })); var router = new Router(); router.AddRoute(route); router.Resolve(Utils.BuildGetRequest("/test")); Assert.NotNull(receivedParams); }
public void Routes_with_similar_segments_are_working_01() { var router = new Router(); var route1 = new Route("GET", "/SiteMaps/PreviewPages.xml"); var route2 = new Route("GET", "/SiteMaps/PreviewPages_{page}.xml"); route2.AddCondition(new RouteCondition(data => { int isInteger; return(int.TryParse(data.RouteParameters["page"].Value, out isInteger)); })); router.AddRoute(route1); router.AddRoute(route2); var received = router.Resolve(Utils.BuildGetRequest("/SiteMaps/PreviewPages.xml")); Assert.Same(route1, received.Route); }
public void ConditionData_is_passed_to_condition_function() { var route = new Route("GET", "/test", App); object conditionData = "test data to pass to check method"; object receivedDataFromCheckMethod = null; route.AddCondition(new RouteCondition( x => { receivedDataFromCheckMethod = x.ConditionData; return(true); }, conditionData) ); var router = new Router(); router.AddRoute(route); router.Resolve(FakeRequest.Get("/test")); Assert.Same(conditionData, receivedDataFromCheckMethod); }
public void Owin_Environment_is_passed_to_condition_function() { var route = new Route("GET", "/test", App); OwinEnv receivedOwinEnv = null; route.AddCondition(new RouteCondition(data => { receivedOwinEnv = data.OwinEnv; return(true); })); var router = new Router(); router.AddRoute(route); var owinEnv = Utils.BuildGetRequest("/test"); owinEnv["test"] = true; router.Resolve(owinEnv); Assert.Equal(true, receivedOwinEnv["test"]); }
public void Route_parameters_are_passed_to_condition_function() { var route = new Route("GET", @"/products/{ProductId}-{Name}", App); IDictionary <string, RouteValue> receivedParams = null; route.AddCondition(new RouteCondition(data => { receivedParams = data.RouteParameters; return(true); })); var router = new Router(); router.AddRoute(route); router.Resolve(Utils.BuildGetRequest("/products/1234-myproduct")); Assert.Equal(new Dictionary <string, RouteValue>() { { "ProductId", new RouteValue("1234") }, { "Name", new RouteValue("myproduct") } }, receivedParams); }