actionpack 2.1.2 → 2.2.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of actionpack might be problematic. Click here for more details.

Files changed (200) hide show
  1. data/CHANGELOG +223 -7
  2. data/README +6 -12
  3. data/Rakefile +11 -11
  4. data/lib/action_controller.rb +9 -9
  5. data/lib/action_controller/assertions/response_assertions.rb +29 -78
  6. data/lib/action_controller/assertions/routing_assertions.rb +33 -33
  7. data/lib/action_controller/assertions/selector_assertions.rb +9 -5
  8. data/lib/action_controller/base.rb +227 -161
  9. data/lib/action_controller/benchmarking.rb +37 -24
  10. data/lib/action_controller/caching/actions.rb +53 -21
  11. data/lib/action_controller/caching/fragments.rb +10 -36
  12. data/lib/action_controller/caching/sweeping.rb +3 -3
  13. data/lib/action_controller/cgi_ext/session.rb +2 -22
  14. data/lib/action_controller/cgi_process.rb +8 -46
  15. data/lib/action_controller/components.rb +4 -1
  16. data/lib/action_controller/cookies.rb +10 -0
  17. data/lib/action_controller/dispatcher.rb +49 -15
  18. data/lib/action_controller/filters.rb +48 -10
  19. data/lib/action_controller/headers.rb +16 -14
  20. data/lib/action_controller/helpers.rb +2 -2
  21. data/lib/action_controller/http_authentication.rb +1 -1
  22. data/lib/action_controller/integration.rb +57 -60
  23. data/lib/action_controller/layout.rb +27 -53
  24. data/lib/action_controller/mime_responds.rb +5 -1
  25. data/lib/action_controller/mime_type.rb +64 -42
  26. data/lib/action_controller/mime_types.rb +2 -1
  27. data/lib/action_controller/performance_test.rb +16 -0
  28. data/lib/action_controller/polymorphic_routes.rb +16 -9
  29. data/lib/action_controller/rack_process.rb +303 -0
  30. data/lib/action_controller/request.rb +205 -97
  31. data/lib/action_controller/request_forgery_protection.rb +2 -2
  32. data/lib/action_controller/request_profiler.rb +0 -0
  33. data/lib/action_controller/rescue.rb +20 -115
  34. data/lib/action_controller/resources.rb +186 -83
  35. data/lib/action_controller/response.rb +140 -26
  36. data/lib/action_controller/routing.rb +28 -30
  37. data/lib/action_controller/routing/builder.rb +45 -54
  38. data/lib/action_controller/routing/optimisations.rb +31 -21
  39. data/lib/action_controller/routing/recognition_optimisation.rb +33 -27
  40. data/lib/action_controller/routing/route.rb +162 -147
  41. data/lib/action_controller/routing/route_set.rb +8 -7
  42. data/lib/action_controller/routing/routing_ext.rb +4 -1
  43. data/lib/action_controller/routing/segments.rb +50 -21
  44. data/lib/action_controller/session/cookie_store.rb +3 -2
  45. data/lib/action_controller/session/drb_server.rb +7 -7
  46. data/lib/action_controller/session_management.rb +6 -2
  47. data/lib/action_controller/streaming.rb +15 -8
  48. data/lib/action_controller/templates/rescues/diagnostics.erb +2 -2
  49. data/lib/action_controller/templates/rescues/template_error.erb +2 -2
  50. data/lib/action_controller/test_case.rb +66 -2
  51. data/lib/action_controller/test_process.rb +71 -66
  52. data/lib/action_controller/translation.rb +13 -0
  53. data/lib/action_controller/url_rewriter.rb +90 -13
  54. data/lib/action_controller/vendor/html-scanner/html/node.rb +9 -2
  55. data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +1 -1
  56. data/lib/action_controller/vendor/html-scanner/html/selector.rb +2 -2
  57. data/lib/action_controller/verification.rb +2 -2
  58. data/lib/action_pack/version.rb +1 -1
  59. data/lib/action_view.rb +19 -11
  60. data/lib/action_view/base.rb +184 -150
  61. data/lib/action_view/helpers.rb +38 -0
  62. data/lib/action_view/helpers/active_record_helper.rb +56 -27
  63. data/lib/action_view/helpers/asset_tag_helper.rb +356 -153
  64. data/lib/action_view/helpers/atom_feed_helper.rb +74 -19
  65. data/lib/action_view/helpers/benchmark_helper.rb +3 -3
  66. data/lib/action_view/helpers/cache_helper.rb +1 -2
  67. data/lib/action_view/helpers/capture_helper.rb +19 -44
  68. data/lib/action_view/helpers/date_helper.rb +486 -296
  69. data/lib/action_view/helpers/debug_helper.rb +20 -13
  70. data/lib/action_view/helpers/form_helper.rb +71 -30
  71. data/lib/action_view/helpers/form_options_helper.rb +15 -85
  72. data/lib/action_view/helpers/form_tag_helper.rb +61 -38
  73. data/lib/action_view/helpers/javascript_helper.rb +80 -89
  74. data/lib/action_view/helpers/number_helper.rb +179 -74
  75. data/lib/action_view/helpers/prototype_helper.rb +216 -201
  76. data/lib/action_view/helpers/record_tag_helper.rb +4 -5
  77. data/lib/action_view/helpers/sanitize_helper.rb +65 -33
  78. data/lib/action_view/helpers/scriptaculous_helper.rb +2 -2
  79. data/lib/action_view/helpers/tag_helper.rb +39 -22
  80. data/lib/action_view/helpers/text_helper.rb +212 -118
  81. data/lib/action_view/helpers/translation_helper.rb +21 -0
  82. data/lib/action_view/helpers/url_helper.rb +100 -58
  83. data/lib/action_view/inline_template.rb +13 -14
  84. data/lib/action_view/locale/en.yml +91 -0
  85. data/lib/action_view/partials.rb +100 -55
  86. data/lib/action_view/paths.rb +125 -0
  87. data/lib/action_view/renderable.rb +102 -0
  88. data/lib/action_view/renderable_partial.rb +48 -0
  89. data/lib/action_view/template.rb +90 -101
  90. data/lib/action_view/template_error.rb +11 -21
  91. data/lib/action_view/template_handler.rb +8 -28
  92. data/lib/action_view/template_handlers.rb +45 -0
  93. data/lib/action_view/template_handlers/builder.rb +5 -15
  94. data/lib/action_view/template_handlers/erb.rb +9 -6
  95. data/lib/action_view/template_handlers/rjs.rb +2 -17
  96. data/lib/action_view/test_case.rb +7 -4
  97. data/test/abstract_unit.rb +4 -1
  98. data/test/active_record_unit.rb +28 -30
  99. data/test/activerecord/render_partial_with_record_identification_test.rb +25 -12
  100. data/test/controller/action_pack_assertions_test.rb +8 -37
  101. data/test/controller/addresses_render_test.rb +0 -3
  102. data/test/controller/assert_select_test.rb +51 -24
  103. data/test/controller/base_test.rb +4 -4
  104. data/test/controller/caching_test.rb +136 -66
  105. data/test/controller/capture_test.rb +1 -21
  106. data/test/controller/cgi_test.rb +157 -10
  107. data/test/controller/components_test.rb +41 -25
  108. data/test/controller/content_type_test.rb +49 -17
  109. data/test/controller/cookie_test.rb +1 -1
  110. data/test/controller/deprecation/deprecated_base_methods_test.rb +0 -3
  111. data/test/controller/dispatcher_test.rb +9 -1
  112. data/test/controller/filter_params_test.rb +2 -2
  113. data/test/controller/filters_test.rb +13 -13
  114. data/test/controller/html-scanner/cdata_node_test.rb +15 -0
  115. data/test/controller/html-scanner/node_test.rb +21 -0
  116. data/test/controller/html-scanner/sanitizer_test.rb +14 -0
  117. data/test/controller/integration_test.rb +167 -6
  118. data/test/controller/layout_test.rb +11 -68
  119. data/test/controller/logging_test.rb +46 -0
  120. data/test/controller/mime_responds_test.rb +61 -59
  121. data/test/controller/mime_type_test.rb +6 -6
  122. data/test/controller/polymorphic_routes_test.rb +37 -2
  123. data/test/controller/rack_test.rb +323 -0
  124. data/test/controller/redirect_test.rb +72 -71
  125. data/test/controller/render_test.rb +1120 -108
  126. data/test/controller/request_forgery_protection_test.rb +66 -52
  127. data/test/controller/request_test.rb +103 -146
  128. data/test/controller/rescue_test.rb +20 -24
  129. data/test/controller/resources_test.rb +408 -25
  130. data/test/controller/routing_test.rb +1774 -1774
  131. data/test/controller/send_file_test.rb +0 -4
  132. data/test/controller/session/cookie_store_test.rb +53 -1
  133. data/test/controller/test_test.rb +15 -37
  134. data/test/controller/translation_test.rb +26 -0
  135. data/test/controller/url_rewriter_test.rb +27 -28
  136. data/test/controller/view_paths_test.rb +48 -47
  137. data/test/fixtures/_top_level_partial.html.erb +1 -0
  138. data/test/fixtures/_top_level_partial_only.erb +1 -0
  139. data/test/fixtures/developers/_developer.erb +1 -0
  140. data/test/fixtures/fun/games/_game.erb +1 -0
  141. data/test/fixtures/fun/serious/games/_game.erb +1 -0
  142. data/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +3 -0
  143. data/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +6 -0
  144. data/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +5 -0
  145. data/test/fixtures/functional_caching/inline_fragment_cached.html.erb +2 -0
  146. data/test/fixtures/layouts/_column.html.erb +2 -0
  147. data/test/fixtures/projects/_project.erb +1 -0
  148. data/test/fixtures/public/javascripts/subdir/subdir.js +1 -0
  149. data/test/fixtures/public/stylesheets/subdir/subdir.css +1 -0
  150. data/test/fixtures/replies/_reply.erb +1 -0
  151. data/test/fixtures/test/_counter.html.erb +1 -0
  152. data/test/fixtures/test/_customer.erb +1 -1
  153. data/test/fixtures/test/_customer_with_var.erb +1 -0
  154. data/test/fixtures/test/_layout_for_block_with_args.html.erb +3 -0
  155. data/test/fixtures/test/_local_inspector.html.erb +1 -0
  156. data/test/fixtures/test/_partial_with_only_html_version.html.erb +1 -0
  157. data/test/fixtures/test/hello.builder +1 -1
  158. data/test/fixtures/test/hyphen-ated.erb +1 -0
  159. data/test/fixtures/test/implicit_content_type.atom.builder +2 -0
  160. data/test/fixtures/test/nested_layout.erb +3 -0
  161. data/test/fixtures/test/non_erb_block_content_for.builder +1 -1
  162. data/test/fixtures/test/sub_template_raise.html.erb +1 -0
  163. data/test/fixtures/test/template.erb +1 -0
  164. data/test/fixtures/test/using_layout_around_block_with_args.html.erb +1 -0
  165. data/test/template/active_record_helper_i18n_test.rb +46 -0
  166. data/test/template/active_record_helper_test.rb +24 -24
  167. data/test/template/asset_tag_helper_test.rb +161 -29
  168. data/test/template/atom_feed_helper_test.rb +114 -5
  169. data/test/template/compiled_templates_test.rb +59 -0
  170. data/test/template/date_helper_i18n_test.rb +113 -0
  171. data/test/template/date_helper_test.rb +403 -109
  172. data/test/template/form_helper_test.rb +213 -154
  173. data/test/template/form_options_helper_test.rb +249 -897
  174. data/test/template/form_tag_helper_test.rb +80 -32
  175. data/test/template/javascript_helper_test.rb +17 -18
  176. data/test/template/number_helper_i18n_test.rb +54 -0
  177. data/test/template/number_helper_test.rb +43 -13
  178. data/test/template/prototype_helper_test.rb +101 -84
  179. data/test/template/record_tag_helper_test.rb +24 -20
  180. data/test/template/render_test.rb +193 -0
  181. data/test/template/sanitize_helper_test.rb +3 -3
  182. data/test/template/tag_helper_test.rb +34 -14
  183. data/test/template/text_helper_test.rb +83 -9
  184. data/test/template/translation_helper_test.rb +28 -0
  185. data/test/template/url_helper_test.rb +55 -18
  186. metadata +57 -18
  187. data/lib/action_view/helpers/javascripts/controls.js +0 -963
  188. data/lib/action_view/helpers/javascripts/dragdrop.js +0 -972
  189. data/lib/action_view/helpers/javascripts/effects.js +0 -1120
  190. data/lib/action_view/helpers/javascripts/prototype.js +0 -4225
  191. data/lib/action_view/partial_template.rb +0 -70
  192. data/lib/action_view/template_finder.rb +0 -177
  193. data/lib/action_view/template_handlers/compilable.rb +0 -128
  194. data/test/controller/custom_handler_test.rb +0 -45
  195. data/test/controller/new_render_test.rb +0 -945
  196. data/test/fixtures/test/block_content_for.erb +0 -2
  197. data/test/fixtures/test/erb_content_for.erb +0 -2
  198. data/test/template/deprecated_erb_variable_test.rb +0 -9
  199. data/test/template/template_finder_test.rb +0 -73
  200. data/test/template/template_object_test.rb +0 -95
