diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2007-06-05 19:10:59 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2007-06-05 19:10:59 +0000 |
commit | 5dd3db86157ce2bd08c4ec07826d3aaf5c29f458 (patch) | |
tree | dfaa4c5731772c1d5a9f59d76fa3a76cbb4b51df /actionpack/test/template/url_helper_test.rb | |
parent | b83efadb32fe55ba7a7d23d650a8adc1a351eab7 (diff) | |
download | rails-5dd3db86157ce2bd08c4ec07826d3aaf5c29f458.tar.gz rails-5dd3db86157ce2bd08c4ec07826d3aaf5c29f458.tar.bz2 rails-5dd3db86157ce2bd08c4ec07826d3aaf5c29f458.zip |
Resources: url_for([parent, child]) generates /parents/1/children/2 for the nested resource. Likewise with the other simply helpful methods like form_for and link_to. Closes #6432.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6951 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/test/template/url_helper_test.rb')
-rw-r--r-- | actionpack/test/template/url_helper_test.rb | 65 |
1 files changed, 62 insertions, 3 deletions
diff --git a/actionpack/test/template/url_helper_test.rb b/actionpack/test/template/url_helper_test.rb index 43ec8ca0d3..1a5521b3e4 100644 --- a/actionpack/test/template/url_helper_test.rb +++ b/actionpack/test/template/url_helper_test.rb @@ -375,6 +375,22 @@ class Workshop end end +class Session + attr_accessor :id, :workshop_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/"] @@ -394,15 +410,36 @@ class PolymorphicControllerTest < Test::Unit::TestCase def rescue_action(e) raise e end end + class SessionsController < ActionController::Base + self.view_paths = ["#{File.dirname(__FILE__)}/../fixtures/"] + + def self.controller_path; 'sessions' end + + def index + @workshop = Workshop.new(params[:workshop_id], false) + @session = Session.new(1, true) + render :inline => "<%= url_for([@workshop, @session]) %>\n<%= link_to('Session', [@workshop, @session]) %>" + end + + def show + @workshop = Workshop.new(params[:workshop_id], false) + @session = Session.new(params[:id], false) + render :inline => "<%= url_for([@workshop, @session]) %>\n<%= link_to('Session', [@workshop, @session]) %>" + 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 + @controller = WorkshopsController.new + with_restful_routing do get :index assert_equal "/workshops\n<a href=\"/workshops\">Workshop</a>", @response.body @@ -410,19 +447,41 @@ class PolymorphicControllerTest < Test::Unit::TestCase end def test_existing_resource + @controller = WorkshopsController.new + with_restful_routing do get :show, :id => 1 assert_equal "/workshops/1\n<a href=\"/workshops/1\">Workshop</a>", @response.body end end + def test_new_nested_resource + @controller = SessionsController.new + + with_restful_routing do + get :index, :workshop_id => 1 + assert_equal "/workshops/1/sessions\n<a href=\"/workshops/1/sessions\">Session</a>", @response.body + end + end + + def test_existing_nested_resource + @controller = SessionsController.new + + with_restful_routing do + get :show, :workshop_id => 1, :id => 1 + assert_equal "/workshops/1/sessions/1\n<a href=\"/workshops/1/sessions/1\">Session</a>", @response.body + end + end + protected def with_restful_routing with_routing do |set| set.draw do |map| - map.resources :workshops + map.resources :workshops do |w| + w.resources :sessions + end end yield end end -end
\ No newline at end of file +end |