test/unit/router_tests.rb in deas-0.34.0 vs test/unit/router_tests.rb in deas-0.35.0

- old
+ new

@@ -26,12 +26,14 @@ @router = @router_class.new end subject{ @router } should have_readers :request_types, :urls, :routes + should have_readers :escape_query_value_proc - should have_imeths :view_handler_ns, :base_url, :prepend_base_url + should have_imeths :view_handler_ns, :escape_query_value + should have_imeths :base_url, :prepend_base_url should have_imeths :url, :url_for should have_imeths :default_request_type_name, :add_request_type should have_imeths :request_type_name should have_imeths :get, :post, :put, :patch, :delete should have_imeths :route, :redirect @@ -43,17 +45,29 @@ assert_empty subject.urls assert_empty subject.routes exp = @router_class::DEFAULT_REQUEST_TYPE_NAME assert_equal exp, subject.default_request_type_name + + value = "#%&?" + exp = Rack::Utils.escape(value) + assert_equal exp, subject.escape_query_value_proc.call(value) end should "set a view handler namespace" do subject.view_handler_ns(exp = Factory.string) assert_equal exp, subject.view_handler_ns end + should "allow configuring a custom escape query value proc" do + escape_proc = proc{ Factory.string } + subject.escape_query_value(&escape_proc) + assert_equal escape_proc, subject.escape_query_value_proc + + assert_raises(ArgumentError){ subject.escape_query_value } + end + should "set a base url" do subject.base_url(exp = Factory.url) assert_equal exp, subject.base_url end @@ -226,9 +240,19 @@ assert_not_nil url assert_kind_of Deas::Url, url assert_equal :get_info, url.name assert_equal '/info/:for', url.path + assert_equal subject.escape_query_value_proc, url.escape_query_value_proc + end + + should "define a url with a custom escape query value proc" do + name = Factory.string + escape_proc = proc{ Factory.string } + @router.url(name, Factory.path, :escape_query_value => escape_proc) + + url = subject.urls[name.to_sym] + assert_equal escape_proc, url.escape_query_value_proc end should "complain if defining a url with a non-string path" do assert_raises ArgumentError do subject.url(:get_info, /^\/info/)