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.
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