aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/template/url_helper_test.rb
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2007-06-05 19:10:59 +0000
committerJeremy Kemper <jeremy@bitsweat.net>2007-06-05 19:10:59 +0000
commit5dd3db86157ce2bd08c4ec07826d3aaf5c29f458 (patch)
treedfaa4c5731772c1d5a9f59d76fa3a76cbb4b51df /actionpack/test/template/url_helper_test.rb
parentb83efadb32fe55ba7a7d23d650a8adc1a351eab7 (diff)
downloadrails-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.rb65
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