Merged updates from trunk into stable branch
[feedcatcher.git] / vendor / rails / actionpack / test / activerecord / render_partial_with_record_identification_test.rb
1 require 'active_record_unit'
2
3 class RenderPartialWithRecordIdentificationController < ActionController::Base
4 def render_with_has_many_and_belongs_to_association
5 @developer = Developer.find(1)
6 render :partial => @developer.projects
7 end
8
9 def render_with_has_many_association
10 @topic = Topic.find(1)
11 render :partial => @topic.replies
12 end
13
14 def render_with_named_scope
15 render :partial => Reply.base
16 end
17
18 def render_with_has_many_through_association
19 @developer = Developer.find(:first)
20 render :partial => @developer.topics
21 end
22
23 def render_with_has_one_association
24 @company = Company.find(1)
25 render :partial => @company.mascot
26 end
27
28 def render_with_belongs_to_association
29 @reply = Reply.find(1)
30 render :partial => @reply.topic
31 end
32
33 def render_with_record
34 @developer = Developer.find(:first)
35 render :partial => @developer
36 end
37
38 def render_with_record_collection
39 @developers = Developer.find(:all)
40 render :partial => @developers
41 end
42
43 def render_with_record_collection_and_spacer_template
44 @developer = Developer.find(1)
45 render :partial => @developer.projects, :spacer_template => 'test/partial_only'
46 end
47 end
48
49 class RenderPartialWithRecordIdentificationTest < ActiveRecordTestCase
50 tests RenderPartialWithRecordIdentificationController
51 fixtures :developers, :projects, :developers_projects, :topics, :replies, :companies, :mascots
52
53 def test_rendering_partial_with_has_many_and_belongs_to_association
54 get :render_with_has_many_and_belongs_to_association
55 assert_template 'projects/_project'
56 assert_equal assigns(:developer).projects.map(&:name).join, @response.body
57 end
58
59 def test_rendering_partial_with_has_many_association
60 get :render_with_has_many_association
61 assert_template 'replies/_reply'
62 assert_equal 'Birdman is better!', @response.body
63 end
64
65 def test_rendering_partial_with_named_scope
66 get :render_with_named_scope
67 assert_template 'replies/_reply'
68 assert_equal 'Birdman is better!Nuh uh!', @response.body
69 end
70
71 def test_render_with_record
72 get :render_with_record
73 assert_template 'developers/_developer'
74 assert_equal 'David', @response.body
75 end
76
77 def test_render_with_record_collection
78 get :render_with_record_collection
79 assert_template 'developers/_developer'
80 assert_equal 'DavidJamisfixture_3fixture_4fixture_5fixture_6fixture_7fixture_8fixture_9fixture_10Jamis', @response.body
81 end
82
83 def test_render_with_record_collection_and_spacer_template
84 get :render_with_record_collection_and_spacer_template
85 assert_equal assigns(:developer).projects.map(&:name).join('only partial'), @response.body
86 end
87
88 def test_rendering_partial_with_has_one_association
89 mascot = Company.find(1).mascot
90 get :render_with_has_one_association
91 assert_template 'mascots/_mascot'
92 assert_equal mascot.name, @response.body
93 end
94 end
95
96 class RenderPartialWithRecordIdentificationController < ActionController::Base
97 def render_with_has_many_and_belongs_to_association
98 @developer = Developer.find(1)
99 render :partial => @developer.projects
100 end
101
102 def render_with_has_many_association
103 @topic = Topic.find(1)
104 render :partial => @topic.replies
105 end
106
107 def render_with_has_many_through_association
108 @developer = Developer.find(:first)
109 render :partial => @developer.topics
110 end
111
112 def render_with_belongs_to_association
113 @reply = Reply.find(1)
114 render :partial => @reply.topic
115 end
116
117 def render_with_record
118 @developer = Developer.find(:first)
119 render :partial => @developer
120 end
121
122 def render_with_record_collection
123 @developers = Developer.find(:all)
124 render :partial => @developers
125 end
126 end
127
128 class Game < Struct.new(:name, :id)
129 def to_param
130 id.to_s
131 end
132 end
133
134 module Fun
135 class NestedController < ActionController::Base
136 def render_with_record_in_nested_controller
137 render :partial => Game.new("Pong")
138 end
139
140 def render_with_record_collection_in_nested_controller
141 render :partial => [ Game.new("Pong"), Game.new("Tank") ]
142 end
143 end
144
145 module Serious
146 class NestedDeeperController < ActionController::Base
147 def render_with_record_in_deeper_nested_controller
148 render :partial => Game.new("Chess")
149 end
150
151 def render_with_record_collection_in_deeper_nested_controller
152 render :partial => [ Game.new("Chess"), Game.new("Sudoku"), Game.new("Solitaire") ]
153 end
154 end
155 end
156 end
157
158 class RenderPartialWithRecordIdentificationAndNestedControllersTest < ActiveRecordTestCase
159 tests Fun::NestedController
160
161 def test_render_with_record_in_nested_controller
162 get :render_with_record_in_nested_controller
163 assert_template 'fun/games/_game'
164 assert_equal 'Pong', @response.body
165 end
166
167 def test_render_with_record_collection_in_nested_controller
168 get :render_with_record_collection_in_nested_controller
169 assert_template 'fun/games/_game'
170 assert_equal 'PongTank', @response.body
171 end
172 end
173
174 class RenderPartialWithRecordIdentificationAndNestedDeeperControllersTest < ActiveRecordTestCase
175 tests Fun::Serious::NestedDeeperController
176
177 def test_render_with_record_in_deeper_nested_controller
178 get :render_with_record_in_deeper_nested_controller
179 assert_template 'fun/serious/games/_game'
180 assert_equal 'Chess', @response.body
181 end
182
183 def test_render_with_record_collection_in_deeper_nested_controller
184 get :render_with_record_collection_in_deeper_nested_controller
185 assert_template 'fun/serious/games/_game'
186 assert_equal 'ChessSudokuSolitaire', @response.body
187 end
188 end