@@ -6,7 +6,7 @@ silence_warnings do
6
6
  alias_method :title_before_type_cast, :title unless respond_to?(:title_before_type_cast)
7
7
  alias_method :body_before_type_cast, :body unless respond_to?(:body_before_type_cast)
8
8
  alias_method :author_name_before_type_cast, :author_name unless respond_to?(:author_name_before_type_cast)
9
- alias_method :secret?, :secret
9
+ alias_method :secret?, :secret
10
10
 
11
11
  def new_record=(boolean)
12
12
  @new_record = boolean
@@ -22,6 +22,7 @@ silence_warnings do
22
22
  attr_reader :post_id
23
23
  def save; @id = 1; @post_id = 1 end
24
24
  def new_record?; @id.nil? end
25
+ def to_param; @id; end
25
26
  def name
26
27
  @id.nil? ? 'new comment' : "comment ##{@id}"
27
28
  end
@@ -30,7 +31,6 @@ end
30
31
 
31
32
  class Comment::Nested < Comment; end
32
33
 
33
-
34
34
  class FormHelperTest < ActionView::TestCase
35
35
  tests ActionView::Helpers::FormHelper
36
36
 
@@ -337,14 +337,12 @@ class FormHelperTest < ActionView::TestCase
337
337
  end
338
338
 
