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/)