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.
- data/CHANGELOG +223 -7
- data/README +6 -12
- data/Rakefile +11 -11
- data/lib/action_controller.rb +9 -9
- data/lib/action_controller/assertions/response_assertions.rb +29 -78
- data/lib/action_controller/assertions/routing_assertions.rb +33 -33
- data/lib/action_controller/assertions/selector_assertions.rb +9 -5
- data/lib/action_controller/base.rb +227 -161
- data/lib/action_controller/benchmarking.rb +37 -24
- data/lib/action_controller/caching/actions.rb +53 -21
- data/lib/action_controller/caching/fragments.rb +10 -36
- data/lib/action_controller/caching/sweeping.rb +3 -3
- data/lib/action_controller/cgi_ext/session.rb +2 -22
- data/lib/action_controller/cgi_process.rb +8 -46
- data/lib/action_controller/components.rb +4 -1
- data/lib/action_controller/cookies.rb +10 -0
- data/lib/action_controller/dispatcher.rb +49 -15
- data/lib/action_controller/filters.rb +48 -10
- data/lib/action_controller/headers.rb +16 -14
- data/lib/action_controller/helpers.rb +2 -2
- data/lib/action_controller/http_authentication.rb +1 -1
- data/lib/action_controller/integration.rb +57 -60
- data/lib/action_controller/layout.rb +27 -53
- data/lib/action_controller/mime_responds.rb +5 -1
- data/lib/action_controller/mime_type.rb +64 -42
- data/lib/action_controller/mime_types.rb +2 -1
- data/lib/action_controller/performance_test.rb +16 -0
- data/lib/action_controller/polymorphic_routes.rb +16 -9
- data/lib/action_controller/rack_process.rb +303 -0
- data/lib/action_controller/request.rb +205 -97
- data/lib/action_controller/request_forgery_protection.rb +2 -2
- data/lib/action_controller/request_profiler.rb +0 -0
- data/lib/action_controller/rescue.rb +20 -115
- data/lib/action_controller/resources.rb +186 -83
- data/lib/action_controller/response.rb +140 -26
- data/lib/action_controller/routing.rb +28 -30
- data/lib/action_controller/routing/builder.rb +45 -54
- data/lib/action_controller/routing/optimisations.rb +31 -21
- data/lib/action_controller/routing/recognition_optimisation.rb +33 -27
- data/lib/action_controller/routing/route.rb +162 -147
- data/lib/action_controller/routing/route_set.rb +8 -7
- data/lib/action_controller/routing/routing_ext.rb +4 -1
- data/lib/action_controller/routing/segments.rb +50 -21
- data/lib/action_controller/session/cookie_store.rb +3 -2
- data/lib/action_controller/session/drb_server.rb +7 -7
- data/lib/action_controller/session_management.rb +6 -2
- data/lib/action_controller/streaming.rb +15 -8
- data/lib/action_controller/templates/rescues/diagnostics.erb +2 -2
- data/lib/action_controller/templates/rescues/template_error.erb +2 -2
- data/lib/action_controller/test_case.rb +66 -2
- data/lib/action_controller/test_process.rb +71 -66
- data/lib/action_controller/translation.rb +13 -0
- data/lib/action_controller/url_rewriter.rb +90 -13
- data/lib/action_controller/vendor/html-scanner/html/node.rb +9 -2
- data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +1 -1
- data/lib/action_controller/vendor/html-scanner/html/selector.rb +2 -2
- data/lib/action_controller/verification.rb +2 -2
- data/lib/action_pack/version.rb +1 -1
- data/lib/action_view.rb +19 -11
- data/lib/action_view/base.rb +184 -150
- data/lib/action_view/helpers.rb +38 -0
- data/lib/action_view/helpers/active_record_helper.rb +56 -27
- data/lib/action_view/helpers/asset_tag_helper.rb +356 -153
- data/lib/action_view/helpers/atom_feed_helper.rb +74 -19
- data/lib/action_view/helpers/benchmark_helper.rb +3 -3
- data/lib/action_view/helpers/cache_helper.rb +1 -2
- data/lib/action_view/helpers/capture_helper.rb +19 -44
- data/lib/action_view/helpers/date_helper.rb +486 -296
- data/lib/action_view/helpers/debug_helper.rb +20 -13
- data/lib/action_view/helpers/form_helper.rb +71 -30
- data/lib/action_view/helpers/form_options_helper.rb +15 -85
- data/lib/action_view/helpers/form_tag_helper.rb +61 -38
- data/lib/action_view/helpers/javascript_helper.rb +80 -89
- data/lib/action_view/helpers/number_helper.rb +179 -74
- data/lib/action_view/helpers/prototype_helper.rb +216 -201
- data/lib/action_view/helpers/record_tag_helper.rb +4 -5
- data/lib/action_view/helpers/sanitize_helper.rb +65 -33
- data/lib/action_view/helpers/scriptaculous_helper.rb +2 -2
- data/lib/action_view/helpers/tag_helper.rb +39 -22
- data/lib/action_view/helpers/text_helper.rb +212 -118
- data/lib/action_view/helpers/translation_helper.rb +21 -0
- data/lib/action_view/helpers/url_helper.rb +100 -58
- data/lib/action_view/inline_template.rb +13 -14
- data/lib/action_view/locale/en.yml +91 -0
- data/lib/action_view/partials.rb +100 -55
- data/lib/action_view/paths.rb +125 -0
- data/lib/action_view/renderable.rb +102 -0
- data/lib/action_view/renderable_partial.rb +48 -0
- data/lib/action_view/template.rb +90 -101
- data/lib/action_view/template_error.rb +11 -21
- data/lib/action_view/template_handler.rb +8 -28
- data/lib/action_view/template_handlers.rb +45 -0
- data/lib/action_view/template_handlers/builder.rb +5 -15
- data/lib/action_view/template_handlers/erb.rb +9 -6
- data/lib/action_view/template_handlers/rjs.rb +2 -17
- data/lib/action_view/test_case.rb +7 -4
- data/test/abstract_unit.rb +4 -1
- data/test/active_record_unit.rb +28 -30
- data/test/activerecord/render_partial_with_record_identification_test.rb +25 -12
- data/test/controller/action_pack_assertions_test.rb +8 -37
- data/test/controller/addresses_render_test.rb +0 -3
- data/test/controller/assert_select_test.rb +51 -24
- data/test/controller/base_test.rb +4 -4
- data/test/controller/caching_test.rb +136 -66
- data/test/controller/capture_test.rb +1 -21
- data/test/controller/cgi_test.rb +157 -10
- data/test/controller/components_test.rb +41 -25
- data/test/controller/content_type_test.rb +49 -17
- data/test/controller/cookie_test.rb +1 -1
- data/test/controller/deprecation/deprecated_base_methods_test.rb +0 -3
- data/test/controller/dispatcher_test.rb +9 -1
- data/test/controller/filter_params_test.rb +2 -2
- data/test/controller/filters_test.rb +13 -13
- data/test/controller/html-scanner/cdata_node_test.rb +15 -0
- data/test/controller/html-scanner/node_test.rb +21 -0
- data/test/controller/html-scanner/sanitizer_test.rb +14 -0
- data/test/controller/integration_test.rb +167 -6
- data/test/controller/layout_test.rb +11 -68
- data/test/controller/logging_test.rb +46 -0
- data/test/controller/mime_responds_test.rb +61 -59
- data/test/controller/mime_type_test.rb +6 -6
- data/test/controller/polymorphic_routes_test.rb +37 -2
- data/test/controller/rack_test.rb +323 -0
- data/test/controller/redirect_test.rb +72 -71
- data/test/controller/render_test.rb +1120 -108
- data/test/controller/request_forgery_protection_test.rb +66 -52
- data/test/controller/request_test.rb +103 -146
- data/test/controller/rescue_test.rb +20 -24
- data/test/controller/resources_test.rb +408 -25
- data/test/controller/routing_test.rb +1774 -1774
- data/test/controller/send_file_test.rb +0 -4
- data/test/controller/session/cookie_store_test.rb +53 -1
- data/test/controller/test_test.rb +15 -37
- data/test/controller/translation_test.rb +26 -0
- data/test/controller/url_rewriter_test.rb +27 -28
- data/test/controller/view_paths_test.rb +48 -47
- data/test/fixtures/_top_level_partial.html.erb +1 -0
- data/test/fixtures/_top_level_partial_only.erb +1 -0
- data/test/fixtures/developers/_developer.erb +1 -0
- data/test/fixtures/fun/games/_game.erb +1 -0
- data/test/fixtures/fun/serious/games/_game.erb +1 -0
- data/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +3 -0
- data/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +6 -0
- data/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +5 -0
- data/test/fixtures/functional_caching/inline_fragment_cached.html.erb +2 -0
- data/test/fixtures/layouts/_column.html.erb +2 -0
- data/test/fixtures/projects/_project.erb +1 -0
- data/test/fixtures/public/javascripts/subdir/subdir.js +1 -0
- data/test/fixtures/public/stylesheets/subdir/subdir.css +1 -0
- data/test/fixtures/replies/_reply.erb +1 -0
- data/test/fixtures/test/_counter.html.erb +1 -0
- data/test/fixtures/test/_customer.erb +1 -1
- data/test/fixtures/test/_customer_with_var.erb +1 -0
- data/test/fixtures/test/_layout_for_block_with_args.html.erb +3 -0
- data/test/fixtures/test/_local_inspector.html.erb +1 -0
- data/test/fixtures/test/_partial_with_only_html_version.html.erb +1 -0
- data/test/fixtures/test/hello.builder +1 -1
- data/test/fixtures/test/hyphen-ated.erb +1 -0
- data/test/fixtures/test/implicit_content_type.atom.builder +2 -0
- data/test/fixtures/test/nested_layout.erb +3 -0
- data/test/fixtures/test/non_erb_block_content_for.builder +1 -1
- data/test/fixtures/test/sub_template_raise.html.erb +1 -0
- data/test/fixtures/test/template.erb +1 -0
- data/test/fixtures/test/using_layout_around_block_with_args.html.erb +1 -0
- data/test/template/active_record_helper_i18n_test.rb +46 -0
- data/test/template/active_record_helper_test.rb +24 -24
- data/test/template/asset_tag_helper_test.rb +161 -29
- data/test/template/atom_feed_helper_test.rb +114 -5
- data/test/template/compiled_templates_test.rb +59 -0
- data/test/template/date_helper_i18n_test.rb +113 -0
- data/test/template/date_helper_test.rb +403 -109
- data/test/template/form_helper_test.rb +213 -154
- data/test/template/form_options_helper_test.rb +249 -897
- data/test/template/form_tag_helper_test.rb +80 -32
- data/test/template/javascript_helper_test.rb +17 -18
- data/test/template/number_helper_i18n_test.rb +54 -0
- data/test/template/number_helper_test.rb +43 -13
- data/test/template/prototype_helper_test.rb +101 -84
- data/test/template/record_tag_helper_test.rb +24 -20
- data/test/template/render_test.rb +193 -0
- data/test/template/sanitize_helper_test.rb +3 -3
- data/test/template/tag_helper_test.rb +34 -14
- data/test/template/text_helper_test.rb +83 -9
- data/test/template/translation_helper_test.rb +28 -0
- data/test/template/url_helper_test.rb +55 -18
- metadata +57 -18
- data/lib/action_view/helpers/javascripts/controls.js +0 -963
- data/lib/action_view/helpers/javascripts/dragdrop.js +0 -972
- data/lib/action_view/helpers/javascripts/effects.js +0 -1120
- data/lib/action_view/helpers/javascripts/prototype.js +0 -4225
- data/lib/action_view/partial_template.rb +0 -70
- data/lib/action_view/template_finder.rb +0 -177
- data/lib/action_view/template_handlers/compilable.rb +0 -128
- data/test/controller/custom_handler_test.rb +0 -45
- data/test/controller/new_render_test.rb +0 -945
- data/test/fixtures/test/block_content_for.erb +0 -2
- data/test/fixtures/test/erb_content_for.erb +0 -2
- data/test/template/deprecated_erb_variable_test.rb +0 -9
- data/test/template/template_finder_test.rb +0 -73
- data/test/template/template_object_test.rb +0 -95
@@ -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
|