339
339
  def test_form_for
340
- _erbout = ''
341
-
342
340
  form_for(:post, @post, :html => { :id => 'create-post' }) do |f|
343
- _erbout.concat f.label(:title)
344
- _erbout.concat f.text_field(:title)
345
- _erbout.concat f.text_area(:body)
346
- _erbout.concat f.check_box(:secret)
347
- _erbout.concat f.submit('Create post')
341
+ concat f.label(:title)
342
+ concat f.text_field(:title)
343
+ concat f.text_area(:body)
344
+ concat f.check_box(:secret)
345
+ concat f.submit('Create post')
348
346
  end
349
347
 
350
348
  expected =
@@ -357,16 +355,14 @@ class FormHelperTest < ActionView::TestCase
357
355
  "<input name='commit' id='post_submit' type='submit' value='Create post' />" +
358
356
  "</form>"
359
357
 
360
- assert_dom_equal expected, _erbout
358
+ assert_dom_equal expected, output_buffer
361
359
  end
362
360
 
363
361
  def test_form_for_with_method
364
- _erbout = ''
365
-
366
362
  form_for(:post, @post, :html => { :id => 'create-post', :method => :put }) do |f|
367
- _erbout.concat f.text_field(:title)
368
- _erbout.concat f.text_area(:body)
369
- _erbout.concat f.check_box(:secret)
363
+ concat f.text_field(:title)
364
+ concat f.text_area(:body)
365
+ concat f.check_box(:secret)
370
366
  end
371
367
 
372
368
  expected =
@@ -378,16 +374,14 @@ class FormHelperTest < ActionView::TestCase
378
374
  "<input name='post[secret]' type='hidden' value='0' />" +
379
375
  "</form>"
380
376
 
381
- assert_dom_equal expected, _erbout
377
+ assert_dom_equal expected, output_buffer
382
378
  end
383
379
 
384
380
  def test_form_for_without_object
385
- _erbout = ''
386
-
387
381
  form_for(:post, :html => { :id => 'create-post' }) do |f|
388
- _erbout.concat f.text_field(:title)
389
- _erbout.concat f.text_area(:body)
390
- _erbout.concat f.check_box(:secret)
382
+ concat f.text_field(:title)
383
+ concat f.text_area(:body)
384
+ concat f.check_box(:secret)
391
385
  end
392
386
 
393
387
  expected =
