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
@@ -30,7 +30,6 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
30
30
|
end.new
|
31
31
|
|
32
32
|
@request = Class.new do
|
33
|
-
def relative_url_root() "" end
|
34
33
|
def protocol() 'http://' end
|
35
34
|
def ssl?() false end
|
36
35
|
def host_with_port() 'localhost' end
|
@@ -39,8 +38,8 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
39
38
|
@controller.request = @request
|
40
39
|
|
41
40
|
ActionView::Helpers::AssetTagHelper::reset_javascript_include_default
|
42
|
-
|
43
|
-
|
41
|
+
AssetTag::Cache.clear
|
42
|
+
AssetCollection::Cache.clear
|
44
43
|
end
|
45
44
|
|
46
45
|
def teardown
|
@@ -83,6 +82,7 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
83
82
|
%(javascript_include_tag("common.javascript", "/elsewhere/cools")) => %(<script src="/javascripts/common.javascript" type="text/javascript"></script>\n<script src="/elsewhere/cools.js" type="text/javascript"></script>),
|
84
83
|
%(javascript_include_tag(:defaults)) => %(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>),
|
85
84
|
%(javascript_include_tag(:all)) => %(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>\n<script src="/javascripts/version.1.0.js" type="text/javascript"></script>),
|
85
|
+
%(javascript_include_tag(:all, :recursive => true)) => %(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>\n<script src="/javascripts/subdir/subdir.js" type="text/javascript"></script>\n<script src="/javascripts/version.1.0.js" type="text/javascript"></script>),
|
86
86
|
%(javascript_include_tag(:defaults, "test")) => %(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/test.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>),
|
87
87
|
%(javascript_include_tag("test", :defaults)) => %(<script src="/javascripts/test.js" type="text/javascript"></script>\n<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>)
|
88
88
|
}
|
@@ -108,6 +108,7 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
108
108
|
%(stylesheet_link_tag("dir/file")) => %(<link href="/stylesheets/dir/file.css" media="screen" rel="stylesheet" type="text/css" />),
|
109
109
|
%(stylesheet_link_tag("style", :media => "all")) => %(<link href="/stylesheets/style.css" media="all" rel="stylesheet" type="text/css" />),
|
110
110
|
%(stylesheet_link_tag(:all)) => %(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/version.1.0.css" media="screen" rel="stylesheet" type="text/css" />),
|
111
|
+
%(stylesheet_link_tag(:all, :recursive => true)) => %(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/subdir/subdir.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/version.1.0.css" media="screen" rel="stylesheet" type="text/css" />),
|
111
112
|
%(stylesheet_link_tag(:all, :media => "all")) => %(<link href="/stylesheets/bank.css" media="all" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="all" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/version.1.0.css" media="all" rel="stylesheet" type="text/css" />),
|
112
113
|
%(stylesheet_link_tag("random.styles", "/css/stylish")) => %(<link href="/stylesheets/random.styles" media="screen" rel="stylesheet" type="text/css" />\n<link href="/css/stylish.css" media="screen" rel="stylesheet" type="text/css" />),
|
113
114
|
%(stylesheet_link_tag("http://www.example.com/styles/style")) => %(<link href="http://www.example.com/styles/style.css" media="screen" rel="stylesheet" type="text/css" />)
|
@@ -117,7 +118,7 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
117
118
|
%(image_path("xml")) => %(/images/xml),
|
118
119
|
%(image_path("xml.png")) => %(/images/xml.png),
|
119
120
|
%(image_path("dir/xml.png")) => %(/images/dir/xml.png),
|
120
|
-
%(image_path("/dir/xml.png")) => %(/dir/xml.png)
|
121
|
+
%(image_path("/dir/xml.png")) => %(/dir/xml.png)
|
121
122
|
}
|
122
123
|
|
123
124
|
PathToImageToTag = {
|
@@ -155,12 +156,12 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
155
156
|
PathToJavascriptToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) }
|
156
157
|
end
|
157
158
|
|
158
|
-
def
|
159
|
+
def test_javascript_include_tag_with_blank_asset_id
|
159
160
|
ENV["RAILS_ASSET_ID"] = ""
|
160
161
|
JavascriptIncludeToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) }
|
162
|
+
end
|
161
163
|
|
162
|
-
|
163
|
-
|
164
|
+
def test_javascript_include_tag_with_given_asset_id
|
164
165
|
ENV["RAILS_ASSET_ID"] = "1"
|
165
166
|
assert_dom_equal(%(<script src="/javascripts/prototype.js?1" type="text/javascript"></script>\n<script src="/javascripts/effects.js?1" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js?1" type="text/javascript"></script>\n<script src="/javascripts/controls.js?1" type="text/javascript"></script>\n<script src="/javascripts/application.js?1" type="text/javascript"></script>), javascript_include_tag(:defaults))
|
166
167
|
end
|
@@ -169,10 +170,15 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
169
170
|
ENV["RAILS_ASSET_ID"] = ""
|
170
171
|
ActionView::Helpers::AssetTagHelper::register_javascript_include_default 'slider'
|
171
172
|
assert_dom_equal %(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/slider.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>), javascript_include_tag(:defaults)
|
173
|
+
end
|
174
|
+
|
175
|
+
def test_register_javascript_include_default_mixed_defaults
|
176
|
+
ENV["RAILS_ASSET_ID"] = ""
|
177
|
+
ActionView::Helpers::AssetTagHelper::register_javascript_include_default 'slider'
|
172
178
|
ActionView::Helpers::AssetTagHelper::register_javascript_include_default 'lib1', '/elsewhere/blub/lib2'
|
173
179
|
assert_dom_equal %(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/slider.js" type="text/javascript"></script>\n<script src="/javascripts/lib1.js" type="text/javascript"></script>\n<script src="/elsewhere/blub/lib2.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>), javascript_include_tag(:defaults)
|
174
180
|
end
|
175
|
-
|
181
|
+
|
176
182
|
def test_custom_javascript_expansions
|
177
183
|
ActionView::Helpers::AssetTagHelper::register_javascript_expansion :monkey => ["head", "body", "tail"]
|
178
184
|
assert_dom_equal %(<script src="/javascripts/first.js" type="text/javascript"></script>\n<script src="/javascripts/head.js" type="text/javascript"></script>\n<script src="/javascripts/body.js" type="text/javascript"></script>\n<script src="/javascripts/tail.js" type="text/javascript"></script>\n<script src="/javascripts/last.js" type="text/javascript"></script>), javascript_include_tag('first', :monkey, 'last')
|
@@ -215,7 +221,7 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
215
221
|
def test_image_path
|
216
222
|
ImagePathToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) }
|
217
223
|
end
|
218
|
-
|
224
|
+
|
219
225
|
def test_path_to_image_alias_for_image_path
|
220
226
|
PathToImageToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) }
|
221
227
|
end
|
@@ -223,16 +229,41 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
223
229
|
def test_image_tag
|
224
230
|
ImageLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) }
|
225
231
|
end
|
226
|
-
|
232
|
+
|
233
|
+
uses_mocha 'test image tag with windows behaviour' do
|
234
|
+
def test_image_tag_windows_behaviour
|
235
|
+
old_asset_id, ENV["RAILS_ASSET_ID"] = ENV["RAILS_ASSET_ID"], "1"
|
236
|
+
# This simulates the behaviour of File#exist? on windows when testing a file ending in "."
|
237
|
+
# If the file "rails.png" exists, windows will return true when asked if "rails.png." exists (notice trailing ".")
|
238
|
+
# OS X, linux etc will return false in this case.
|
239
|
+
File.stubs(:exist?).with('template/../fixtures/public/images/rails.png.').returns(true)
|
240
|
+
assert_equal '<img alt="Rails" src="/images/rails.png?1" />', image_tag('rails.png')
|
241
|
+
ensure
|
242
|
+
if old_asset_id
|
243
|
+
ENV["RAILS_ASSET_ID"] = old_asset_id
|
244
|
+
else
|
245
|
+
ENV.delete("RAILS_ASSET_ID")
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
227
250
|
def test_timebased_asset_id
|
228
251
|
expected_time = File.stat(File.expand_path(File.dirname(__FILE__) + "/../fixtures/public/images/rails.png")).mtime.to_i.to_s
|
229
252
|
assert_equal %(<img alt="Rails" src="/images/rails.png?#{expected_time}" />), image_tag("rails.png")
|
230
253
|
end
|
231
254
|
|
255
|
+
def test_timebased_asset_id_with_relative_url_root
|
256
|
+
ActionController::Base.relative_url_root = "/collaboration/hieraki"
|
257
|
+
expected_time = File.stat(File.expand_path(File.dirname(__FILE__) + "/../fixtures/public/images/rails.png")).mtime.to_i.to_s
|
258
|
+
assert_equal %(<img alt="Rails" src="#{ActionController::Base.relative_url_root}/images/rails.png?#{expected_time}" />), image_tag("rails.png")
|
259
|
+
ensure
|
260
|
+
ActionController::Base.relative_url_root = ""
|
261
|
+
end
|
262
|
+
|
232
263
|
def test_should_skip_asset_id_on_complete_url
|
233
264
|
assert_equal %(<img alt="Rails" src="http://www.example.com/rails.png" />), image_tag("http://www.example.com/rails.png")
|
234
265
|
end
|
235
|
-
|
266
|
+
|
236
267
|
def test_should_use_preset_asset_id
|
237
268
|
ENV["RAILS_ASSET_ID"] = "4500"
|
238
269
|
assert_equal %(<img alt="Rails" src="/images/rails.png?4500" />), image_tag("rails.png")
|
@@ -254,14 +285,14 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
254
285
|
ENV["RAILS_ASSET_ID"] = ""
|
255
286
|
ActionController::Base.asset_host = 'http://a0.example.com'
|
256
287
|
ActionController::Base.perform_caching = true
|
257
|
-
|
288
|
+
|
258
289
|
assert_dom_equal(
|
259
290
|
%(<script src="http://a0.example.com/javascripts/all.js" type="text/javascript"></script>),
|
260
291
|
javascript_include_tag(:all, :cache => true)
|
261
292
|
)
|
262
293
|
|
263
294
|
assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
|
264
|
-
|
295
|
+
|
265
296
|
assert_dom_equal(
|
266
297
|
%(<script src="http://a0.example.com/javascripts/money.js" type="text/javascript"></script>),
|
267
298
|
javascript_include_tag(:all, :cache => "money")
|
@@ -333,8 +364,9 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
333
364
|
ActionController::Base.asset_host = 'http://a%d.example.com'
|
334
365
|
ActionController::Base.perform_caching = true
|
335
366
|
|
367
|
+
hash = '/javascripts/cache/money.js'.hash % 4
|
336
368
|
assert_dom_equal(
|
337
|
-
%(<script src="http://
|
369
|
+
%(<script src="http://a#{hash}.example.com/javascripts/cache/money.js" type="text/javascript"></script>),
|
338
370
|
javascript_include_tag(:all, :cache => "cache/money")
|
339
371
|
)
|
340
372
|
|
@@ -342,7 +374,28 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
342
374
|
ensure
|
343
375
|
FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'cache', 'money.js'))
|
344
376
|
end
|
345
|
-
|
377
|
+
|
378
|
+
def test_caching_javascript_include_tag_with_all_and_recursive_puts_defaults_at_the_start_of_the_file
|
379
|
+
ENV["RAILS_ASSET_ID"] = ""
|
380
|
+
ActionController::Base.asset_host = 'http://a0.example.com'
|
381
|
+
ActionController::Base.perform_caching = true
|
382
|
+
|
383
|
+
assert_dom_equal(
|
384
|
+
%(<script src="http://a0.example.com/javascripts/combined.js" type="text/javascript"></script>),
|
385
|
+
javascript_include_tag(:all, :cache => "combined", :recursive => true)
|
386
|
+
)
|
387
|
+
|
388
|
+
assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'combined.js'))
|
389
|
+
|
390
|
+
assert_equal(
|
391
|
+
%(// prototype js\n\n// effects js\n\n// dragdrop js\n\n// controls js\n\n// application js\n\n// bank js\n\n// robber js\n\n// subdir js\n\n\n// version.1.0 js),
|
392
|
+
IO.read(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'combined.js'))
|
393
|
+
)
|
394
|
+
|
395
|
+
ensure
|
396
|
+
FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'combined.js'))
|
397
|
+
end
|
398
|
+
|
346
399
|
def test_caching_javascript_include_tag_with_all_puts_defaults_at_the_start_of_the_file
|
347
400
|
ENV["RAILS_ASSET_ID"] = ""
|
348
401
|
ActionController::Base.asset_host = 'http://a0.example.com'
|
@@ -364,22 +417,57 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
364
417
|
FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'combined.js'))
|
365
418
|
end
|
366
419
|
|
420
|
+
def test_caching_javascript_include_tag_with_relative_url_root
|
421
|
+
ENV["RAILS_ASSET_ID"] = ""
|
422
|
+
ActionController::Base.relative_url_root = "/collaboration/hieraki"
|
423
|
+
ActionController::Base.perform_caching = true
|
424
|
+
|
425
|
+
assert_dom_equal(
|
426
|
+
%(<script src="/collaboration/hieraki/javascripts/all.js" type="text/javascript"></script>),
|
427
|
+
javascript_include_tag(:all, :cache => true)
|
428
|
+
)
|
429
|
+
|
430
|
+
assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
|
431
|
+
|
432
|
+
assert_dom_equal(
|
433
|
+
%(<script src="/collaboration/hieraki/javascripts/money.js" type="text/javascript"></script>),
|
434
|
+
javascript_include_tag(:all, :cache => "money")
|
435
|
+
)
|
436
|
+
|
437
|
+
assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
|
438
|
+
|
439
|
+
ensure
|
440
|
+
ActionController::Base.relative_url_root = nil
|
441
|
+
FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
|
442
|
+
FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
|
443
|
+
end
|
444
|
+
|
367
445
|
def test_caching_javascript_include_tag_when_caching_off
|
368
446
|
ENV["RAILS_ASSET_ID"] = ""
|
369
447
|
ActionController::Base.perform_caching = false
|
370
|
-
|
448
|
+
|
371
449
|
assert_dom_equal(
|
372
450
|
%(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>\n<script src="/javascripts/version.1.0.js" type="text/javascript"></script>),
|
373
451
|
javascript_include_tag(:all, :cache => true)
|
374
452
|
)
|
375
453
|
|
454
|
+
assert_dom_equal(
|
455
|
+
%(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>\n<script src="/javascripts/subdir/subdir.js" type="text/javascript"></script>\n<script src="/javascripts/version.1.0.js" type="text/javascript"></script>),
|
456
|
+
javascript_include_tag(:all, :cache => true, :recursive => true)
|
457
|
+
)
|
458
|
+
|
376
459
|
assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
|
377
|
-
|
460
|
+
|
378
461
|
assert_dom_equal(
|
379
462
|
%(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>\n<script src="/javascripts/version.1.0.js" type="text/javascript"></script>),
|
380
463
|
javascript_include_tag(:all, :cache => "money")
|
381
464
|
)
|
382
465
|
|
466
|
+
assert_dom_equal(
|
467
|
+
%(<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>\n<script src="/javascripts/subdir/subdir.js" type="text/javascript"></script>\n<script src="/javascripts/version.1.0.js" type="text/javascript"></script>),
|
468
|
+
javascript_include_tag(:all, :cache => "money", :recursive => true)
|
469
|
+
)
|
470
|
+
|
383
471
|
assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
|
384
472
|
end
|
385
473
|
|
@@ -387,13 +475,14 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
387
475
|
ENV["RAILS_ASSET_ID"] = ""
|
388
476
|
ActionController::Base.asset_host = 'http://a0.example.com'
|
389
477
|
ActionController::Base.perform_caching = true
|
390
|
-
|
478
|
+
|
391
479
|
assert_dom_equal(
|
392
480
|
%(<link href="http://a0.example.com/stylesheets/all.css" media="screen" rel="stylesheet" type="text/css" />),
|
393
481
|
stylesheet_link_tag(:all, :cache => true)
|
394
482
|
)
|
395
483
|
|
396
|
-
|
484
|
+
expected = Dir["#{ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR}/*.css"].map { |p| File.mtime(p) }.max
|
485
|
+
assert_equal expected, File.mtime(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
|
397
486
|
|
398
487
|
assert_dom_equal(
|
399
488
|
%(<link href="http://a0.example.com/stylesheets/money.css" media="screen" rel="stylesheet" type="text/css" />),
|
@@ -423,22 +512,57 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
423
512
|
FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'styles.css'))
|
424
513
|
end
|
425
514
|
|
515
|
+
def test_caching_stylesheet_link_tag_with_relative_url_root
|
516
|
+
ENV["RAILS_ASSET_ID"] = ""
|
517
|
+
ActionController::Base.relative_url_root = "/collaboration/hieraki"
|
518
|
+
ActionController::Base.perform_caching = true
|
519
|
+
|
520
|
+
assert_dom_equal(
|
521
|
+
%(<link href="/collaboration/hieraki/stylesheets/all.css" media="screen" rel="stylesheet" type="text/css" />),
|
522
|
+
stylesheet_link_tag(:all, :cache => true)
|
523
|
+
)
|
524
|
+
|
525
|
+
expected = Dir["#{ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR}/*.css"].map { |p| File.mtime(p) }.max
|
526
|
+
assert_equal expected, File.mtime(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
|
527
|
+
|
528
|
+
assert_dom_equal(
|
529
|
+
%(<link href="/collaboration/hieraki/stylesheets/money.css" media="screen" rel="stylesheet" type="text/css" />),
|
530
|
+
stylesheet_link_tag(:all, :cache => "money")
|
531
|
+
)
|
532
|
+
|
533
|
+
assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
|
534
|
+
ensure
|
535
|
+
ActionController::Base.relative_url_root = nil
|
536
|
+
FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
|
537
|
+
FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
|
538
|
+
end
|
539
|
+
|
426
540
|
def test_caching_stylesheet_include_tag_when_caching_off
|
427
541
|
ENV["RAILS_ASSET_ID"] = ""
|
428
542
|
ActionController::Base.perform_caching = false
|
429
|
-
|
543
|
+
|
430
544
|
assert_dom_equal(
|
431
545
|
%(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/version.1.0.css" media="screen" rel="stylesheet" type="text/css" />),
|
432
546
|
stylesheet_link_tag(:all, :cache => true)
|
433
547
|
)
|
434
548
|
|
549
|
+
assert_dom_equal(
|
550
|
+
%(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/subdir/subdir.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/version.1.0.css" media="screen" rel="stylesheet" type="text/css" />),
|
551
|
+
stylesheet_link_tag(:all, :cache => true, :recursive => true)
|
552
|
+
)
|
553
|
+
|
435
554
|
assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
|
436
|
-
|
555
|
+
|
437
556
|
assert_dom_equal(
|
438
557
|
%(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/version.1.0.css" media="screen" rel="stylesheet" type="text/css" />),
|
439
558
|
stylesheet_link_tag(:all, :cache => "money")
|
440
559
|
)
|
441
560
|
|
561
|
+
assert_dom_equal(
|
562
|
+
%(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/subdir/subdir.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/version.1.0.css" media="screen" rel="stylesheet" type="text/css" />),
|
563
|
+
stylesheet_link_tag(:all, :cache => "money", :recursive => true)
|
564
|
+
)
|
565
|
+
|
442
566
|
assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
|
443
567
|
end
|
444
568
|
end
|
@@ -447,6 +571,8 @@ class AssetTagHelperNonVhostTest < ActionView::TestCase
|
|
447
571
|
tests ActionView::Helpers::AssetTagHelper
|
448
572
|
|
449
573
|
def setup
|
574
|
+
ActionController::Base.relative_url_root = "/collaboration/hieraki"
|
575
|
+
|
450
576
|
@controller = Class.new do
|
451
577
|
attr_accessor :request
|
452
578
|
|
@@ -454,22 +580,22 @@ class AssetTagHelperNonVhostTest < ActionView::TestCase
|
|
454
580
|
"http://www.example.com/collaboration/hieraki"
|
455
581
|
end
|
456
582
|
end.new
|
457
|
-
|
458
|
-
@request = Class.new do
|
459
|
-
def relative_url_root
|
460
|
-
"/collaboration/hieraki"
|
461
|
-
end
|
462
583
|
|
584
|
+
@request = Class.new do
|
463
585
|
def protocol
|
464
586
|
'gopher://'
|
465
587
|
end
|
466
588
|
end.new
|
467
|
-
|
589
|
+
|
468
590
|
@controller.request = @request
|
469
|
-
|
591
|
+
|
470
592
|
ActionView::Helpers::AssetTagHelper::reset_javascript_include_default
|
471
593
|
end
|
472
594
|
|
595
|
+
def teardown
|
596
|
+
ActionController::Base.relative_url_root = nil
|
597
|
+
end
|
598
|
+
|
473
599
|
def test_should_compute_proper_path
|
474
600
|
assert_dom_equal(%(<link href="http://www.example.com/collaboration/hieraki" rel="alternate" title="RSS" type="application/rss+xml" />), auto_discovery_link_tag)
|
475
601
|
assert_dom_equal(%(/collaboration/hieraki/javascripts/xmlhr.js), javascript_path("xmlhr"))
|
@@ -478,7 +604,7 @@ class AssetTagHelperNonVhostTest < ActionView::TestCase
|
|
478
604
|
assert_dom_equal(%(<img alt="Mouse" onmouseover="this.src='/collaboration/hieraki/images/mouse_over.png'" onmouseout="this.src='/collaboration/hieraki/images/mouse.png'" src="/collaboration/hieraki/images/mouse.png" />), image_tag("mouse.png", :mouseover => "/images/mouse_over.png"))
|
479
605
|
assert_dom_equal(%(<img alt="Mouse2" onmouseover="this.src='/collaboration/hieraki/images/mouse_over2.png'" onmouseout="this.src='/collaboration/hieraki/images/mouse2.png'" src="/collaboration/hieraki/images/mouse2.png" />), image_tag("mouse2.png", :mouseover => image_path("mouse_over2.png")))
|
480
606
|
end
|
481
|
-
|
607
|
+
|
482
608
|
def test_should_ignore_relative_root_path_on_complete_url
|
483
609
|
assert_dom_equal(%(http://www.example.com/images/xml.png), image_path("http://www.example.com/images/xml.png"))
|
484
610
|
end
|
@@ -522,4 +648,10 @@ class AssetTagHelperNonVhostTest < ActionView::TestCase
|
|
522
648
|
ensure
|
523
649
|
ActionController::Base.asset_host = nil
|
524
650
|
end
|
651
|
+
|
652
|
+
def test_assert_css_and_js_of_the_same_name_return_correct_extension
|
653
|
+
assert_dom_equal(%(/collaboration/hieraki/javascripts/foo.js), javascript_path("foo"))
|
654
|
+
assert_dom_equal(%(/collaboration/hieraki/stylesheets/foo.css), stylesheet_path("foo"))
|
655
|
+
|
656
|
+
end
|
525
657
|
end
|
@@ -67,6 +67,82 @@ class ScrollsController < ActionController::Base
|
|
67
67
|
entry.content(scroll.body, :type => 'html')
|
68
68
|
entry.tag!('app:edited', Time.now)
|
69
69
|
|
70
|
+
entry.author do |author|
|
71
|
+
author.name("DHH")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
EOT
|
77
|
+
FEEDS["feed_with_overridden_ids"] = <<-EOT
|
78
|
+
atom_feed({:id => 'tag:test.rubyonrails.org,2008:test/'}) do |feed|
|
79
|
+
feed.title("My great blog!")
|
80
|
+
feed.updated((@scrolls.first.created_at))
|
81
|
+
|
82
|
+
for scroll in @scrolls
|
83
|
+
feed.entry(scroll, :id => "tag:test.rubyonrails.org,2008:"+scroll.id.to_s) do |entry|
|
84
|
+
entry.title(scroll.title)
|
85
|
+
entry.content(scroll.body, :type => 'html')
|
86
|
+
entry.tag!('app:edited', Time.now)
|
87
|
+
|
88
|
+
entry.author do |author|
|
89
|
+
author.name("DHH")
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
EOT
|
95
|
+
FEEDS["feed_with_xml_processing_instructions"] = <<-EOT
|
96
|
+
atom_feed(:schema_date => '2008',
|
97
|
+
:instruct => {'xml-stylesheet' => { :href=> 't.css', :type => 'text/css' }}) do |feed|
|
98
|
+
feed.title("My great blog!")
|
99
|
+
feed.updated((@scrolls.first.created_at))
|
100
|
+
|
101
|
+
for scroll in @scrolls
|
102
|
+
feed.entry(scroll) do |entry|
|
103
|
+
entry.title(scroll.title)
|
104
|
+
entry.content(scroll.body, :type => 'html')
|
105
|
+
|
106
|
+
entry.author do |author|
|
107
|
+
author.name("DHH")
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
EOT
|
113
|
+
FEEDS["feed_with_xml_processing_instructions_duplicate_targets"] = <<-EOT
|
114
|
+
atom_feed(:schema_date => '2008',
|
115
|
+
:instruct => {'target1' => [{ :a => '1', :b => '2' }, { :c => '3', :d => '4' }]}) do |feed|
|
116
|
+
feed.title("My great blog!")
|
117
|
+
feed.updated((@scrolls.first.created_at))
|
118
|
+
|
119
|
+
for scroll in @scrolls
|
120
|
+
feed.entry(scroll) do |entry|
|
121
|
+
entry.title(scroll.title)
|
122
|
+
entry.content(scroll.body, :type => 'html')
|
123
|
+
|
124
|
+
entry.author do |author|
|
125
|
+
author.name("DHH")
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
EOT
|
131
|
+
FEEDS["feed_with_xhtml_content"] = <<-'EOT'
|
132
|
+
atom_feed do |feed|
|
133
|
+
feed.title("My great blog!")
|
134
|
+
feed.updated((@scrolls.first.created_at))
|
135
|
+
|
136
|
+
for scroll in @scrolls
|
137
|
+
feed.entry(scroll) do |entry|
|
138
|
+
entry.title(scroll.title)
|
139
|
+
entry.summary(:type => 'xhtml') do |xhtml|
|
140
|
+
xhtml.p "before #{scroll.id}"
|
141
|
+
xhtml.p {xhtml << scroll.body}
|
142
|
+
xhtml.p "after #{scroll.id}"
|
143
|
+
end
|
144
|
+
entry.tag!('app:edited', Time.now)
|
145
|
+
|
70
146
|
entry.author do |author|
|
71
147
|
author.name("DHH")
|
72
148
|
end
|
@@ -79,7 +155,7 @@ class ScrollsController < ActionController::Base
|
|
79
155
|
Scroll.new(1, "1", "Hello One", "Something <i>COOL!</i>", Time.utc(2007, 12, 12, 15), Time.utc(2007, 12, 12, 15)),
|
80
156
|
Scroll.new(2, "2", "Hello Two", "Something Boring", Time.utc(2007, 12, 12, 15)),
|
81
157
|
]
|
82
|
-
|
158
|
+
|
83
159
|
render :inline => FEEDS[params[:id]], :type => :builder
|
84
160
|
end
|
85
161
|
|
@@ -98,21 +174,21 @@ class AtomFeedTest < Test::Unit::TestCase
|
|
98
174
|
|
99
175
|
@request.host = "www.nextangle.com"
|
100
176
|
end
|
101
|
-
|
177
|
+
|
102
178
|
def test_feed_should_use_default_language_if_none_is_given
|
103
179
|
with_restful_routing(:scrolls) do
|
104
180
|
get :index, :id => "defaults"
|
105
181
|
assert_match %r{xml:lang="en-US"}, @response.body
|
106
182
|
end
|
107
183
|
end
|
108
|
-
|
184
|
+
|
109
185
|
def test_feed_should_include_two_entries
|
110
186
|
with_restful_routing(:scrolls) do
|
111
187
|
get :index, :id => "defaults"
|
112
188
|
assert_select "entry", 2
|
113
189
|
end
|
114
190
|
end
|
115
|
-
|
191
|
+
|
116
192
|
def test_entry_should_only_use_published_if_created_at_is_present
|
117
193
|
with_restful_routing(:scrolls) do
|
118
194
|
get :index, :id => "defaults"
|
@@ -167,7 +243,40 @@ class AtomFeedTest < Test::Unit::TestCase
|
|
167
243
|
end
|
168
244
|
end
|
169
245
|
|
170
|
-
|
246
|
+
def test_feed_should_allow_overriding_ids
|
247
|
+
with_restful_routing(:scrolls) do
|
248
|
+
get :index, :id => "feed_with_overridden_ids"
|
249
|
+
assert_select "id", :text => "tag:test.rubyonrails.org,2008:test/"
|
250
|
+
assert_select "entry id", :text => "tag:test.rubyonrails.org,2008:1"
|
251
|
+
assert_select "entry id", :text => "tag:test.rubyonrails.org,2008:2"
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
def test_feed_xml_processing_instructions
|
256
|
+
with_restful_routing(:scrolls) do
|
257
|
+
get :index, :id => 'feed_with_xml_processing_instructions'
|
258
|
+
assert_match %r{<\?xml-stylesheet [^\?]*type="text/css"}, @response.body
|
259
|
+
assert_match %r{<\?xml-stylesheet [^\?]*href="t.css"}, @response.body
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
def test_feed_xml_processing_instructions_duplicate_targets
|
264
|
+
with_restful_routing(:scrolls) do
|
265
|
+
get :index, :id => 'feed_with_xml_processing_instructions_duplicate_targets'
|
266
|
+
assert_match %r{<\?target1 (a="1" b="2"|b="2" a="1")\?>}, @response.body
|
267
|
+
assert_match %r{<\?target1 (c="3" d="4"|d="4" c="3")\?>}, @response.body
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
271
|
+
def test_feed_xhtml
|
272
|
+
with_restful_routing(:scrolls) do
|
273
|
+
get :index, :id => "feed_with_xhtml_content"
|
274
|
+
assert_match %r{xmlns="http://www.w3.org/1999/xhtml"}, @response.body
|
275
|
+
assert_select "summary div p", :text => "Something Boring"
|
276
|
+
assert_select "summary div p", :text => "after 2"
|
277
|
+
end
|
278
|
+
end
|
279
|
+
private
|
171
280
|
def with_restful_routing(resources)
|
172
281
|
with_routing do |set|
|
173
282
|
set.draw do |map|
|