assert_equal($params["id"], 25); $_GET = array(); }); it("does not merge params already defined by router", function () { Router::getInstance()->reset(); $_GET["controller"] = "get_application"; $_GET["user_id"] = 100; Router::prepare(function ($r) { $r->match("/blog/:action")->to(array("controller" => "application")); }); $d = Dispatcher::getInstance(); $params = $d->params_for_request("/blog/method"); assert_not_equal($params["controller"], "get_application"); assert_equal($params["action"], "method"); assert_equal($params["user_id"], 100); $_GET = array(); }); it("returns false when it cannot merge", function () { Router::getInstance()->reset(); $_GET["user_id"] = 100; Router::prepare(function ($r) { $r->match("/blog/:action")->to(array("controller" => "application")); }); $d = Dispatcher::getInstance(); $params = $d->params_for_request("/user/method"); assert_not_equal($params["controller"], "application"); assert_not_equal($params["action"], "method"); assert_not_equal($params["user_id"], 100); $_GET = array(); }); });
}); it("should match all optional params", function () { Router::prepare(function ($r) { $r->match("/artist/:id(/:name(/:page(/:sort_order)))")->to(array("controller" => "catalog", "action" => "show_book")); }); $r = Router::getInstance(); $params = $r->map_route_to_params("/artist/1234/coldplay/1/recent"); assert_equal($params["id"], "1234"); assert_equal($params["name"], "coldplay"); assert_equal($params["page"], "1"); assert_equal($params["sort_order"], "recent"); $r->reset(); }); it("should match all params in path", function () { Router::prepare(function ($r) { $r->match("/artist/:id/:name/:page/:sort_order")->to(array("controller" => "catalog", "action" => "show_book")); }); $r = Router::getInstance(); $params = $r->map_route_to_params("/artist/1234/coldplay/1/recent"); assert_equal($params["id"], "1234"); assert_equal($params["name"], "coldplay"); assert_equal($params["page"], "1"); assert_equal($params["sort_order"], "recent"); $r->reset(); }); }); describe("Router -> route_path_to_regexp", function () { it("should return a regular expression", function () { $r = Router::getInstance(); $pattern = $r->route_path_to_regexp("/artist/:id/:name"); assert_equal(preg_match("/{$pattern}/", "/artist/100/coldplay"), true, "It should return a regular expression");