@@ -398,17 +392,15 @@ class FormHelperTest < ActionView::TestCase
398
392
  "<input name='post[secret]' type='hidden' value='0' />" +
399
393
  "</form>"
400
394
 
401
- assert_dom_equal expected, _erbout
395
+ assert_dom_equal expected, output_buffer
402
396
  end
403
397
 
404
398
  def test_form_for_with_index
405
- _erbout = ''
406
-
407
399
  form_for("post[]", @post) do |f|
408
- _erbout.concat f.label(:title)
409
- _erbout.concat f.text_field(:title)
410
- _erbout.concat f.text_area(:body)
411
- _erbout.concat f.check_box(:secret)
400
+ concat f.label(:title)
401
+ concat f.text_field(:title)
402
+ concat f.text_area(:body)
403
+ concat f.check_box(:secret)
412
404
  end
413
405
 
414
406
  expected =
@@ -420,16 +412,14 @@ class FormHelperTest < ActionView::TestCase
420
412
  "<input name='post[123][secret]' type='hidden' value='0' />" +
421
413
  "</form>"
422
414
 
423
- assert_dom_equal expected, _erbout
415
+ assert_dom_equal expected, output_buffer
424
416
  end
425
417
 
426
418
  def test_form_for_with_nil_index_option_override
427
- _erbout = ''
428
-
429
419
  form_for("post[]", @post, :index => nil) do |f|
430
- _erbout.concat f.text_field(:title)
431
- _erbout.concat f.text_area(:body)
432
- _erbout.concat f.check_box(:secret)
420
+ concat f.text_field(:title)
421
+ concat f.text_area(:body)
422
+ concat f.check_box(:secret)
433
423
  end
434
424
 
435
425
  expected =
@@ -440,14 +430,13 @@ class FormHelperTest < ActionView::TestCase
440
430
  "<input name='post[][secret]' type='hidden' value='0' />" +
441
431
  "</form>"
442
432
 
443
- assert_dom_equal expected, _erbout
433
+ assert_dom_equal expected, output_buffer
444
434
  end
445
435
 
446
436
  def test_nested_fields_for
447
- _erbout = ''
448
437
  form_for(:post, @post) do |f|
449
438
  f.fields_for(:comment, @post) do |c|
450
- _erbout.concat c.text_field(:title)
439
+ concat c.text_field(:title)
451
440
  end
452
441
  end
453
442
 
@@ -455,16 +444,125 @@ class FormHelperTest < ActionView::TestCase
455
444
  "<input name='post[comment][title]' size='30' type='text' id='post_comment_title' value='Hello World' />" +
456
445
  "</form>"
457
446
 
458
- assert_dom_equal expected, _erbout
447
+ assert_dom_equal expected, output_buffer
459
448
  end
460
449
 
461
- def test_fields_for
462
- _erbout = ''
450
+ def test_nested_fields_for_with_nested_collections
451
+ form_for('post[]', @post) do |f|
452
+ concat f.text_field(:title)
453
+ f.fields_for('comment[]', @comment) do |c|
454
+ concat c.text_field(:name)
455
+ end
456
+ end
457
+
458
+ expected = "<form action='http://www.example.com' method='post'>" +
459
+ "<input name='post[123][title]' size='30' type='text' id='post_123_title' value='Hello World' />" +
460
+ "<input name='post[123][comment][][name]' size='30' type='text' id='post_123_comment__name' value='new comment' />" +
461
+ "</form>"
462
+
463
+ assert_dom_equal expected, output_buffer
464
+ end
465
+
466
+ def test_nested_fields_for_with_index
467
+ form_for('post', @post, :index => 1) do |c|
468
+ concat c.text_field(:title)
469
+ c.fields_for('comment', @comment, :index => 1) do |r|
470
+ concat r.text_field(:name)
471
+ end
472
+ end
473
+
474
+ expected = "<form action='http://www.example.com' method='post'>" +
475
+ "<input name='post[1][title]' size='30' type='text' id='post_1_title' value='Hello World' />" +
476
+ "<input name='post[1][comment][1][name]' size='30' type='text' id='post_1_comment_1_name' value='new comment' />" +
477
+ "</form>"
478
+
479
+ assert_dom_equal expected, output_buffer
480
+ end
481
+
482
+ def test_nested_fields_for_with_index
483
+ form_for(:post, @post, :index => 1) do |f|
484
+ f.fields_for(:comment, @post) do |c|
485
+ concat c.text_field(:title)
486
+ end
487
+ end
488
+
489
+ expected = "<form action='http://www.example.com' method='post'>" +
490
+ "<input name='post[1][comment][title]' size='30' type='text' id='post_1_comment_title' value='Hello World' />" +
491
+ "</form>"
463
492
 
