cells 3.3.10 → 3.4.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +0 -8
- data/Gemfile +4 -1
- data/README.rdoc +91 -107
- data/Rakefile +0 -4
- data/lib/cell.rb +5 -6
- data/lib/{cells/cell → cell}/active_helper.rb +1 -1
- data/lib/cell/base.rb +134 -0
- data/lib/cell/base_methods.rb +100 -0
- data/lib/cell/caching.rb +153 -0
- data/lib/cell/rails.rb +239 -0
- data/lib/cells.rb +25 -3
- data/lib/cells/assertions_helper.rb +1 -1
- data/lib/cells/helpers/capture_helper.rb +3 -3
- data/lib/cells/rails.rb +65 -4
- data/lib/cells/version.rb +3 -1
- data/rails_generators/cell/cell_generator.rb +47 -35
- data/rails_generators/cell/templates/cell.rb +1 -1
- data/rails_generators/cells_install/cells_install_generator.rb +5 -3
- data/rails_generators/erb/cell_generator.rb +20 -0
- data/rails_generators/{cell → erb}/templates/view.html.erb +0 -0
- data/test/active_helper_test.rb +1 -0
- data/test/app/cells/bad_guitarist_cell.rb +2 -0
- data/test/app/cells/bassist_cell.rb +1 -1
- data/test/app/controllers/musician_controller.rb +16 -0
- data/test/assertions_helper_test.rb +8 -18
- data/test/base_methods_test.rb +40 -0
- data/test/cell_generator_test.rb +33 -21
- data/test/helper_test.rb +31 -123
- data/test/rails/caching_test.rb +215 -0
- data/test/rails/capture_test.rb +52 -0
- data/test/rails/cells_test.rb +88 -0
- data/test/rails/integration_test.rb +37 -0
- data/test/rails/render_test.rb +140 -0
- data/test/rails/router_test.rb +74 -0
- data/test/rails/view_test.rb +24 -0
- data/test/test_helper.rb +30 -29
- metadata +68 -133
- data/.gitignore +0 -3
- data/about.yml +0 -7
- data/cells.gemspec +0 -26
- data/lib/cells/cell.rb +0 -16
- data/lib/cells/cell/base.rb +0 -470
- data/lib/cells/cell/caching.rb +0 -163
- data/lib/cells/cell/test_case.rb +0 -158
- data/lib/cells/cell/view.rb +0 -55
- data/lib/cells/rails/action_controller.rb +0 -37
- data/lib/cells/rails/action_view.rb +0 -37
- data/rails/init.rb +0 -44
- data/rails_generators/cells_install/templates/tasks.rake +0 -6
- data/test/app/cells/a/another_state.html.erb +0 -1
- data/test/app/cells/a/existing_view.html.erb +0 -1
- data/test/app/cells/a/inherited_view.html.erb +0 -1
- data/test/app/cells/a/inherited_view.js.erb +0 -1
- data/test/app/cells/a/view_with_locals.html.erb +0 -1
- data/test/app/cells/a/view_with_render_call.html.erb +0 -1
- data/test/app/cells/b/existing_view.html.erb +0 -1
- data/test/app/cells/b/existing_view.js.erb +0 -1
- data/test/app/cells/b/layouts/metal.html.erb +0 -1
- data/test/app/cells/b/view_with_render_call.html.erb +0 -1
- data/test/app/cells/bassist/jam.html.erb +0 -3
- data/test/app/cells/bassist/play.html.erb +0 -1
- data/test/app/cells/cells_test_one/renamed_instance_view.html.erb +0 -1
- data/test/app/cells/cells_test_one/super_state.html.erb +0 -1
- data/test/app/cells/cells_test_one_cell.rb +0 -20
- data/test/app/cells/cells_test_two_cell.rb +0 -4
- data/test/app/cells/helper_using/state_using_application_helper.html.erb +0 -3
- data/test/app/cells/helper_using/state_with_automatic_helper_invocation.html.erb +0 -3
- data/test/app/cells/helper_using/state_with_helper_invocation.html.erb +0 -3
- data/test/app/cells/helper_using/state_with_helper_method_invocation.html.erb +0 -3
- data/test/app/cells/layouts/metal.html.erb +0 -1
- data/test/app/cells/my_child/hello.html.erb +0 -1
- data/test/app/cells/my_mother/bye.html.erb +0 -1
- data/test/app/cells/my_mother/hello.html.erb +0 -1
- data/test/app/cells/my_test/_broken_partial.html.erb +0 -1
- data/test/app/cells/my_test/_partial.html.erb +0 -1
- data/test/app/cells/my_test/state_with_instance_var.html.erb +0 -1
- data/test/app/cells/my_test/state_with_link_to.html.erb +0 -3
- data/test/app/cells/my_test/state_with_not_included_helper_method.html.erb +0 -8
- data/test/app/cells/my_test/view_containing_broken_partial.html.erb +0 -3
- data/test/app/cells/my_test/view_containing_nonexistant_partial.html.erb +0 -3
- data/test/app/cells/my_test/view_containing_partial.html.erb +0 -3
- data/test/app/cells/my_test/view_containing_partial_without_cell_name.html.erb +0 -3
- data/test/app/cells/my_test/view_in_local_test_views_dir.html.erb +0 -1
- data/test/app/cells/my_test/view_with_explicit_english_translation.en.html.erb +0 -1
- data/test/app/cells/my_test/view_with_explicit_english_translation.html.erb +0 -1
- data/test/app/cells/my_test/view_with_instance_var.html.erb +0 -4
- data/test/app/cells/really_module/nested/happy_state.html.erb +0 -1
- data/test/app/cells/really_module/nested_cell.rb +0 -11
- data/test/app/cells/simple/two_templates_state.html.mytpl +0 -1
- data/test/app/cells/simple_cell.rb +0 -7
- data/test/app/cells/test/beep.html.erb +0 -1
- data/test/app/cells/test/state_invoking_capture.html.erb +0 -7
- data/test/app/cells/test/state_invoking_content_for.html.erb +0 -7
- data/test/app/cells/test/state_invoking_content_for_twice.html.erb +0 -9
- data/test/app/cells/test/state_with_not_included_helper_method.html.erb +0 -8
- data/test/app/cells/two_helpers_including/state_using_another_helper.html.erb +0 -3
- data/test/bugs_test.rb +0 -23
- data/test/caching_test.rb +0 -270
- data/test/capture_helper_test.rb +0 -59
- data/test/cells_test.rb +0 -352
- data/test/rails_test.rb +0 -35
- data/test/render_test.rb +0 -305
- data/test/test_case_test.rb +0 -106
data/test/capture_helper_test.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require File.join(File.dirname(__FILE__), *%w[test_helper])
|
3
|
-
require File.join(File.dirname(__FILE__), *%w[app cells test_cell])
|
4
|
-
|
5
|
-
class CaptureTest < ActionController::TestCase
|
6
|
-
tests CellsTestController
|
7
|
-
|
8
|
-
def setup
|
9
|
-
super
|
10
|
-
|
11
|
-
CellsTestController.class_eval do
|
12
|
-
def test_capture
|
13
|
-
@cell_content = render_cell(:test, :state_invoking_capture)
|
14
|
-
|
15
|
-
# captured_block comes from the cell view:
|
16
|
-
render :inline => '<h3><%= @captured_block %></h3>' << @cell_content
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_content_for
|
20
|
-
@cell_content = render_cell(:test, :state_invoking_content_for)
|
21
|
-
|
22
|
-
# :js comes from the cell views:
|
23
|
-
render :inline => '<pre><%= yield :js %></pre>' << @cell_content
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_global_capture
|
29
|
-
TestCell.class_eval do
|
30
|
-
helper ::Cells::Helpers::CaptureHelper
|
31
|
-
def state_invoking_capture
|
32
|
-
render
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
get :test_capture
|
37
|
-
|
38
|
-
assert_select 'h1', ''
|
39
|
-
assert_select 'h2', 'captured!'
|
40
|
-
assert_select 'h3', 'captured!', 'captured block not visible in controller'
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_global_content_for
|
44
|
-
TestCell.class_eval do
|
45
|
-
helper ::Cells::Helpers::CaptureHelper
|
46
|
-
def state_invoking_content_for
|
47
|
-
render
|
48
|
-
end
|
49
|
-
def state_invoking_content_for_twice
|
50
|
-
render
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
get :test_content_for
|
55
|
-
|
56
|
-
assert_select 'js', ''
|
57
|
-
assert_select 'pre', "\nfirst line\n\nsecond line\n\nthird line\n"
|
58
|
-
end
|
59
|
-
end
|
data/test/cells_test.rb
DELETED
@@ -1,352 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require File.join(File.dirname(__FILE__), 'test_helper')
|
3
|
-
require File.join(File.dirname(__FILE__), *%w[app cells cells_test_one_cell])
|
4
|
-
|
5
|
-
module Some
|
6
|
-
class Cell < ::Cell::Base
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
class JustOneViewCell < ::Cell::Base
|
11
|
-
def some_state
|
12
|
-
render
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
class CellContainedInPlugin < ::Cell::Base
|
17
|
-
def some_view
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
class MyTestCell < ::Cell::Base
|
22
|
-
def direct_output
|
23
|
-
"<h9>this state method doesn't render a template but returns a string, which is great!</h9>"
|
24
|
-
end
|
25
|
-
|
26
|
-
def state_with_link_to
|
27
|
-
render
|
28
|
-
end
|
29
|
-
|
30
|
-
def view_in_local_test_views_dir
|
31
|
-
render
|
32
|
-
end
|
33
|
-
|
34
|
-
def view_with_explicit_english_translation
|
35
|
-
render
|
36
|
-
end
|
37
|
-
|
38
|
-
def view_containing_partial
|
39
|
-
render
|
40
|
-
end
|
41
|
-
|
42
|
-
def view_containing_partial_without_cell_name
|
43
|
-
render
|
44
|
-
end
|
45
|
-
|
46
|
-
def view_containing_nonexistant_partial
|
47
|
-
render
|
48
|
-
end
|
49
|
-
|
50
|
-
def view_containing_broken_partial
|
51
|
-
render
|
52
|
-
end
|
53
|
-
|
54
|
-
def view_with_instance_var
|
55
|
-
@instance_variable_one = 'yeah'
|
56
|
-
@instance_variable_two = 'wow'
|
57
|
-
render
|
58
|
-
end
|
59
|
-
|
60
|
-
def missing_view
|
61
|
-
render
|
62
|
-
end
|
63
|
-
|
64
|
-
def state_with_link_to_function
|
65
|
-
render
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
# fixtures for view inheritance -------------------------------
|
70
|
-
# views are located in cells/test/cells/my_mother_cell/
|
71
|
-
class MyMotherCell < ::Cell::Base
|
72
|
-
def hello
|
73
|
-
@message = 'hello, kid!'
|
74
|
-
render
|
75
|
-
end
|
76
|
-
def bye
|
77
|
-
@message = 'bye, you!'
|
78
|
-
render
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
# views are located in cells/test/cells/my_child_cell/
|
83
|
-
class MyChildCell < MyMotherCell
|
84
|
-
def hello
|
85
|
-
@message = 'hello, mom!'
|
86
|
-
render
|
87
|
-
end
|
88
|
-
# view is inherited and located in cells/test/cells/my_mother_cell/bye.html.erb
|
89
|
-
def bye
|
90
|
-
@message = 'bye, mom!'
|
91
|
-
render
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
module ReallyModule
|
96
|
-
class NestedCell < ::Cell::Base
|
97
|
-
# view: cells/test/cells/really_module/nested_cell/happy_state.html.erb
|
98
|
-
def happy_state
|
99
|
-
render
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
class CellsTest < ActionController::TestCase
|
105
|
-
tests CellsTestController
|
106
|
-
|
107
|
-
### FIXME:
|
108
|
-
# Cell::View.warn_cache_misses = true
|
109
|
-
def setup
|
110
|
-
super
|
111
|
-
MyTestCell.default_template_format = :html
|
112
|
-
end
|
113
|
-
|
114
|
-
def test_class_aliasing
|
115
|
-
assert_equal Cell::Base, Cells::Cell::Base
|
116
|
-
end
|
117
|
-
|
118
|
-
def test_view_paths
|
119
|
-
assert_kind_of ActionView::PathSet, Cell::Base.view_paths, "must be a PathSet for proper template caching/reloading (see issue#2)"
|
120
|
-
end
|
121
|
-
|
122
|
-
def test_cells_view_paths=
|
123
|
-
swap( Cell::Base, :view_paths => ['you', 'are', 'here']) do
|
124
|
-
paths = Cell::Base.view_paths
|
125
|
-
assert_kind_of ActionView::PathSet, paths, "must not wipe out the PathSet"
|
126
|
-
assert_equal 3, Cell::Base.view_paths.size
|
127
|
-
assert_equal %w(you are here), Cell::Base.view_paths
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
def test_add_view_path
|
132
|
-
Cell::Base.add_view_path 'now'
|
133
|
-
assert_kind_of ActionView::PathSet, Cell::Base.view_paths
|
134
|
-
end
|
135
|
-
|
136
|
-
|
137
|
-
def test_controller_render_methods
|
138
|
-
get :call_render_cell_with_strings # render_cell("test", "state")
|
139
|
-
assert_response :success
|
140
|
-
assert_tag :tag => 'h9'
|
141
|
-
|
142
|
-
get :call_render_cell_with_syms
|
143
|
-
assert_response :success
|
144
|
-
assert_tag :tag => 'h9'
|
145
|
-
|
146
|
-
get :call_render_cell_with_state_view
|
147
|
-
assert_select '#view_with_instance_var'
|
148
|
-
end
|
149
|
-
|
150
|
-
# test simple rendering cycle -------------------------------------------------
|
151
|
-
|
152
|
-
def test_render_state_which_returns_a_string
|
153
|
-
cell = MyTestCell.new(@controller)
|
154
|
-
c = cell.render_state(:direct_output)
|
155
|
-
|
156
|
-
assert_kind_of String, c
|
157
|
-
assert_selekt c, 'h9'
|
158
|
-
|
159
|
-
#assert_raises (NoMethodError) { cell.render_state("non_existing_state") }
|
160
|
-
end
|
161
|
-
|
162
|
-
def test_render_state_with_view_file
|
163
|
-
cell = MyTestCell.new(@controller)
|
164
|
-
c = cell.render_state(:view_with_instance_var)
|
165
|
-
|
166
|
-
assert_selekt c, '#one', 'yeah'
|
167
|
-
assert_selekt c, '#two', 'wow'
|
168
|
-
end
|
169
|
-
|
170
|
-
def test_render_state_with_layout
|
171
|
-
end
|
172
|
-
|
173
|
-
def test_render_state_with_missing_view
|
174
|
-
cell = MyTestCell.new(@controller)
|
175
|
-
### TODO: production <-> development/test context.
|
176
|
-
|
177
|
-
assert_raises Cell::Base::MissingTemplate do
|
178
|
-
c = cell.render_state(:missing_view)
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
|
-
# test partial rendering ------------------------------------------------------
|
183
|
-
|
184
|
-
# ok
|
185
|
-
def test_not_existing_partial
|
186
|
-
cell = MyTestCell.new(@controller)
|
187
|
-
|
188
|
-
assert_raises ActionView::TemplateError do
|
189
|
-
cell.render_state(:view_containing_nonexistant_partial)
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
# ok
|
194
|
-
def test_broken_partial
|
195
|
-
cell = MyTestCell.new(@controller)
|
196
|
-
|
197
|
-
assert_raises ActionView::TemplateError do
|
198
|
-
cell.render_state(:view_containing_broken_partial)
|
199
|
-
end
|
200
|
-
end
|
201
|
-
|
202
|
-
# ok
|
203
|
-
def test_render_state_with_partial
|
204
|
-
cell = MyTestCell.new(@controller)
|
205
|
-
c = cell.render_state(:view_containing_partial)
|
206
|
-
|
207
|
-
assert_selekt c, '#partialContained > #partial'
|
208
|
-
end
|
209
|
-
|
210
|
-
def test_render_state_with_partial_without_cell_name
|
211
|
-
cell = MyTestCell.new(@controller)
|
212
|
-
c = cell.render_state(:view_containing_partial_without_cell_name)
|
213
|
-
|
214
|
-
assert_selekt c, '#partialContained > #partial'
|
215
|
-
end
|
216
|
-
|
217
|
-
# test advanced views (prototype_helper, ...) --------------------------------
|
218
|
-
### TODO: fix CellsTestController to allow rendering views with #link_to_function-
|
219
|
-
def dont_test_view_with_link_to_function
|
220
|
-
cell = MyTestCell.new(@controller)
|
221
|
-
c = cell.render_state(:state_with_link_to_function)
|
222
|
-
|
223
|
-
assert_selekt c, '#partialContained > #partial'
|
224
|
-
end
|
225
|
-
|
226
|
-
# test view inheritance ------------------------------------------------------
|
227
|
-
|
228
|
-
def test_possible_paths_for_state
|
229
|
-
cell = MyChildCell.new(@controller)
|
230
|
-
cell_paths = cell.possible_paths_for_state(:bye)
|
231
|
-
|
232
|
-
assert_equal 'my_child/bye', cell_paths.first
|
233
|
-
assert_equal 'my_mother/bye', cell_paths.last
|
234
|
-
end
|
235
|
-
|
236
|
-
def test_render_state_on_child_where_child_view_exists
|
237
|
-
cell = MyChildCell.new(@controller)
|
238
|
-
c = cell.render_state(:hello)
|
239
|
-
|
240
|
-
assert_selekt c, '#childHello', 'hello, mom!'
|
241
|
-
end
|
242
|
-
|
243
|
-
def test_render_state_on_child_where_view_is_inherited_from_mother
|
244
|
-
cell = MyChildCell.new(@controller)
|
245
|
-
# puts ' rendering cell!'
|
246
|
-
c = cell.render_state(:bye)
|
247
|
-
|
248
|
-
assert_selekt c, '#motherBye', 'bye, mom!'
|
249
|
-
end
|
250
|
-
|
251
|
-
# test Cell::View -------------------------------------------------------------
|
252
|
-
|
253
|
-
def test_find_family_view_for_state
|
254
|
-
cell = MyChildCell.new(@controller)
|
255
|
-
cells_path = File.join(File.dirname(__FILE__), 'app', 'cells')
|
256
|
-
cell_template = cell.find_family_view_for_state(:bye, ::Cell::View.new([cells_path], {}, @controller))
|
257
|
-
|
258
|
-
assert_equal 'my_mother/bye.html.erb', cell_template.path
|
259
|
-
end
|
260
|
-
|
261
|
-
### API test (unit) -----------------------------------------------------------
|
262
|
-
def test_cell_name
|
263
|
-
cell = CellsTestOneCell.new(@controller)
|
264
|
-
|
265
|
-
assert_equal 'cells_test_one', cell.cell_name
|
266
|
-
assert_equal 'cells_test_one', CellsTestOneCell.cell_name
|
267
|
-
end
|
268
|
-
|
269
|
-
def test_class_from_cell_name
|
270
|
-
assert_equal CellsTestOneCell, ::Cell::Base.class_from_cell_name('cells_test_one')
|
271
|
-
end
|
272
|
-
|
273
|
-
def test_default_template_format
|
274
|
-
# test getter
|
275
|
-
cell = MyTestCell.new(@controller)
|
276
|
-
|
277
|
-
assert_equal :html, ::Cell::Base.default_template_format
|
278
|
-
assert_equal :html, cell.class.default_template_format
|
279
|
-
|
280
|
-
# test setter
|
281
|
-
MyTestCell.default_template_format = :js
|
282
|
-
|
283
|
-
assert_equal :html, ::Cell::Base.default_template_format
|
284
|
-
assert_equal :js, cell.class.default_template_format
|
285
|
-
end
|
286
|
-
|
287
|
-
def test_defaultize_render_options_for
|
288
|
-
cell = MyTestCell.new(@controller)
|
289
|
-
|
290
|
-
assert_equal ({:template_format => :html, :view => :do_it}),
|
291
|
-
cell.defaultize_render_options_for({}, :do_it)
|
292
|
-
assert_equal ({:template_format => :html, :view => :do_it}),
|
293
|
-
cell.defaultize_render_options_for({}, :do_it)
|
294
|
-
assert_equal ({:template_format => :js, :view => :do_it}),
|
295
|
-
cell.defaultize_render_options_for({:template_format => :js}, :do_it)
|
296
|
-
assert_equal ({:template_format => :html, :layout => :metal, :view => :do_it}),
|
297
|
-
cell.defaultize_render_options_for({:layout => :metal}, :do_it)
|
298
|
-
assert_equal ({:template_format => :js, :layout => :metal, :view => :do_it}),
|
299
|
-
cell.defaultize_render_options_for({:layout => :metal, :template_format => :js}, :do_it)
|
300
|
-
end
|
301
|
-
|
302
|
-
def test_new_directory_hierarchy
|
303
|
-
cell = ReallyModule::NestedCell.new(@controller)
|
304
|
-
c = cell.render_state(:happy_state)
|
305
|
-
@response.body = c
|
306
|
-
|
307
|
-
assert_select '#happyStateView'
|
308
|
-
end
|
309
|
-
|
310
|
-
# Thanks to Fran Pena who made us aware of this bug and contributed a patch.
|
311
|
-
def test_i18n_support
|
312
|
-
swap I18n, :locale => :en do
|
313
|
-
cell = MyTestCell.new(@controller)
|
314
|
-
c = cell.render_state(:view_with_explicit_english_translation)
|
315
|
-
|
316
|
-
# the view "view_with_explicit_english_translation.en" exists, check if
|
317
|
-
# rails' i18n found it:
|
318
|
-
assert_selekt c, '#defaultTranslation', 0
|
319
|
-
assert_selekt c, '#explicitEnglishTranslation'
|
320
|
-
end
|
321
|
-
end
|
322
|
-
|
323
|
-
def test_modified_view_finding_for_testing
|
324
|
-
cell = MyTestCell.new(@controller)
|
325
|
-
c = cell.render_state(:view_in_local_test_views_dir)
|
326
|
-
|
327
|
-
assert_selekt c, '#localView'
|
328
|
-
end
|
329
|
-
|
330
|
-
def test_params_in_a_cell_state
|
331
|
-
@controller.params = {:my_param => 'value'}
|
332
|
-
cell = TestCell.new(@controller)
|
333
|
-
c = cell.render_state(:state_using_params)
|
334
|
-
|
335
|
-
assert_equal 'value', c
|
336
|
-
end
|
337
|
-
|
338
|
-
def test_log
|
339
|
-
assert_nothing_raised do
|
340
|
-
TestCell.new(@controller).log("everything is perfect!")
|
341
|
-
end
|
342
|
-
end
|
343
|
-
|
344
|
-
### functional tests: ---------------------------------------------------------
|
345
|
-
|
346
|
-
def test_link_to_in_view
|
347
|
-
get :render_state_with_link_to
|
348
|
-
|
349
|
-
assert_response :success
|
350
|
-
assert_select 'a', 'bla'
|
351
|
-
end
|
352
|
-
end
|
data/test/rails_test.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require File.join(File.dirname(__FILE__), 'test_helper')
|
3
|
-
|
4
|
-
class ACell < ::Cell::Base
|
5
|
-
def existing_view
|
6
|
-
@a = 'a'
|
7
|
-
render
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
class ActionControllerRenderTest < ActionController::TestCase
|
12
|
-
include Cells::Rails::ActionController
|
13
|
-
|
14
|
-
def test_render_cell
|
15
|
-
assert_equal 'A/existing_view/a', render_cell(:a, :existing_view)
|
16
|
-
end
|
17
|
-
|
18
|
-
# Backward-compability.
|
19
|
-
def test_render_cell_to_string
|
20
|
-
assert_equal render_cell_to_string(:a, :existing_view), render_cell(:a, :existing_view)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
class ActionControllerRenderTest < ActionController::TestCase
|
25
|
-
include Cells::Rails::ActionView
|
26
|
-
|
27
|
-
def test_render_cell
|
28
|
-
assert_equal 'A/existing_view/a', render_cell(:a, :existing_view)
|
29
|
-
end
|
30
|
-
|
31
|
-
# Backward-compability.
|
32
|
-
def test_render_cell_to_string
|
33
|
-
assert_equal render_cell_to_string(:a, :existing_view), render_cell(:a, :existing_view)
|
34
|
-
end
|
35
|
-
end
|
data/test/render_test.rb
DELETED
@@ -1,305 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require File.join(File.dirname(__FILE__), 'test_helper')
|
3
|
-
|
4
|
-
class ACell < ::Cell::Base
|
5
|
-
def existing_view
|
6
|
-
@a = 'a'
|
7
|
-
render
|
8
|
-
end
|
9
|
-
|
10
|
-
def not_existing_view
|
11
|
-
@a = 'a'
|
12
|
-
render
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
class BCell < ACell
|
17
|
-
def existing_view
|
18
|
-
@b = 'b'
|
19
|
-
render
|
20
|
-
end
|
21
|
-
|
22
|
-
def not_existing_view
|
23
|
-
@b = 'b'
|
24
|
-
render
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
class RenderTest < ActiveSupport::TestCase
|
29
|
-
include Cells::Rails::ActionView
|
30
|
-
|
31
|
-
def test_return_nil_with_locally_existing_view
|
32
|
-
assert_equal 'A/existing_view/a', render_cell(:a, :existing_view)
|
33
|
-
assert_equal 'B/existing_view/b', render_cell(:b, :existing_view)
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_return_nil_with_inherited_view
|
37
|
-
BCell.class_eval do
|
38
|
-
def inherited_view
|
39
|
-
@a = 'b'
|
40
|
-
render
|
41
|
-
end
|
42
|
-
end
|
43
|
-
assert_equal 'A/inherited_view/b', render_cell(:b, :inherited_view)
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_render_with_not_existing_view
|
47
|
-
assert_raises Cell::Base::MissingTemplate do
|
48
|
-
render_cell(:a, :not_existing_view)
|
49
|
-
end
|
50
|
-
|
51
|
-
e = assert_raise Cell::Base::MissingTemplate do
|
52
|
-
render_cell(:b, :not_existing_view)
|
53
|
-
end
|
54
|
-
|
55
|
-
assert_equal "Missing template a/not_existing_view.erb in view path app/cells:app/cells/layouts:/home/nick/projects/cells/test/app/cells:/home/nick/projects/cells/test/app/cells/layouts and possible paths [\"b/not_existing_view\", \"a/not_existing_view\"]", e.message
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_render_without_arguments_with_locally_existing_view
|
59
|
-
ACell.class_eval do
|
60
|
-
def existing_view
|
61
|
-
@a = 'a'
|
62
|
-
render
|
63
|
-
end
|
64
|
-
end
|
65
|
-
BCell.class_eval do
|
66
|
-
def existing_view
|
67
|
-
@b = 'b'
|
68
|
-
render
|
69
|
-
end
|
70
|
-
end
|
71
|
-
assert_equal 'A/existing_view/a', render_cell(:a, :existing_view)
|
72
|
-
assert_equal 'B/existing_view/b', render_cell(:b, :existing_view)
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_render_passing_view_with_locally_existing_view
|
76
|
-
ACell.class_eval do
|
77
|
-
def existing_view
|
78
|
-
@a = 'a'
|
79
|
-
render :view => 'existing_view'
|
80
|
-
end
|
81
|
-
end
|
82
|
-
BCell.class_eval do
|
83
|
-
def existing_view
|
84
|
-
@b = 'b'
|
85
|
-
render :view => 'existing_view'
|
86
|
-
end
|
87
|
-
end
|
88
|
-
assert_equal 'A/existing_view/a', render_cell(:a, :existing_view)
|
89
|
-
assert_equal 'B/existing_view/b', render_cell(:b, :existing_view)
|
90
|
-
end
|
91
|
-
|
92
|
-
def test_render_passing_view_and_layout_with_locally_existing_view
|
93
|
-
BCell.class_eval do
|
94
|
-
def existing_view
|
95
|
-
@b = 'b'
|
96
|
-
render :view => 'existing_view', :layout => 'metal'
|
97
|
-
end
|
98
|
-
end
|
99
|
-
assert_equal "Metal:B/existing_view/b", render_cell(:b, :existing_view)
|
100
|
-
end
|
101
|
-
|
102
|
-
def test_render_passing_view_and_template_format_with_locally_existing_view
|
103
|
-
BCell.class_eval do
|
104
|
-
def existing_view
|
105
|
-
@b = 'b'
|
106
|
-
render :view => 'existing_view', :template_format => :js
|
107
|
-
end
|
108
|
-
end
|
109
|
-
assert_equal 'B/existing_view/b/js', render_cell(:b, :existing_view)
|
110
|
-
end
|
111
|
-
|
112
|
-
def test_render_passing_view_and_template_format_and_layout_with_locally_existing_view
|
113
|
-
BCell.class_eval do
|
114
|
-
def existing_view
|
115
|
-
@b = 'b'
|
116
|
-
render :view => 'existing_view', :template_format => :js, :layout => 'metal'
|
117
|
-
end
|
118
|
-
end
|
119
|
-
assert_equal 'Metal:B/existing_view/b/js', render_cell(:b, :existing_view)
|
120
|
-
end
|
121
|
-
|
122
|
-
# test :layout
|
123
|
-
def test_render_passing_layout_located_in_cells_layout
|
124
|
-
ACell.class_eval do
|
125
|
-
def existing_view
|
126
|
-
@a = 'a'
|
127
|
-
render :layout => 'metal'
|
128
|
-
end
|
129
|
-
end
|
130
|
-
assert_equal 'Metal:A/existing_view/a', render_cell(:a, :existing_view)
|
131
|
-
end
|
132
|
-
|
133
|
-
### DISCUSS: currently undocumented feature:
|
134
|
-
def test_render_passing_layout_located_in_cells_b_layouts
|
135
|
-
BCell.class_eval do
|
136
|
-
def existing_view
|
137
|
-
@b = 'b'
|
138
|
-
render :layout => 'b/layouts/metal'
|
139
|
-
end
|
140
|
-
end
|
141
|
-
assert_equal 'B-Metal:B/existing_view/b', render_cell(:b, :existing_view)
|
142
|
-
end
|
143
|
-
|
144
|
-
# test with inherited view:
|
145
|
-
def test_render_without_arguments_with_inherited_view
|
146
|
-
BCell.class_eval do
|
147
|
-
def inherited_view
|
148
|
-
@a = 'b'
|
149
|
-
render
|
150
|
-
end
|
151
|
-
end
|
152
|
-
assert_equal 'A/inherited_view/b', render_cell(:b, :inherited_view)
|
153
|
-
end
|
154
|
-
|
155
|
-
def test_render_passing_view_with_inherited_view
|
156
|
-
BCell.class_eval do
|
157
|
-
def existing_view
|
158
|
-
@a = 'b'
|
159
|
-
render :view => 'inherited_view'
|
160
|
-
end
|
161
|
-
end
|
162
|
-
assert_equal 'A/inherited_view/b', render_cell(:b, :existing_view)
|
163
|
-
end
|
164
|
-
|
165
|
-
def test_render_passing_view_and_layout_with_inherited_view
|
166
|
-
BCell.class_eval do
|
167
|
-
def inherited_view
|
168
|
-
@a = 'b'
|
169
|
-
render :view => 'inherited_view', :layout => 'metal'
|
170
|
-
end
|
171
|
-
end
|
172
|
-
assert_equal 'Metal:A/inherited_view/b', render_cell(:b, :inherited_view)
|
173
|
-
end
|
174
|
-
|
175
|
-
def test_render_passing_view_and_template_format_with_inherited_view
|
176
|
-
BCell.class_eval do
|
177
|
-
def inherited_view
|
178
|
-
@a = 'b'
|
179
|
-
render :view => 'inherited_view', :template_format => :js
|
180
|
-
end
|
181
|
-
end
|
182
|
-
assert_equal 'A/inherited_view/b/js', render_cell(:b, :inherited_view)
|
183
|
-
end
|
184
|
-
|
185
|
-
def test_render_passing_view_and_template_format_and_layout_with_inherited_view
|
186
|
-
BCell.class_eval do
|
187
|
-
def existing_view
|
188
|
-
@a = 'b'
|
189
|
-
render :view => 'inherited_view', :template_format => :js, :layout => 'metal'
|
190
|
-
end
|
191
|
-
end
|
192
|
-
assert_equal 'Metal:A/inherited_view/b/js', render_cell(:b, :existing_view)
|
193
|
-
end
|
194
|
-
|
195
|
-
def test_render_passing_locals
|
196
|
-
ACell.class_eval do
|
197
|
-
def view_with_locals
|
198
|
-
@a = 'a'
|
199
|
-
render :locals => {:name => 'Nick'}
|
200
|
-
end
|
201
|
-
end
|
202
|
-
assert_equal 'A/view_with_locals/a/Nick', render_cell(:a, :view_with_locals)
|
203
|
-
end
|
204
|
-
|
205
|
-
def test_recursive_render_view_with_existing_view
|
206
|
-
ACell.class_eval do
|
207
|
-
def view_with_render_call
|
208
|
-
@a = 'a'
|
209
|
-
render
|
210
|
-
end
|
211
|
-
end
|
212
|
-
assert_equal 'A/view_with_render_call/a:A/existing_view/a', render_cell(:a, :view_with_render_call)
|
213
|
-
end
|
214
|
-
|
215
|
-
def test_recursive_render_view_with_inherited_view
|
216
|
-
BCell.class_eval do
|
217
|
-
def view_with_render_call
|
218
|
-
@a = 'b'
|
219
|
-
render
|
220
|
-
end
|
221
|
-
end
|
222
|
-
assert_equal 'B/view_with_render_call/b:A/inherited_view/b', render_cell(:b, :view_with_render_call)
|
223
|
-
end
|
224
|
-
|
225
|
-
def test_render_text
|
226
|
-
ACell.class_eval do
|
227
|
-
def existing_view
|
228
|
-
render :text => 'Cells kick ass!'
|
229
|
-
end
|
230
|
-
end
|
231
|
-
assert_equal 'Cells kick ass!', render_cell(:a, :existing_view)
|
232
|
-
end
|
233
|
-
|
234
|
-
def test_render_text_with_layout
|
235
|
-
ACell.class_eval do
|
236
|
-
def existing_view
|
237
|
-
render :text => 'Cells kick ass!', :layout => 'metal'
|
238
|
-
end
|
239
|
-
end
|
240
|
-
assert_equal 'Metal:Cells kick ass!', render_cell(:a, :existing_view)
|
241
|
-
end
|
242
|
-
|
243
|
-
def test_render_nothing
|
244
|
-
ACell.class_eval do
|
245
|
-
def existing_view
|
246
|
-
render :nothing => true
|
247
|
-
end
|
248
|
-
end
|
249
|
-
assert_equal '', render_cell(:a, :existing_view)
|
250
|
-
end
|
251
|
-
|
252
|
-
def test_render_inline
|
253
|
-
ACell.class_eval do
|
254
|
-
def existing_view
|
255
|
-
@a = 'a'
|
256
|
-
render :inline => 'A/existing_view/a:<%= a %>', :type => :erb, :locals => {:a => 'a'}
|
257
|
-
end
|
258
|
-
end
|
259
|
-
assert_equal 'A/existing_view/a:a', render_cell(:a, :existing_view)
|
260
|
-
end
|
261
|
-
|
262
|
-
def test_render_state
|
263
|
-
ACell.class_eval do
|
264
|
-
def existing_view
|
265
|
-
@a = 'a'
|
266
|
-
render :state => :another_state
|
267
|
-
end
|
268
|
-
def another_state
|
269
|
-
@b = 'b'
|
270
|
-
render
|
271
|
-
end
|
272
|
-
end
|
273
|
-
assert_equal "A/another_state/a,b", render_cell(:a, :existing_view)
|
274
|
-
end
|
275
|
-
|
276
|
-
def test_render_state_with_layout
|
277
|
-
ACell.class_eval do
|
278
|
-
def existing_view
|
279
|
-
@a = 'a'
|
280
|
-
render :state => :another_state, :layout => 'metal'
|
281
|
-
end
|
282
|
-
def another_state
|
283
|
-
@b = 'b'
|
284
|
-
render
|
285
|
-
end
|
286
|
-
end
|
287
|
-
assert_equal "Metal:A/another_state/a,b", render_cell(:a, :existing_view)
|
288
|
-
end
|
289
|
-
|
290
|
-
context "render :state within a view" do
|
291
|
-
should "return the state content" do
|
292
|
-
assert_equal( "\nDoo\n\nDoo\n\nDoo\n\nDoo\n",
|
293
|
-
bassist_mock do
|
294
|
-
def jam
|
295
|
-
@chords = %w(d a c g)
|
296
|
-
render
|
297
|
-
end
|
298
|
-
def play
|
299
|
-
render
|
300
|
-
end
|
301
|
-
end.render_state(:jam)
|
302
|
-
)
|
303
|
-
end
|
304
|
-
end
|
305
|
-
end
|