From c769ad85336713b7e5bdadd57d92a007783f8208 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 12 May 2007 21:12:31 +0000 Subject: Removed deprecated parameters_for_method_reference concept (legacy from before named routes) [DHH] Added record identification with polymorphic routes for ActionController::Base#url_for and ActionView::Base#url_for [DHH] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6729 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../test/template/active_record_helper_test.rb | 2 +- actionpack/test/template/asset_tag_helper_test.rb | 2 +- actionpack/test/template/form_helper_test.rb | 20 +++++- actionpack/test/template/form_tag_helper_test.rb | 6 +- .../template/java_script_macros_helper_test.rb | 2 +- actionpack/test/template/prototype_helper_test.rb | 2 +- .../test/template/scriptaculous_helper_test.rb | 2 +- actionpack/test/template/url_helper_test.rb | 73 +++++++++++++++++++++- 8 files changed, 96 insertions(+), 13 deletions(-) (limited to 'actionpack/test/template') diff --git a/actionpack/test/template/active_record_helper_test.rb b/actionpack/test/template/active_record_helper_test.rb index c1dc73990d..5eab1c8525 100644 --- a/actionpack/test/template/active_record_helper_test.rb +++ b/actionpack/test/template/active_record_helper_test.rb @@ -83,7 +83,7 @@ class ActiveRecordHelperTest < Test::Unit::TestCase setup_user @controller = Object.new - def @controller.url_for(options, *parameters_for_method_reference) + def @controller.url_for(options) options = options.symbolize_keys [options[:action], options[:id].to_param].compact.join('/') diff --git a/actionpack/test/template/asset_tag_helper_test.rb b/actionpack/test/template/asset_tag_helper_test.rb index 71378584fa..cd4b56a2a0 100644 --- a/actionpack/test/template/asset_tag_helper_test.rb +++ b/actionpack/test/template/asset_tag_helper_test.rb @@ -303,7 +303,7 @@ class AssetTagHelperNonVhostTest < Test::Unit::TestCase @controller = Class.new do attr_accessor :request - def url_for(options, *parameters_for_method_reference) + def url_for(options) "http://www.example.com/collaboration/hieraki" end end.new diff --git a/actionpack/test/template/form_helper_test.rb b/actionpack/test/template/form_helper_test.rb index c5e7505a36..a7336c5b08 100644 --- a/actionpack/test/template/form_helper_test.rb +++ b/actionpack/test/template/form_helper_test.rb @@ -38,7 +38,7 @@ class FormHelperTest < Test::Unit::TestCase @controller = Class.new do attr_reader :url_for_options - def url_for(options, *parameters_for_method_reference) + def url_for(options) @url_for_options = options "http://www.example.com" end @@ -528,7 +528,7 @@ class FormHelperTest < Test::Unit::TestCase form_for(:post, @post, :url => 'http://www.otherdomain.com') do |f| end - assert_equal 'http://www.otherdomain.com', @controller.url_for_options + assert_equal '
', _erbout end def test_form_for_with_hash_url_option @@ -540,6 +540,14 @@ class FormHelperTest < Test::Unit::TestCase assert_equal 'action', @controller.url_for_options[:action] end + def test_form_for_with_record_url_option + _erbout = '' + + form_for(:post, @post, :url => @post) do |f| end + + expected = "
" + end + def test_remote_form_for_with_html_options_adds_options_to_form_tag self.extend ActionView::Helpers::PrototypeHelper _erbout = '' @@ -549,4 +557,10 @@ class FormHelperTest < Test::Unit::TestCase assert_dom_equal expected, _erbout end -end + + + protected + def polymorphic_path(record, url_writer) + "/posts/#{record.id}" + end +end \ No newline at end of file diff --git a/actionpack/test/template/form_tag_helper_test.rb b/actionpack/test/template/form_tag_helper_test.rb index 8b5d09d2a6..2390edff86 100644 --- a/actionpack/test/template/form_tag_helper_test.rb +++ b/actionpack/test/template/form_tag_helper_test.rb @@ -9,7 +9,7 @@ class FormTagHelperTest < Test::Unit::TestCase def setup @controller = Class.new do - def url_for(options, *parameters_for_method_reference) + def url_for(options) "http://www.example.com" end end @@ -44,7 +44,7 @@ class FormTagHelperTest < Test::Unit::TestCase _erbout = '' form_tag("http://example.com") { _erbout.concat "Hello world!" } - expected = %(
Hello world!
) + expected = %(
Hello world!
) assert_dom_equal expected, _erbout end @@ -52,7 +52,7 @@ class FormTagHelperTest < Test::Unit::TestCase _erbout = '' form_tag("http://example.com", :method => :put) { _erbout.concat "Hello world!" } - expected = %(
Hello world!
) + expected = %(
Hello world!
) assert_dom_equal expected, _erbout end diff --git a/actionpack/test/template/java_script_macros_helper_test.rb b/actionpack/test/template/java_script_macros_helper_test.rb index 10d77558f7..13318958c8 100644 --- a/actionpack/test/template/java_script_macros_helper_test.rb +++ b/actionpack/test/template/java_script_macros_helper_test.rb @@ -12,7 +12,7 @@ class JavaScriptMacrosHelperTest < Test::Unit::TestCase def setup @controller = Class.new do - def url_for(options, *parameters_for_method_reference) + def url_for(options) url = "http://www.example.com/" url << options[:action].to_s if options and options[:action] url diff --git a/actionpack/test/template/prototype_helper_test.rb b/actionpack/test/template/prototype_helper_test.rb index ef658517ff..cd098f2a47 100644 --- a/actionpack/test/template/prototype_helper_test.rb +++ b/actionpack/test/template/prototype_helper_test.rb @@ -17,7 +17,7 @@ module BaseTest def setup @template = nil @controller = Class.new do - def url_for(options, *parameters_for_method_reference) + def url_for(options) if options.is_a?(String) options else diff --git a/actionpack/test/template/scriptaculous_helper_test.rb b/actionpack/test/template/scriptaculous_helper_test.rb index cb1171a640..e40debc0f9 100644 --- a/actionpack/test/template/scriptaculous_helper_test.rb +++ b/actionpack/test/template/scriptaculous_helper_test.rb @@ -13,7 +13,7 @@ class ScriptaculousHelperTest < Test::Unit::TestCase def setup @controller = Class.new do - def url_for(options, *parameters_for_method_reference) + def url_for(options) url = "http://www.example.com/" url << options[:action].to_s if options and options[:action] url diff --git a/actionpack/test/template/url_helper_test.rb b/actionpack/test/template/url_helper_test.rb index 9ecbc77a4e..1762015d9d 100644 --- a/actionpack/test/template/url_helper_test.rb +++ b/actionpack/test/template/url_helper_test.rb @@ -10,7 +10,7 @@ class UrlHelperTest < Test::Unit::TestCase def setup @controller = Class.new do attr_accessor :url, :request - def url_for(options, *parameters_for_method_reference) + def url_for(options) url end end @@ -168,7 +168,7 @@ class UrlHelperTest < Test::Unit::TestCase assert_equal "Showing", link_to_unless(true, "Showing", :action => "show", :controller => "weblog") assert_dom_equal "Listing", link_to_unless(false, "Listing", :action => "list", :controller => "weblog") assert_equal "Showing", link_to_unless(true, "Showing", :action => "show", :controller => "weblog", :id => 1) - assert_equal "Showing", link_to_unless(true, "Showing", :action => "show", :controller => "weblog", :id => 1) { |name, options, html_options, *parameters_for_method_reference| + assert_equal "Showing", link_to_unless(true, "Showing", :action => "show", :controller => "weblog", :id => 1) { |name, options, html_options| "#{name}" } assert_equal "Showing", link_to_unless(true, "Showing", :action => "show", :controller => "weblog", :id => 1) { |name| @@ -352,3 +352,72 @@ class LinkToUnlessCurrentWithControllerTest < Test::Unit::TestCase end end end + + +class Workshop + attr_accessor :id, :new_record + + def initialize(id, new_record) + @id, @new_record = id, new_record + end + + def new_record? + @new_record + end + + def to_s + id.to_s + end +end + +class PolymorphicControllerTest < Test::Unit::TestCase + class WorkshopsController < ActionController::Base + self.view_paths = ["#{File.dirname(__FILE__)}/../fixtures/"] + + def self.controller_path; 'workshops' end + + def index + @workshop = Workshop.new(1, true) + render :inline => "<%= url_for(@workshop) %>\n<%= link_to('Workshop', @workshop) %>" + end + + def show + @workshop = Workshop.new(params[:id], false) + render :inline => "<%= url_for(@workshop) %>\n<%= link_to('Workshop', @workshop) %>" + end + + def rescue_action(e) raise e end + end + + include ActionView::Helpers::UrlHelper + + def setup + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + @controller = WorkshopsController.new + end + + def test_new_resource + with_restful_routing do + get :index + assert_equal "/workshops\nWorkshop", @response.body + end + end + + def test_existing_resource + with_restful_routing do + get :show, :id => 1 + assert_equal "/workshops/1\nWorkshop", @response.body + end + end + + protected + def with_restful_routing + with_routing do |set| + set.draw do |map| + map.resources :workshops + end + yield + end + end +end \ No newline at end of file -- cgit v1.2.3