493
+ assert_dom_equal expected, output_buffer
494
+ end
495
+
496
+ def test_nested_fields_for_with_index_on_both
497
+ form_for(:post, @post, :index => 1) do |f|
498
+ f.fields_for(:comment, @post, :index => 5) do |c|
499
+ concat c.text_field(:title)
500
+ end
501
+ end
502
+
503
+ expected = "<form action='http://www.example.com' method='post'>" +
504
+ "<input name='post[1][comment][5][title]' size='30' type='text' id='post_1_comment_5_title' value='Hello World' />" +
505
+ "</form>"
506
+
507
+ assert_dom_equal expected, output_buffer
508
+ end
509
+
510
+ def test_nested_fields_for_with_auto_index
511
+ form_for("post[]", @post) do |f|
512
+ f.fields_for(:comment, @post) do |c|
513
+ concat c.text_field(:title)
514
+ end
515
+ end
516
+
517
+ expected = "<form action='http://www.example.com' method='post'>" +
518
+ "<input name='post[123][comment][title]' size='30' type='text' id='post_123_comment_title' value='Hello World' />" +
519
+ "</form>"
520
+
521
+ assert_dom_equal expected, output_buffer
522
+ end
523
+
524
+ def test_nested_fields_for_with_auto_index_on_both
525
+ form_for("post[]", @post) do |f|
526
+ f.fields_for("comment[]", @post) do |c|
527
+ concat c.text_field(:title)
528
+ end
529
+ end
530
+
531
+ expected = "<form action='http://www.example.com' method='post'>" +
532
+ "<input name='post[123][comment][123][title]' size='30' type='text' id='post_123_comment_123_title' value='Hello World' />" +
533
+ "</form>"
534
+
535
+ assert_dom_equal expected, output_buffer
536
+ end
537
+
538
+ def test_nested_fields_for_with_index_and_auto_index
539
+ form_for("post[]", @post) do |f|
540
+ f.fields_for(:comment, @post, :index => 5) do |c|
541
+ concat c.text_field(:title)
542
+ end
543
+ end
544
+
545
+ form_for(:post, @post, :index => 1) do |f|
546
+ f.fields_for("comment[]", @post) do |c|
547
+ concat c.text_field(:title)
548
+ end
549
+ end
550
+
551
+ expected = "<form action='http://www.example.com' method='post'>" +
552
+ "<input name='post[123][comment][5][title]' size='30' type='text' id='post_123_comment_5_title' value='Hello World' />" +
553
+ "</form>" +
554
+ "<form action='http://www.example.com' method='post'>" +
555
+ "<input name='post[1][comment][123][title]' size='30' type='text' id='post_1_comment_123_title' value='Hello World' />" +
556
+ "</form>"
557
+
558
+ assert_dom_equal expected, output_buffer
559
+ end
560
+
561
+ def test_fields_for
464
562
  fields_for(:post, @post) do |f|
465
- _erbout.concat f.text_field(:title)
466
- _erbout.concat f.text_area(:body)
467
- _erbout.concat f.check_box(:secret)
563
+ concat f.text_field(:title)
564
+ concat f.text_area(:body)
565
+ concat f.check_box(:secret)
468
566
  end
469
567
 
470
568
  expected =
@@ -473,16 +571,14 @@ class FormHelperTest < ActionView::TestCase
473
571
  "<input name='post[secret]' checked='checked' type='checkbox' id='post_secret' value='1' />" +
474
572
  "<input name='post[secret]' type='hidden' value='0' />"
475
573
 
476
- assert_dom_equal expected, _erbout
574
+ assert_dom_equal expected, output_buffer
477
575
  end
478
576
 
479
577
  def test_fields_for_with_index
480
- _erbout = ''
481
-
482
578
  fields_for("post[]", @post) do |f|
483
- _erbout.concat f.text_field(:title)
484
- _erbout.concat f.text_area(:body)
485
- _erbout.concat f.check_box(:secret)
579
+ concat f.text_field(:title)
580
+ concat f.text_area(:body)
581
+ concat f.check_box(:secret)
486
582
  end
487
583
 
488
584
  expected =
@@ -491,16 +587,14 @@ class FormHelperTest < ActionView::TestCase
491
587
  "<input name='post[123][secret]' checked='checked' type='checkbox' id='post_123_secret' value='1' />" +
492
588
  "<input name='post[123][secret]' type='hidden' value='0' />"
493
589
 
494
- assert_dom_equal expected, _erbout
590
+ assert_dom_equal expected, output_buffer
495
591
  end
496
592
 
497
593
  def test_fields_for_with_nil_index_option_override
498
- _erbout = ''
499
-
500
594
  fields_for("post[]", @post, :index => nil) do |f|
501
- _erbout.concat f.text_field(:title)
502
- _erbout.concat f.text_area(:body)
503
- _erbout.concat f.check_box(:secret)
595
+ concat f.text_field(:title)
596
+ concat f.text_area(:body)
597
+ concat f.check_box(:secret)
504
598
  end
505
599
 
506
600
  expected =
@@ -509,16 +603,14 @@ class FormHelperTest < ActionView::TestCase
509
603
  "<input name='post[][secret]' checked='checked' type='checkbox' id='post__secret' value='1' />" +
510
604
  "<input name='post[][secret]' type='hidden' value='0' />"
511
605
 
512
- assert_dom_equal expected, _erbout
606
+ assert_dom_equal expected, output_buffer
513
607
  end
514
608
 
515
609
  def test_fields_for_with_index_option_override
516
- _erbout = ''
517
-
518
610
  fields_for("post[]", @post, :index => "abc") do |f|
519
- _erbout.concat f.text_field(:title)
520
- _erbout.concat f.text_area(:body)
521
- _erbout.concat f.check_box(:secret)
611
+ concat f.text_field(:title)
612
+ concat f.text_area(:body)
613
+ concat f.check_box(:secret)
522
614
  end
523
615
 
524
616
  expected =
@@ -527,15 +619,14 @@ class FormHelperTest < ActionView::TestCase
527
619
  "<input name='post[abc][secret]' checked='checked' type='checkbox' id='post_abc_secret' value='1' />" +
528
620
  "<input name='post[abc][secret]' type='hidden' value='0' />"
529
621
 
530
- assert_dom_equal expected, _erbout
622
+ assert_dom_equal expected, output_buffer
531
623
  end
532
624
 
533
625
  def test_fields_for_without_object
534
- _erbout = ''
535
626
  fields_for(:post) do |f|
536
- _erbout.concat f.text_field(:title)
537
- _erbout.concat f.text_area(:body)
538
- _erbout.concat f.check_box(:secret)
627
+ concat f.text_field(:title)
628
+ concat f.text_area(:body)
629
+ concat f.check_box(:secret)
539
630
  end
