cells 3.3.10 → 3.4.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. data/CHANGES +0 -8
  2. data/Gemfile +4 -1
  3. data/README.rdoc +91 -107
  4. data/Rakefile +0 -4
  5. data/lib/cell.rb +5 -6
  6. data/lib/{cells/cell → cell}/active_helper.rb +1 -1
  7. data/lib/cell/base.rb +134 -0
  8. data/lib/cell/base_methods.rb +100 -0
  9. data/lib/cell/caching.rb +153 -0
  10. data/lib/cell/rails.rb +239 -0
  11. data/lib/cells.rb +25 -3
  12. data/lib/cells/assertions_helper.rb +1 -1
  13. data/lib/cells/helpers/capture_helper.rb +3 -3
  14. data/lib/cells/rails.rb +65 -4
  15. data/lib/cells/version.rb +3 -1
  16. data/rails_generators/cell/cell_generator.rb +47 -35
  17. data/rails_generators/cell/templates/cell.rb +1 -1
  18. data/rails_generators/cells_install/cells_install_generator.rb +5 -3
  19. data/rails_generators/erb/cell_generator.rb +20 -0
  20. data/rails_generators/{cell → erb}/templates/view.html.erb +0 -0
  21. data/test/active_helper_test.rb +1 -0
  22. data/test/app/cells/bad_guitarist_cell.rb +2 -0
  23. data/test/app/cells/bassist_cell.rb +1 -1
  24. data/test/app/controllers/musician_controller.rb +16 -0
  25. data/test/assertions_helper_test.rb +8 -18
  26. data/test/base_methods_test.rb +40 -0
  27. data/test/cell_generator_test.rb +33 -21
  28. data/test/helper_test.rb +31 -123
  29. data/test/rails/caching_test.rb +215 -0
  30. data/test/rails/capture_test.rb +52 -0
  31. data/test/rails/cells_test.rb +88 -0
  32. data/test/rails/integration_test.rb +37 -0
  33. data/test/rails/render_test.rb +140 -0
  34. data/test/rails/router_test.rb +74 -0
  35. data/test/rails/view_test.rb +24 -0
  36. data/test/test_helper.rb +30 -29
  37. metadata +68 -133
  38. data/.gitignore +0 -3
  39. data/about.yml +0 -7
  40. data/cells.gemspec +0 -26
  41. data/lib/cells/cell.rb +0 -16
  42. data/lib/cells/cell/base.rb +0 -470
  43. data/lib/cells/cell/caching.rb +0 -163
  44. data/lib/cells/cell/test_case.rb +0 -158
  45. data/lib/cells/cell/view.rb +0 -55
  46. data/lib/cells/rails/action_controller.rb +0 -37
  47. data/lib/cells/rails/action_view.rb +0 -37
  48. data/rails/init.rb +0 -44
  49. data/rails_generators/cells_install/templates/tasks.rake +0 -6
  50. data/test/app/cells/a/another_state.html.erb +0 -1
  51. data/test/app/cells/a/existing_view.html.erb +0 -1
  52. data/test/app/cells/a/inherited_view.html.erb +0 -1
  53. data/test/app/cells/a/inherited_view.js.erb +0 -1
  54. data/test/app/cells/a/view_with_locals.html.erb +0 -1
  55. data/test/app/cells/a/view_with_render_call.html.erb +0 -1
  56. data/test/app/cells/b/existing_view.html.erb +0 -1
  57. data/test/app/cells/b/existing_view.js.erb +0 -1
  58. data/test/app/cells/b/layouts/metal.html.erb +0 -1
  59. data/test/app/cells/b/view_with_render_call.html.erb +0 -1
  60. data/test/app/cells/bassist/jam.html.erb +0 -3
  61. data/test/app/cells/bassist/play.html.erb +0 -1
  62. data/test/app/cells/cells_test_one/renamed_instance_view.html.erb +0 -1
  63. data/test/app/cells/cells_test_one/super_state.html.erb +0 -1
  64. data/test/app/cells/cells_test_one_cell.rb +0 -20
  65. data/test/app/cells/cells_test_two_cell.rb +0 -4
  66. data/test/app/cells/helper_using/state_using_application_helper.html.erb +0 -3
  67. data/test/app/cells/helper_using/state_with_automatic_helper_invocation.html.erb +0 -3
  68. data/test/app/cells/helper_using/state_with_helper_invocation.html.erb +0 -3
  69. data/test/app/cells/helper_using/state_with_helper_method_invocation.html.erb +0 -3
  70. data/test/app/cells/layouts/metal.html.erb +0 -1
  71. data/test/app/cells/my_child/hello.html.erb +0 -1
  72. data/test/app/cells/my_mother/bye.html.erb +0 -1
  73. data/test/app/cells/my_mother/hello.html.erb +0 -1
  74. data/test/app/cells/my_test/_broken_partial.html.erb +0 -1
  75. data/test/app/cells/my_test/_partial.html.erb +0 -1
  76. data/test/app/cells/my_test/state_with_instance_var.html.erb +0 -1
  77. data/test/app/cells/my_test/state_with_link_to.html.erb +0 -3
  78. data/test/app/cells/my_test/state_with_not_included_helper_method.html.erb +0 -8
  79. data/test/app/cells/my_test/view_containing_broken_partial.html.erb +0 -3
  80. data/test/app/cells/my_test/view_containing_nonexistant_partial.html.erb +0 -3
  81. data/test/app/cells/my_test/view_containing_partial.html.erb +0 -3
  82. data/test/app/cells/my_test/view_containing_partial_without_cell_name.html.erb +0 -3
  83. data/test/app/cells/my_test/view_in_local_test_views_dir.html.erb +0 -1
  84. data/test/app/cells/my_test/view_with_explicit_english_translation.en.html.erb +0 -1
  85. data/test/app/cells/my_test/view_with_explicit_english_translation.html.erb +0 -1
  86. data/test/app/cells/my_test/view_with_instance_var.html.erb +0 -4
  87. data/test/app/cells/really_module/nested/happy_state.html.erb +0 -1
  88. data/test/app/cells/really_module/nested_cell.rb +0 -11
  89. data/test/app/cells/simple/two_templates_state.html.mytpl +0 -1
  90. data/test/app/cells/simple_cell.rb +0 -7
  91. data/test/app/cells/test/beep.html.erb +0 -1
  92. data/test/app/cells/test/state_invoking_capture.html.erb +0 -7
  93. data/test/app/cells/test/state_invoking_content_for.html.erb +0 -7
  94. data/test/app/cells/test/state_invoking_content_for_twice.html.erb +0 -9
  95. data/test/app/cells/test/state_with_not_included_helper_method.html.erb +0 -8
  96. data/test/app/cells/two_helpers_including/state_using_another_helper.html.erb +0 -3
  97. data/test/bugs_test.rb +0 -23
  98. data/test/caching_test.rb +0 -270
  99. data/test/capture_helper_test.rb +0 -59
  100. data/test/cells_test.rb +0 -352
  101. data/test/rails_test.rb +0 -35
  102. data/test/render_test.rb +0 -305
  103. data/test/test_case_test.rb +0 -106
@@ -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
@@ -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
@@ -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
@@ -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