0
@@ -23,15 +23,6 @@ class UrlRewriterTests < Test::Unit::TestCase
0
@rewriter.rewrite(:controller => 'c', :action => 'a', :id => 'i', :anchor => 'anchor')
0
- def split_query_string(str)
0
- [str[0].chr] + str[1..-1].split(/&/).sort
0
- def assert_query_equal(q1, q2)
0
- assert_equal(split_query_string(q1), split_query_string(q2))
0
class UrlWriterTests < Test::Unit::TestCase
0
@@ -123,5 +114,54 @@ class UrlWriterTests < Test::Unit::TestCase
0
ActionController::Routing::Routes.load!
0
+ def test_one_parameter
0
+ assert_equal('/c/a?param=val',
0
+ W.new.url_for(:only_path => true, :controller => 'c', :action => 'a', :param => 'val')
0
+ def test_two_parameters
0
+ url = W.new.url_for(:only_path => true, :controller => 'c', :action => 'a', :p1 => 'X1', :p2 => 'Y2')
0
+ params = extract_params(url)
0
+ assert_equal params[0], { :p1 => 'X1' }.to_query
0
+ assert_equal params[1], { :p2 => 'Y2' }.to_query
0
+ def test_hash_parameter
0
+ url = W.new.url_for(:only_path => true, :controller => 'c', :action => 'a', :query => {:name => 'Bob', :category => 'prof'})
0
+ params = extract_params(url)
0
+ assert_equal params[0], { 'query[category]' => 'prof' }.to_query
0
+ assert_equal params[1], { 'query[name]' => 'Bob' }.to_query
0
+ def test_array_parameter
0
+ url = W.new.url_for(:only_path => true, :controller => 'c', :action => 'a', :query => ['Bob', 'prof'])
0
+ params = extract_params(url)
0
+ assert_equal params[0], { 'query[]' => 'Bob' }.to_query
0
+ assert_equal params[1], { 'query[]' => 'prof' }.to_query
0
+ def test_hash_recursive_parameters
0
+ url = W.new.url_for(:only_path => true, :controller => 'c', :action => 'a', :query => {:person => {:name => 'Bob', :position => 'prof'}, :hobby => 'piercing'})
0
+ params = extract_params(url)
0
+ assert_equal params[0], { 'query[hobby]' => 'piercing' }.to_query
0
+ assert_equal params[1], { 'query[person][name]' => 'Bob' }.to_query
0
+ assert_equal params[2], { 'query[person][position]' => 'prof' }.to_query
0
+ def test_hash_recursive_and_array_parameters
0
+ url = W.new.url_for(:only_path => true, :controller => 'c', :action => 'a', :id => 101, :query => {:person => {:name => 'Bob', :position => ['prof', 'art director']}, :hobby => 'piercing'})
0
+ assert_match %r(^/c/a/101), url
0
+ params = extract_params(url)
0
+ assert_equal params[0], { 'query[hobby]' => 'piercing' }.to_query
0
+ assert_equal params[1], { 'query[person][name]' => 'Bob' }.to_query
0
+ assert_equal params[2], { 'query[person][position][]' => 'art director' }.to_query
0
+ assert_equal params[3], { 'query[person][position][]' => 'prof' }.to_query
0
+ def extract_params(url)
0
+ url.split('?', 2).last.split('&')
Comments
No one has commented yet.