540
631
 
541
632
  expected =
@@ -544,15 +635,14 @@ class FormHelperTest < ActionView::TestCase
544
635
  "<input name='post[secret]' checked='checked' type='checkbox' id='post_secret' value='1' />" +
545
636
  "<input name='post[secret]' type='hidden' value='0' />"
546
637
 
547
- assert_dom_equal expected, _erbout
638
+ assert_dom_equal expected, output_buffer
548
639
  end
549
640
 
550
641
  def test_fields_for_with_only_object
551
- _erbout = ''
552
642
  fields_for(@post) do |f|
553
- _erbout.concat f.text_field(:title)
554
- _erbout.concat f.text_area(:body)
555
- _erbout.concat f.check_box(:secret)
643
+ concat f.text_field(:title)
644
+ concat f.text_area(:body)
645
+ concat f.check_box(:secret)
556
646
  end
557
647
 
558
648
  expected =
@@ -561,31 +651,29 @@ class FormHelperTest < ActionView::TestCase
561
651
  "<input name='post[secret]' checked='checked' type='checkbox' id='post_secret' value='1' />" +
562
652
  "<input name='post[secret]' type='hidden' value='0' />"
563
653
 
564
- assert_dom_equal expected, _erbout
654
+ assert_dom_equal expected, output_buffer
565
655
  end
566
656
 
567
657
  def test_fields_for_object_with_bracketed_name
568
- _erbout = ''
569
658
  fields_for("author[post]", @post) do |f|
570
- _erbout.concat f.label(:title)
571
- _erbout.concat f.text_field(:title)
659
+ concat f.label(:title)
660
+ concat f.text_field(:title)
572
661
  end
573
662
 
574
663
  assert_dom_equal "<label for=\"author_post_title\">Title</label>" +
575
664
  "<input name='author[post][title]' size='30' type='text' id='author_post_title' value='Hello World' />",
576
- _erbout
665
+ output_buffer
577
666
  end
578
667
 
579
668
  def test_fields_for_object_with_bracketed_name_and_index
580
- _erbout = ''
581
669
  fields_for("author[post]", @post, :index => 1) do |f|
582
- _erbout.concat f.label(:title)
583
- _erbout.concat f.text_field(:title)
670
+ concat f.label(:title)
671
+ concat f.text_field(:title)
584
672
  end
585
673
 
586
674
  assert_dom_equal "<label for=\"author_post_1_title\">Title</label>" +
587
675
  "<input name='author[post][1][title]' size='30' type='text' id='author_post_1_title' value='Hello World' />",
588
- _erbout
676
+ output_buffer
589
677
  end
590
678
 
591
679
  def test_form_builder_does_not_have_form_for_method
@@ -593,14 +681,12 @@ class FormHelperTest < ActionView::TestCase
593
681
  end
594
682
 
595
683
  def test_form_for_and_fields_for
596
- _erbout = ''
597
-
598
684
  form_for(:post, @post, :html => { :id => 'create-post' }) do |post_form|
599
- _erbout.concat post_form.text_field(:title)
600
- _erbout.concat post_form.text_area(:body)
685
+ concat post_form.text_field(:title)
686
+ concat post_form.text_area(:body)
601
687
 
602
688
  fields_for(:parent_post, @post) do |parent_fields|
603
- _erbout.concat parent_fields.check_box(:secret)
689
+ concat parent_fields.check_box(:secret)
604
690
  end
605
691
  end
606
692
 
@@ -612,18 +698,16 @@ class FormHelperTest < ActionView::TestCase
612
698
  "<input name='parent_post[secret]' type='hidden' value='0' />" +
613
699
  "</form>"
614
700
 
615
- assert_dom_equal expected, _erbout
701
+ assert_dom_equal expected, output_buffer
616
702
  end
617
703
 
618
704
  def test_form_for_and_fields_for_with_object
619
- _erbout = ''
620
-
621
705
  form_for(:post, @post, :html => { :id => 'create-post' }) do |post_form|
622
- _erbout.concat post_form.text_field(:title)
623
- _erbout.concat post_form.text_area(:body)
706
+ concat post_form.text_field(:title)
707
+ concat post_form.text_area(:body)
624
708
 
625
709
  post_form.fields_for(@comment) do |comment_fields|
626
- _erbout.concat comment_fields.text_field(:name)
710
+ concat comment_fields.text_field(:name)
627
711
  end
628
712
  end
629
713
 
@@ -634,7 +718,7 @@ class FormHelperTest < ActionView::TestCase
634
718
  "<input name='post[comment][name]' type='text' id='post_comment_name' value='new comment' size='30' />" +
635
719
  "</form>"
636
720
 
637
- assert_dom_equal expected, _erbout
721
+ assert_dom_equal expected, output_buffer
638
722
  end
639
723
 
640
724
  class LabelledFormBuilder < ActionView::Helpers::FormBuilder
@@ -649,12 +733,10 @@ class FormHelperTest < ActionView::TestCase
649
733
  end
650
734
 
651
735
  def test_form_for_with_labelled_builder
652
- _erbout = ''
653
-
654
736
  form_for(:post, @post, :builder => LabelledFormBuilder) do |f|
655
- _erbout.concat f.text_field(:title)
656
- _erbout.concat f.text_area(:body)
657
- _erbout.concat f.check_box(:secret)
737
+ concat f.text_field(:title)
738
+ concat f.text_area(:body)
739
+ concat f.check_box(:secret)
658
740
  end
659
741
 
660
742
  expected =
@@ -665,18 +747,17 @@ class FormHelperTest < ActionView::TestCase
665
747
  "<input name='post[secret]' type='hidden' value='0' /><br/>" +
666
748
  "</form>"
