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
@@ -1,2 +0,0 @@
1
- <% block_content_for :title do 'Putting stuff in the title!' end %>
2
- Great stuff!
@@ -1,2 +0,0 @@
1
- <% erb_content_for :title do %>Putting stuff in the title!<% end %>
2
- Great stuff!
@@ -1,9 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class DeprecatedErbVariableTest < ActionView::TestCase
4
- def test_setting_erb_variable_warns
5
- assert_deprecated 'erb_variable' do
6
- ActionView::Base.erb_variable = '_erbout'
7
- end
8
- end
9
- end
@@ -1,73 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class TemplateFinderTest < Test::Unit::TestCase
4
-
5
- LOAD_PATH_ROOT = File.join(File.dirname(__FILE__), '..', 'fixtures')
6
-
7
- def setup
8
- ActionView::TemplateFinder.process_view_paths(LOAD_PATH_ROOT)
9
- ActionView::Template::register_template_handler :mab, Class.new(ActionView::TemplateHandler)
10
- @template = ActionView::Base.new
11
- @finder = ActionView::TemplateFinder.new(@template, LOAD_PATH_ROOT)
12
- end
13
-
14
- def test_should_raise_exception_for_unprocessed_view_path
15
- assert_raises ActionView::TemplateFinder::InvalidViewPath do
16
- ActionView::TemplateFinder.new(@template, File.dirname(__FILE__))
17
- end
18
- end
19
-
20
- def test_should_cache_file_extension_properly
21
- assert_equal ["builder", "erb", "rhtml", "rjs", "rxml", "mab"].sort,
22
- ActionView::TemplateFinder.file_extension_cache[LOAD_PATH_ROOT].values.flatten.uniq.sort
23
-
24
- assert_equal (Dir.glob("#{LOAD_PATH_ROOT}/**/*/*.{erb,rjs,rhtml,builder,rxml,mab}") |
25
- Dir.glob("#{LOAD_PATH_ROOT}/**.{erb,rjs,rhtml,builder,rxml,mab}")).size,
26
- ActionView::TemplateFinder.file_extension_cache[LOAD_PATH_ROOT].keys.size
27
- end
28
-
29
- def test_should_cache_dir_content_properly
30
- assert ActionView::TemplateFinder.processed_view_paths[LOAD_PATH_ROOT]
31
- assert_equal (Dir.glob("#{LOAD_PATH_ROOT}/**/*/**") | Dir.glob("#{LOAD_PATH_ROOT}/**")).find_all {|f| !File.directory?(f) }.size,
32
- ActionView::TemplateFinder.processed_view_paths[LOAD_PATH_ROOT].size
33
- end
34
-
35
- def test_find_template_extension_from_first_render
36
- assert_nil @finder.send(:find_template_extension_from_first_render)
37
-
38
- {
39
- nil => nil,
40
- '' => nil,
41
- 'foo' => nil,
42
- '/foo' => nil,
43
- 'foo.rb' => 'rb',
44
- 'foo.bar.rb' => 'bar.rb',
45
- 'baz/foo.rb' => 'rb',
46
- 'baz/foo.bar.rb' => 'bar.rb',
47
- 'baz/foo.o/foo.rb' => 'rb',
48
- 'baz/foo.o/foo.bar.rb' => 'bar.rb',
49
- }.each do |input,expectation|
50
- @template.instance_variable_set('@first_render', input)
51
- assert_equal expectation, @finder.send(:find_template_extension_from_first_render)
52
- end
53
- end
54
-
55
- def test_should_report_file_exists_correctly
56
- assert_nil @finder.send(:find_template_extension_from_first_render)
57
- assert_equal false, @finder.send(:file_exists?, 'test.rhtml')
58
- assert_equal false, @finder.send(:file_exists?, 'test.rb')
59
-
60
- @template.instance_variable_set('@first_render', 'foo.rb')
61
-
62
- assert_equal 'rb', @finder.send(:find_template_extension_from_first_render)
63
- assert_equal false, @finder.send(:file_exists?, 'baz')
64
- assert_equal false, @finder.send(:file_exists?, 'baz.rb')
65
- end
66
-
67
- uses_mocha 'Template finder tests' do
68
- def test_should_update_extension_cache_when_template_handler_is_registered
69
- ActionView::TemplateFinder.expects(:update_extension_cache_for).with("funky")
70
- ActionView::Template::register_template_handler :funky, Class.new(ActionView::TemplateHandler)
71
- end
72
- end
73
- end
@@ -1,95 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class TemplateObjectTest < Test::Unit::TestCase
4
- LOAD_PATH_ROOT = File.join(File.dirname(__FILE__), '..', 'fixtures')
5
- ActionView::TemplateFinder.process_view_paths(LOAD_PATH_ROOT)
6
-
7
- class TemplateTest < Test::Unit::TestCase
8
- def setup
9
- @view = ActionView::Base.new(LOAD_PATH_ROOT)
10
- @path = "test/hello_world.erb"
11
- end
12
-
13
- def test_should_create_valid_template
14
- template = ActionView::Template.new(@view, @path, true)
15
-
16
- assert_kind_of ActionView::TemplateHandlers::ERB, template.handler
17
- assert_equal "test/hello_world.erb", template.path
18
- assert_nil template.instance_variable_get(:"@source")
19
- assert_equal "erb", template.extension
20
- end
21
-
22
- uses_mocha 'Template preparation tests' do
23
-
24
- def test_should_prepare_template_properly
25
- template = ActionView::Template.new(@view, @path, true)
26
- view = template.instance_variable_get(:"@view")
27
-
28
- view.expects(:evaluate_assigns)
29
- template.handler.expects(:compile_template).with(template)
30
- view.expects(:method_names).returns({})
31
-
32
- template.prepare!
33
- end
34
-
35
- end
36
- end
37
-
38
- class PartialTemplateTest < Test::Unit::TestCase
39
- def setup
40
- @view = ActionView::Base.new(LOAD_PATH_ROOT)
41
- @path = "test/partial_only"
42
- end
43
-
44
- def test_should_create_valid_partial_template
45
- template = ActionView::PartialTemplate.new(@view, @path, nil)
46
-
47
- assert_equal "test/_partial_only", template.path
48
- assert_equal :partial_only, template.variable_name
49
-
50
- assert template.locals.has_key?(:object)
51
- assert template.locals.has_key?(:partial_only)
52
- end
53
-
54
- def test_partial_with_errors
55
- template = ActionView::PartialTemplate.new(@view, 'test/raise', nil)
56
- assert_raise(ActionView::TemplateError) { template.render_template }
57
- end
58
-
59
- uses_mocha 'Partial template preparation tests' do
60
- def test_should_prepare_on_initialization
61
- ActionView::PartialTemplate.any_instance.expects(:prepare!)
62
- template = ActionView::PartialTemplate.new(@view, @path, 1)
63
- end
64
- end
65
- end
66
-
67
- class PartialTemplateFallbackTest < Test::Unit::TestCase
68
- def setup
69
- @view = ActionView::Base.new(LOAD_PATH_ROOT)
70
- @path = 'test/layout_for_partial'
71
- end
72
-
73
- def test_default
74
- template = ActionView::PartialTemplate.new(@view, @path, nil)
75
- assert_equal 'test/_layout_for_partial', template.path
76
- assert_equal 'erb', template.extension
77
- assert_equal :html, @view.template_format
78
- end
79
-
80
- def test_js
81
- @view.template_format = :js
82
- template = ActionView::PartialTemplate.new(@view, @path, nil)
83
- assert_equal 'test/_layout_for_partial', template.path
84
- assert_equal 'erb', template.extension
85
- assert_equal :html, @view.template_format
86
- end
87
-
88
- def test_xml
89
- @view.template_format = :xml
90
- assert_raise ActionView::MissingTemplate do
91
- ActionView::PartialTemplate.new(@view, @path, nil)
92
- end
93
- end
94
- end
95
- end