667
749
 
668
- assert_dom_equal expected, _erbout
750
+ assert_dom_equal expected, output_buffer
669
751
  end
670
752
 
671
753
  def test_default_form_builder
672
754
  old_default_form_builder, ActionView::Base.default_form_builder =
673
755
  ActionView::Base.default_form_builder, LabelledFormBuilder
674
756
 
675
- _erbout = ''
676
757
  form_for(:post, @post) do |f|
677
- _erbout.concat f.text_field(:title)
678
- _erbout.concat f.text_area(:body)
679
- _erbout.concat f.check_box(:secret)
758
+ concat f.text_field(:title)
759
+ concat f.text_area(:body)
760
+ concat f.check_box(:secret)
680
761
  end
681
762
 
682
763
  expected =
@@ -687,17 +768,15 @@ class FormHelperTest < ActionView::TestCase
687
768
  "<input name='post[secret]' type='hidden' value='0' /><br/>" +
688
769
  "</form>"
689
770
 
690
- assert_dom_equal expected, _erbout
771
+ assert_dom_equal expected, output_buffer
691
772
  ensure
692
773
  ActionView::Base.default_form_builder = old_default_form_builder
693
774
  end
694
775
 
695
776
  def test_default_form_builder_with_active_record_helpers
696
-
697
- _erbout = ''
698
777
  form_for(:post, @post) do |f|
699
- _erbout.concat f.error_message_on('author_name')
700
- _erbout.concat f.error_messages
778
+ concat f.error_message_on('author_name')
779
+ concat f.error_messages
701
780
  end
702
781
 
703
782
  expected = %(<form action='http://www.example.com' method='post'>) +
@@ -705,7 +784,7 @@ class FormHelperTest < ActionView::TestCase
705
784
  %(<div class="errorExplanation" id="errorExplanation"><h2>1 error prohibited this post from being saved</h2><p>There were problems with the following fields:</p><ul><li>Author name can't be empty</li></ul></div>) +
706
785
  %(</form>)
707
786
 
708
- assert_dom_equal expected, _erbout
787
+ assert_dom_equal expected, output_buffer
709
788
 
710
789
  end
711
790
 
@@ -713,10 +792,9 @@ class FormHelperTest < ActionView::TestCase
713
792
  post = @post
714
793
  @post = nil
715
794
 
716
- _erbout = ''
717
795
  form_for(:post, post) do |f|
718
- _erbout.concat f.error_message_on('author_name')
719
- _erbout.concat f.error_messages
796
+ concat f.error_message_on('author_name')
797
+ concat f.error_messages
720
798
  end
721
799
 
722
800
  expected = %(<form action='http://www.example.com' method='post'>) +
@@ -724,19 +802,18 @@ class FormHelperTest < ActionView::TestCase
724
802
  %(<div class="errorExplanation" id="errorExplanation"><h2>1 error prohibited this post from being saved</h2><p>There were problems with the following fields:</p><ul><li>Author name can't be empty</li></ul></div>) +
725
803
  %(</form>)
726
804
 
727
- assert_dom_equal expected, _erbout
805
+ assert_dom_equal expected, output_buffer
728
806
 
729
807
  end
730
808
 
731
809
  # Perhaps this test should be moved to prototype helper tests.
732
810
  def test_remote_form_for_with_labelled_builder
733
811
  self.extend ActionView::Helpers::PrototypeHelper
734
- _erbout = ''
735
812
 
736
813
  remote_form_for(:post, @post, :builder => LabelledFormBuilder) do |f|
737
- _erbout.concat f.text_field(:title)
738
- _erbout.concat f.text_area(:body)
739
- _erbout.concat f.check_box(:secret)
814
+ concat f.text_field(:title)
815
+ concat f.text_area(:body)
816
+ concat f.check_box(:secret)
740
817
  end
741
818
 
742
819
  expected =
@@ -747,16 +824,14 @@ class FormHelperTest < ActionView::TestCase
747
824
  "<input name='post[secret]' type='hidden' value='0' /><br/>" +
748
825
  "</form>"
749
826
 
750
- assert_dom_equal expected, _erbout
827
+ assert_dom_equal expected, output_buffer
751
828
  end
752
829
 
753
830
  def test_fields_for_with_labelled_builder
754
- _erbout = ''
755
-
756
831
  fields_for(:post, @post, :builder => LabelledFormBuilder) do |f|
757
- _erbout.concat f.text_field(:title)
758
- _erbout.concat f.text_area(:body)
759
- _erbout.concat f.check_box(:secret)
832
+ concat f.text_field(:title)
833
+ concat f.text_area(:body)
834
+ concat f.check_box(:secret)
760
835
  end
761
836
 
762
837
  expected =
@@ -765,29 +840,23 @@ class FormHelperTest < ActionView::TestCase
765
840
  "<label for='secret'>Secret:</label> <input name='post[secret]' checked='checked' type='checkbox' id='post_secret' value='1' />" +
766
841
  "<input name='post[secret]' type='hidden' value='0' /><br/>"
767
842
 
768
- assert_dom_equal expected, _erbout
843
+ assert_dom_equal expected, output_buffer
769
844
  end
770
845
 
771
846
  def test_form_for_with_html_options_adds_options_to_form_tag
772
- _erbout = ''
773
-
774
847
  form_for(:post, @post, :html => {:id => 'some_form', :class => 'some_class'}) do |f| end
775
848
  expected = "<form action=\"http://www.example.com\" class=\"some_class\" id=\"some_form\" method=\"post\"></form>"
776
849
 
777
- assert_dom_equal expected, _erbout
850
+ assert_dom_equal expected, output_buffer
778
851
  end
779
852
 
780
853
  def test_form_for_with_string_url_option
781
- _erbout = ''
782
-
783
854
  form_for(:post, @post, :url => 'http://www.otherdomain.com') do |f| end
784
855
 
785
- assert_equal '<form action="http://www.otherdomain.com" method="post"></form>', _erbout
856
+ assert_equal '<form action="http://www.otherdomain.com" method="post"></form>', output_buffer
786
857
  end
787
858
 
788
859
  def test_form_for_with_hash_url_option
789
- _erbout = ''
790
-
791
860
  form_for(:post, @post, :url => {:controller => 'controller', :action => 'action'}) do |f| end
792
861
 
793
862
  assert_equal 'controller', @controller.url_for_options[:controller]
@@ -795,26 +864,20 @@ class FormHelperTest < ActionView::TestCase
795
864
  end
796
865
 
797
866
  def test_form_for_with_record_url_option
798
- _erbout = ''
799
-
800
867
  form_for(:post, @post, :url => @post) do |f| end
801
868
 
802
869
  expected = "<form action=\"/posts/123\" method=\"post\"></form>"
803
- assert_equal expected, _erbout
870
+ assert_equal expected, output_buffer
804
871
  end
805
872
 
806
873
  def test_form_for_with_existing_object
807
- _erbout = ''
808
-
809
874
  form_for(@post) do |f| end
810
875
 
811
876
  expected = "<form action=\"/posts/123\" class=\"edit_post\" id=\"edit_post_123\" method=\"post\"><div style=\"margin:0;padding:0\"><input name=\"_method\" type=\"hidden\" value=\"put\" /></div></form>"
812
- assert_equal expected, _erbout
877
+ assert_equal expected, output_buffer
813
878
  end
814
879
 
815
880
  def test_form_for_with_new_object
816
- _erbout = ''
817
-
818
881
  post = Post.new
819
882
  post.new_record = true
820
883
  def post.id() nil end
@@ -822,67 +885,63 @@ class FormHelperTest < ActionView::TestCase
822
885
  form_for(post) do |f| end
823
886
 
824
887
  expected = "<form action=\"/posts\" class=\"new_post\" id=\"new_post\" method=\"post\"></form>"
825
- assert_equal expected, _erbout
888
+ assert_equal expected, output_buffer
826
889
  end
827
890
 
828
891
  def test_form_for_with_existing_object_in_list
829
892
  @post.new_record = false
830
893
  @comment.save
831
- _erbout = ''
894
+
832
895
  form_for([@post, @comment]) {}
833
896
 
834
897
  expected = %(<form action="#{comment_path(@post, @comment)}" class="edit_comment" id="edit_comment_1" method="post"><div style="margin:0;padding:0"><input name="_method" type="hidden" value="put" /></div></form>)
835
- assert_dom_equal expected, _erbout
898
+ assert_dom_equal expected, output_buffer
836
899
  end
837
900
 
838
901
  def test_form_for_with_new_object_in_list
839
902
  @post.new_record = false
840
- _erbout = ''
903
+
841
904
  form_for([@post, @comment]) {}
842
905
 
843
906
  expected = %(<form action="#{comments_path(@post)}" class="new_comment" id="new_comment" method="post"></form>)
844
- assert_dom_equal expected, _erbout
907
+ assert_dom_equal expected, output_buffer
845
908
  end
846
909
 
847
910
  def test_form_for_with_existing_object_and_namespace_in_list
848
911
  @post.new_record = false
849
912
  @comment.save
850
- _erbout = ''
913
+
851
914
  form_for([:admin, @post, @comment]) {}
852
915
 
853
916
  expected = %(<form action="#{admin_comment_path(@post, @comment)}" class="edit_comment" id="edit_comment_1" method="post"><div style="margin:0;padding:0"><input name="_method" type="hidden" value="put" /></div></form>)
854
- assert_dom_equal expected, _erbout
917
+ assert_dom_equal expected, output_buffer
855
918
  end
856
919
 
857
920
  def test_form_for_with_new_object_and_namespace_in_list
858
921
  @post.new_record = false
859
- _erbout = ''
922
+
860
923
  form_for([:admin, @post, @comment]) {}
861
924
 
862
925
  expected = %(<form action="#{admin_comments_path(@post)}" class="new_comment" id="new_comment" method="post"></form>)
863
- assert_dom_equal expected, _erbout
926
+ assert_dom_equal expected, output_buffer
864
927
  end
865
928
 
866
929
  def test_form_for_with_existing_object_and_custom_url
867
- _erbout = ''
868
-
869
930
  form_for(@post, :url => "/super_posts") do |f| end
870
931
 
871
932
  expected = "<form action=\"/super_posts\" class=\"edit_post\" id=\"edit_post_123\" method=\"post\"><div style=\"margin:0;padding:0\"><input name=\"_method\" type=\"hidden\" value=\"put\" /></div></form>"
872
- assert_equal expected, _erbout
933
+ assert_equal expected, output_buffer
873
934
  end
874
935
 
875
936
  def test_remote_form_for_with_html_options_adds_options_to_form_tag
876
937
  self.extend ActionView::Helpers::PrototypeHelper
877
- _erbout = ''
878
938
 
879
939
  remote_form_for(:post, @post, :html => {:id => 'some_form', :class => 'some_class'}) do |f| end
880
940
  expected = "<form action=\"http://www.example.com\" class=\"some_class\" id=\"some_form\" method=\"post\" onsubmit=\"new Ajax.Request('http://www.example.com', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;\"></form>"
881
941
 
882
- assert_dom_equal expected, _erbout
942
+ assert_dom_equal expected, output_buffer
883
943
  end
884
944
 
885
-
886
945
  protected
887
946
  def comments_path(post)
888
947
  "/posts/#{post.id}/comments"