actionpack 1.12.5 → 1.13.0
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 +517 -15
- data/MIT-LICENSE +1 -1
- data/README +18 -20
- data/Rakefile +7 -4
- data/examples/address_book_controller.rb +3 -3
- data/examples/blog_controller.cgi +3 -3
- data/examples/debate_controller.cgi +5 -5
- data/lib/action_controller.rb +2 -2
- data/lib/action_controller/assertions.rb +73 -311
- data/lib/action_controller/{deprecated_assertions.rb → assertions/deprecated_assertions.rb} +32 -8
- data/lib/action_controller/assertions/dom_assertions.rb +25 -0
- data/lib/action_controller/assertions/model_assertions.rb +12 -0
- data/lib/action_controller/assertions/response_assertions.rb +140 -0
- data/lib/action_controller/assertions/routing_assertions.rb +82 -0
- data/lib/action_controller/assertions/selector_assertions.rb +571 -0
- data/lib/action_controller/assertions/tag_assertions.rb +117 -0
- data/lib/action_controller/base.rb +334 -163
- data/lib/action_controller/benchmarking.rb +3 -6
- data/lib/action_controller/caching.rb +83 -22
- data/lib/action_controller/cgi_ext/cgi_ext.rb +0 -7
- data/lib/action_controller/cgi_ext/cgi_methods.rb +167 -173
- data/lib/action_controller/cgi_ext/raw_post_data_fix.rb +43 -22
- data/lib/action_controller/cgi_process.rb +50 -27
- data/lib/action_controller/components.rb +21 -25
- data/lib/action_controller/cookies.rb +10 -9
- data/lib/action_controller/{dependencies.rb → deprecated_dependencies.rb} +9 -27
- data/lib/action_controller/filters.rb +448 -225
- data/lib/action_controller/flash.rb +24 -20
- data/lib/action_controller/helpers.rb +2 -5
- data/lib/action_controller/integration.rb +40 -16
- data/lib/action_controller/layout.rb +11 -8
- data/lib/action_controller/macros/auto_complete.rb +3 -2
- data/lib/action_controller/macros/in_place_editing.rb +3 -2
- data/lib/action_controller/mime_responds.rb +41 -29
- data/lib/action_controller/mime_type.rb +68 -10
- data/lib/action_controller/pagination.rb +4 -3
- data/lib/action_controller/request.rb +22 -14
- data/lib/action_controller/rescue.rb +25 -22
- data/lib/action_controller/resources.rb +302 -0
- data/lib/action_controller/response.rb +20 -2
- data/lib/action_controller/response.rb.rej +17 -0
- data/lib/action_controller/routing.rb +1165 -567
- data/lib/action_controller/scaffolding.rb +30 -31
- data/lib/action_controller/session/active_record_store.rb +2 -0
- data/lib/action_controller/session/drb_store.rb +4 -0
- data/lib/action_controller/session/mem_cache_store.rb +4 -0
- data/lib/action_controller/session_management.rb +6 -9
- data/lib/action_controller/status_codes.rb +89 -0
- data/lib/action_controller/streaming.rb +6 -15
- data/lib/action_controller/templates/rescues/_request_and_response.rhtml +5 -5
- data/lib/action_controller/templates/rescues/diagnostics.rhtml +2 -2
- data/lib/action_controller/templates/rescues/routing_error.rhtml +4 -4
- data/lib/action_controller/templates/rescues/template_error.rhtml +1 -1
- data/lib/action_controller/templates/scaffolds/list.rhtml +1 -1
- data/lib/action_controller/test_process.rb +52 -30
- data/lib/action_controller/url_rewriter.rb +63 -29
- data/lib/action_controller/vendor/html-scanner/html/document.rb +1 -0
- data/lib/action_controller/vendor/html-scanner/html/node.rb +3 -4
- data/lib/action_controller/vendor/html-scanner/html/selector.rb +822 -0
- data/lib/action_controller/verification.rb +22 -11
- data/lib/action_pack.rb +1 -1
- data/lib/action_pack/version.rb +2 -2
- data/lib/action_view.rb +1 -1
- data/lib/action_view/base.rb +46 -43
- data/lib/action_view/compiled_templates.rb +1 -1
- data/lib/action_view/helpers/active_record_helper.rb +54 -17
- data/lib/action_view/helpers/asset_tag_helper.rb +97 -46
- data/lib/action_view/helpers/capture_helper.rb +1 -1
- data/lib/action_view/helpers/date_helper.rb +258 -136
- data/lib/action_view/helpers/debug_helper.rb +1 -1
- data/lib/action_view/helpers/deprecated_helper.rb +34 -0
- data/lib/action_view/helpers/form_helper.rb +75 -35
- data/lib/action_view/helpers/form_options_helper.rb +7 -5
- data/lib/action_view/helpers/form_tag_helper.rb +44 -6
- data/lib/action_view/helpers/java_script_macros_helper.rb +59 -46
- data/lib/action_view/helpers/javascript_helper.rb +71 -10
- data/lib/action_view/helpers/javascripts/controls.js +41 -23
- data/lib/action_view/helpers/javascripts/dragdrop.js +105 -76
- data/lib/action_view/helpers/javascripts/effects.js +293 -163
- data/lib/action_view/helpers/javascripts/prototype.js +897 -389
- data/lib/action_view/helpers/javascripts/prototype.js.rej +561 -0
- data/lib/action_view/helpers/number_helper.rb +111 -65
- data/lib/action_view/helpers/prototype_helper.rb +84 -109
- data/lib/action_view/helpers/scriptaculous_helper.rb +5 -0
- data/lib/action_view/helpers/tag_helper.rb +69 -16
- data/lib/action_view/helpers/text_helper.rb +149 -112
- data/lib/action_view/helpers/url_helper.rb +200 -107
- data/lib/action_view/template_error.rb +66 -42
- data/test/abstract_unit.rb +4 -2
- data/test/active_record_unit.rb +84 -56
- data/test/activerecord/active_record_assertions_test.rb +26 -18
- data/test/activerecord/active_record_store_test.rb +4 -36
- data/test/activerecord/pagination_test.rb +1 -6
- data/test/controller/action_pack_assertions_test.rb +230 -113
- data/test/controller/addresses_render_test.rb +2 -6
- data/test/controller/assert_select_test.rb +576 -0
- data/test/controller/base_test.rb +73 -3
- data/test/controller/caching_test.rb +228 -0
- data/test/controller/capture_test.rb +12 -10
- data/test/controller/cgi_test.rb +89 -12
- data/test/controller/components_test.rb +24 -2
- data/test/controller/content_type_test.rb +139 -0
- data/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
- data/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
- data/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
- data/test/controller/cookie_test.rb +33 -25
- data/test/controller/deprecated_instance_variables_test.rb +48 -0
- data/test/controller/deprecation/deprecated_base_methods_test.rb +60 -0
- data/test/controller/fake_controllers.rb +0 -1
- data/test/controller/filters_test.rb +301 -16
- data/test/controller/flash_test.rb +19 -2
- data/test/controller/helper_test.rb +2 -2
- data/test/controller/integration_test.rb +154 -0
- data/test/controller/layout_test.rb +115 -1
- data/test/controller/mime_responds_test.rb +94 -0
- data/test/controller/mime_type_test.rb +9 -0
- data/test/controller/new_render_test.rb +161 -11
- data/test/controller/raw_post_test.rb +52 -15
- data/test/controller/redirect_test.rb +27 -14
- data/test/controller/render_test.rb +76 -29
- data/test/controller/request_test.rb +55 -4
- data/test/controller/resources_test.rb +274 -0
- data/test/controller/routing_test.rb +1533 -824
- data/test/controller/selector_test.rb +628 -0
- data/test/controller/send_file_test.rb +9 -1
- data/test/controller/session_management_test.rb +51 -0
- data/test/controller/test_test.rb +113 -29
- data/test/controller/url_rewriter_test.rb +86 -17
- data/test/controller/verification_test.rb +19 -17
- data/test/controller/webservice_test.rb +0 -7
- data/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
- data/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
- data/test/fixtures/content_type/render_default_for_rjs.rjs +1 -0
- data/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
- data/test/fixtures/deprecated_instance_variables/_cookies_ivar.rhtml +1 -0
- data/test/fixtures/deprecated_instance_variables/_cookies_method.rhtml +1 -0
- data/test/fixtures/deprecated_instance_variables/_flash_ivar.rhtml +1 -0
- data/test/fixtures/deprecated_instance_variables/_flash_method.rhtml +1 -0
- data/test/fixtures/deprecated_instance_variables/_headers_ivar.rhtml +1 -0
- data/test/fixtures/deprecated_instance_variables/_headers_method.rhtml +1 -0
- data/test/fixtures/deprecated_instance_variables/_params_ivar.rhtml +1 -0
- data/test/fixtures/deprecated_instance_variables/_params_method.rhtml +1 -0
- data/test/fixtures/deprecated_instance_variables/_request_ivar.rhtml +1 -0
- data/test/fixtures/deprecated_instance_variables/_request_method.rhtml +1 -0
- data/test/fixtures/deprecated_instance_variables/_response_ivar.rhtml +1 -0
- data/test/fixtures/deprecated_instance_variables/_response_method.rhtml +1 -0
- data/test/fixtures/deprecated_instance_variables/_session_ivar.rhtml +1 -0
- data/test/fixtures/deprecated_instance_variables/_session_method.rhtml +1 -0
- data/test/fixtures/multipart/binary_file +0 -0
- data/test/fixtures/public/javascripts/application.js +1 -0
- data/test/fixtures/test/_hello.rxml +1 -0
- data/test/fixtures/test/hello_world_container.rxml +3 -0
- data/test/fixtures/topic.rb +2 -2
- data/test/template/active_record_helper_test.rb +83 -12
- data/test/template/asset_tag_helper_test.rb +75 -95
- data/test/template/compiled_templates_test.rb +1 -0
- data/test/template/date_helper_test.rb +873 -181
- data/test/template/deprecated_helper_test.rb +36 -0
- data/test/template/deprecated_instance_variables_test.rb +43 -0
- data/test/template/form_helper_test.rb +77 -1
- data/test/template/form_options_helper_test.rb +4 -0
- data/test/template/form_tag_helper_test.rb +66 -2
- data/test/template/java_script_macros_helper_test.rb +4 -1
- data/test/template/javascript_helper_test.rb +29 -0
- data/test/template/number_helper_test.rb +63 -27
- data/test/template/prototype_helper_test.rb +77 -34
- data/test/template/tag_helper_test.rb +34 -6
- data/test/template/text_helper_test.rb +69 -34
- data/test/template/url_helper_test.rb +168 -16
- data/test/testing_sandbox.rb +7 -22
- metadata +66 -20
- data/filler.txt +0 -50
- data/lib/action_controller/code_generation.rb +0 -235
- data/lib/action_controller/vendor/xml_simple.rb +0 -1019
- data/test/controller/caching_filestore.rb +0 -74
- data/test/fixtures/application_root/app/controllers/a_class_that_contains_a_controller/poorly_placed_controller.rb +0 -7
- data/test/fixtures/application_root/app/controllers/module_that_holds_controllers/nested_controller.rb +0 -3
- data/test/fixtures/application_root/app/models/a_class_that_contains_a_controller.rb +0 -7
- data/test/fixtures/dont_load.rb +0 -3
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../abstract_unit'
|
2
|
+
|
3
|
+
class DeprecatedHelperTest < Test::Unit::TestCase
|
4
|
+
include ActionView::Helpers::JavaScriptHelper
|
5
|
+
include ActionView::Helpers::CaptureHelper
|
6
|
+
|
7
|
+
def test_update_element_function
|
8
|
+
assert_deprecated 'update_element_function' do
|
9
|
+
|
10
|
+
assert_equal %($('myelement').innerHTML = 'blub';\n),
|
11
|
+
update_element_function('myelement', :content => 'blub')
|
12
|
+
assert_equal %($('myelement').innerHTML = 'blub';\n),
|
13
|
+
update_element_function('myelement', :action => :update, :content => 'blub')
|
14
|
+
assert_equal %($('myelement').innerHTML = '';\n),
|
15
|
+
update_element_function('myelement', :action => :empty)
|
16
|
+
assert_equal %(Element.remove('myelement');\n),
|
17
|
+
update_element_function('myelement', :action => :remove)
|
18
|
+
|
19
|
+
assert_equal %(new Insertion.Bottom('myelement','blub');\n),
|
20
|
+
update_element_function('myelement', :position => 'bottom', :content => 'blub')
|
21
|
+
assert_equal %(new Insertion.Bottom('myelement','blub');\n),
|
22
|
+
update_element_function('myelement', :action => :update, :position => :bottom, :content => 'blub')
|
23
|
+
|
24
|
+
_erbout = ""
|
25
|
+
assert_equal %($('myelement').innerHTML = 'test';\n),
|
26
|
+
update_element_function('myelement') { _erbout << "test" }
|
27
|
+
|
28
|
+
_erbout = ""
|
29
|
+
assert_equal %($('myelement').innerHTML = 'blockstuff';\n),
|
30
|
+
update_element_function('myelement', :content => 'paramstuff') { _erbout << "blockstuff" }
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../abstract_unit'
|
2
|
+
|
3
|
+
class DeprecatedViewInstanceVariablesTest < Test::Unit::TestCase
|
4
|
+
class DeprecatedInstanceVariablesController < ActionController::Base
|
5
|
+
self.template_root = "#{File.dirname(__FILE__)}/../fixtures/"
|
6
|
+
|
7
|
+
def self.controller_path; 'deprecated_instance_variables' end
|
8
|
+
|
9
|
+
ActionController::Base::DEPRECATED_INSTANCE_VARIABLES.each do |var|
|
10
|
+
class_eval <<-end_eval
|
11
|
+
def old_#{var}_inline; render :inline => '<%= @#{var}.to_s %>' end
|
12
|
+
def new_#{var}_inline; render :inline => '<%= #{var}.to_s %>' end
|
13
|
+
def old_#{var}_partial; render :partial => '#{var}_ivar' end
|
14
|
+
def new_#{var}_partial; render :partial => '#{var}_method' end
|
15
|
+
end_eval
|
16
|
+
end
|
17
|
+
|
18
|
+
def rescue_action(e) raise e end
|
19
|
+
end
|
20
|
+
|
21
|
+
def setup
|
22
|
+
@request = ActionController::TestRequest.new
|
23
|
+
@response = ActionController::TestResponse.new
|
24
|
+
@controller = DeprecatedInstanceVariablesController.new
|
25
|
+
end
|
26
|
+
|
27
|
+
ActionController::Base::DEPRECATED_INSTANCE_VARIABLES.each do |var|
|
28
|
+
class_eval <<-end_eval, __FILE__, __LINE__
|
29
|
+
def test_old_#{var}_is_deprecated
|
30
|
+
assert_deprecated('@#{var}') { get :old_#{var}_inline }
|
31
|
+
end
|
32
|
+
def test_new_#{var}_isnt_deprecated
|
33
|
+
assert_not_deprecated { get :new_#{var}_inline }
|
34
|
+
end
|
35
|
+
def test_old_#{var}_partial_is_deprecated
|
36
|
+
assert_deprecated('@#{var}') { get :old_#{var}_partial }
|
37
|
+
end
|
38
|
+
def test_new_#{var}_partial_isnt_deprecated
|
39
|
+
assert_not_deprecated { get :new_#{var}_partial }
|
40
|
+
end
|
41
|
+
end_eval
|
42
|
+
end
|
43
|
+
end
|
@@ -120,6 +120,12 @@ class FormHelperTest < Test::Unit::TestCase
|
|
120
120
|
radio_button("post", "secret", "1")
|
121
121
|
)
|
122
122
|
end
|
123
|
+
|
124
|
+
def test_radio_button_respects_passed_in_id
|
125
|
+
assert_dom_equal('<input checked="checked" id="foo" name="post[secret]" type="radio" value="1" />',
|
126
|
+
radio_button("post", "secret", "1", :id=>"foo")
|
127
|
+
)
|
128
|
+
end
|
123
129
|
|
124
130
|
def test_text_area
|
125
131
|
assert_dom_equal(
|
@@ -143,6 +149,13 @@ class FormHelperTest < Test::Unit::TestCase
|
|
143
149
|
)
|
144
150
|
end
|
145
151
|
|
152
|
+
def test_text_area_with_size_option
|
153
|
+
assert_dom_equal(
|
154
|
+
'<textarea cols="183" id="post_body" name="post[body]" rows="820">Back to the hill and over it again!</textarea>',
|
155
|
+
text_area("post", "body", :size => "183x820")
|
156
|
+
)
|
157
|
+
end
|
158
|
+
|
146
159
|
def test_date_selects
|
147
160
|
assert_dom_equal(
|
148
161
|
'<textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea>',
|
@@ -232,6 +245,27 @@ class FormHelperTest < Test::Unit::TestCase
|
|
232
245
|
assert_dom_equal expected, _erbout
|
233
246
|
end
|
234
247
|
|
248
|
+
def test_form_for_with_method
|
249
|
+
_erbout = ''
|
250
|
+
|
251
|
+
form_for(:post, @post, :html => { :id => 'create-post', :method => :put }) do |f|
|
252
|
+
_erbout.concat f.text_field(:title)
|
253
|
+
_erbout.concat f.text_area(:body)
|
254
|
+
_erbout.concat f.check_box(:secret)
|
255
|
+
end
|
256
|
+
|
257
|
+
expected =
|
258
|
+
"<form action='http://www.example.com' id='create-post' method='post'>" +
|
259
|
+
"<div style='margin:0;padding:0'><input name='_method' type='hidden' value='put' /></div>" +
|
260
|
+
"<input name='post[title]' size='30' type='text' id='post_title' value='Hello World' />" +
|
261
|
+
"<textarea name='post[body]' id='post_body' rows='20' cols='40'>Back to the hill and over it again!</textarea>" +
|
262
|
+
"<input name='post[secret]' checked='checked' type='checkbox' id='post_secret' value='1' />" +
|
263
|
+
"<input name='post[secret]' type='hidden' value='0' />" +
|
264
|
+
"</form>"
|
265
|
+
|
266
|
+
assert_dom_equal expected, _erbout
|
267
|
+
end
|
268
|
+
|
235
269
|
def test_form_for_without_object
|
236
270
|
_erbout = ''
|
237
271
|
|
@@ -251,6 +285,24 @@ class FormHelperTest < Test::Unit::TestCase
|
|
251
285
|
|
252
286
|
assert_dom_equal expected, _erbout
|
253
287
|
end
|
288
|
+
|
289
|
+
def test_form_for_with_index
|
290
|
+
_erbout = ''
|
291
|
+
|
292
|
+
form_for("post[]", @post) do |f|
|
293
|
+
_erbout.concat f.text_field(:title)
|
294
|
+
_erbout.concat f.text_area(:body)
|
295
|
+
_erbout.concat f.check_box(:secret)
|
296
|
+
end
|
297
|
+
|
298
|
+
expected =
|
299
|
+
"<form action='http://www.example.com' method='post'>" +
|
300
|
+
"<input name='post[123][title]' size='30' type='text' id='post_title' value='Hello World' />" +
|
301
|
+
"<textarea name='post[123][body]' id='post_body' rows='20' cols='40'>Back to the hill and over it again!</textarea>" +
|
302
|
+
"<input name='post[123][secret]' checked='checked' type='checkbox' id='post_secret' value='1' />" +
|
303
|
+
"<input name='post[123][secret]' type='hidden' value='0' />" +
|
304
|
+
"</form>"
|
305
|
+
end
|
254
306
|
|
255
307
|
def test_fields_for
|
256
308
|
_erbout = ''
|
@@ -344,7 +396,31 @@ class FormHelperTest < Test::Unit::TestCase
|
|
344
396
|
|
345
397
|
assert_dom_equal expected, _erbout
|
346
398
|
end
|
347
|
-
|
399
|
+
|
400
|
+
def test_default_form_builder
|
401
|
+
old_default_form_builder, ActionView::Base.default_form_builder =
|
402
|
+
ActionView::Base.default_form_builder, LabelledFormBuilder
|
403
|
+
|
404
|
+
_erbout = ''
|
405
|
+
form_for(:post, @post) do |f|
|
406
|
+
_erbout.concat f.text_field(:title)
|
407
|
+
_erbout.concat f.text_area(:body)
|
408
|
+
_erbout.concat f.check_box(:secret)
|
409
|
+
end
|
410
|
+
|
411
|
+
expected =
|
412
|
+
"<form action='http://www.example.com' method='post'>" +
|
413
|
+
"<label for='title'>Title:</label> <input name='post[title]' size='30' type='text' id='post_title' value='Hello World' /><br/>" +
|
414
|
+
"<label for='body'>Body:</label> <textarea name='post[body]' id='post_body' rows='20' cols='40'>Back to the hill and over it again!</textarea><br/>" +
|
415
|
+
"<label for='secret'>Secret:</label> <input name='post[secret]' checked='checked' type='checkbox' id='post_secret' value='1' />" +
|
416
|
+
"<input name='post[secret]' type='hidden' value='0' /><br/>" +
|
417
|
+
"</form>"
|
418
|
+
|
419
|
+
assert_dom_equal expected, _erbout
|
420
|
+
ensure
|
421
|
+
ActionView::Base.default_form_builder = old_default_form_builder
|
422
|
+
end
|
423
|
+
|
348
424
|
# Perhaps this test should be moved to prototype helper tests.
|
349
425
|
def test_remote_form_for_with_labelled_builder
|
350
426
|
self.extend ActionView::Helpers::PrototypeHelper
|
@@ -103,6 +103,10 @@ class FormOptionsHelperTest < Test::Unit::TestCase
|
|
103
103
|
"<option value=\"ruby\" selected=\"selected\">ruby</option>\n<option value=\"rubyonrails\">rubyonrails</option>",
|
104
104
|
options_for_select([ "ruby", "rubyonrails" ], "ruby")
|
105
105
|
)
|
106
|
+
assert_dom_equal(
|
107
|
+
%(<option value="ruby" selected="selected">ruby</option>\n<option value="rubyonrails">rubyonrails</option>\n<option value=""></option>),
|
108
|
+
options_for_select([ "ruby", "rubyonrails", nil ], "ruby")
|
109
|
+
)
|
106
110
|
end
|
107
111
|
|
108
112
|
def test_hash_options_for_select
|
@@ -1,10 +1,11 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../abstract_unit'
|
2
2
|
|
3
3
|
class FormTagHelperTest < Test::Unit::TestCase
|
4
|
-
|
5
4
|
include ActionView::Helpers::UrlHelper
|
6
5
|
include ActionView::Helpers::TagHelper
|
7
6
|
include ActionView::Helpers::FormTagHelper
|
7
|
+
include ActionView::Helpers::TextHelper
|
8
|
+
include ActionView::Helpers::CaptureHelper
|
8
9
|
|
9
10
|
def setup
|
10
11
|
@controller = Class.new do
|
@@ -33,6 +34,28 @@ class FormTagHelperTest < Test::Unit::TestCase
|
|
33
34
|
assert_dom_equal expected, actual
|
34
35
|
end
|
35
36
|
|
37
|
+
def test_form_tag_with_method
|
38
|
+
actual = form_tag({}, { :method => :put })
|
39
|
+
expected = %(<form action="http://www.example.com" method="post"><div style='margin:0;padding:0'><input type="hidden" name="_method" value="put" /></div>)
|
40
|
+
assert_dom_equal expected, actual
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_form_tag_with_block
|
44
|
+
_erbout = ''
|
45
|
+
form_tag("http://example.com") { _erbout.concat "Hello world!" }
|
46
|
+
|
47
|
+
expected = %(<form action="http://www.example.com" method="post">Hello world!</form>)
|
48
|
+
assert_dom_equal expected, _erbout
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_form_tag_with_block_and_method
|
52
|
+
_erbout = ''
|
53
|
+
form_tag("http://example.com", :method => :put) { _erbout.concat "Hello world!" }
|
54
|
+
|
55
|
+
expected = %(<form action="http://www.example.com" method="post"><div style='margin:0;padding:0'><input type="hidden" name="_method" value="put" /></div>Hello world!</form>)
|
56
|
+
assert_dom_equal expected, _erbout
|
57
|
+
end
|
58
|
+
|
36
59
|
def test_hidden_field_tag
|
37
60
|
actual = hidden_field_tag "id", 3
|
38
61
|
expected = %(<input id="id" name="id" type="hidden" value="3" />)
|
@@ -47,8 +70,21 @@ class FormTagHelperTest < Test::Unit::TestCase
|
|
47
70
|
|
48
71
|
def test_radio_button_tag
|
49
72
|
actual = radio_button_tag "people", "david"
|
50
|
-
expected = %(<input id="
|
73
|
+
expected = %(<input id="people_david" name="people" type="radio" value="david" />)
|
74
|
+
assert_dom_equal expected, actual
|
75
|
+
|
76
|
+
actual = radio_button_tag("num_people", 5)
|
77
|
+
expected = %(<input id="num_people_5" name="num_people" type="radio" value="5" />)
|
78
|
+
assert_dom_equal expected, actual
|
79
|
+
|
80
|
+
actual = radio_button_tag("gender", "m") + radio_button_tag("gender", "f")
|
81
|
+
expected = %(<input id="gender_m" name="gender" type="radio" value="m" /><input id="gender_f" name="gender" type="radio" value="f" />)
|
82
|
+
assert_dom_equal expected, actual
|
83
|
+
|
84
|
+
actual = radio_button_tag("opinion", "-1") + radio_button_tag("opinion", "1")
|
85
|
+
expected = %(<input id="opinion_-1" name="opinion" type="radio" value="-1" /><input id="opinion_1" name="opinion" type="radio" value="1" />)
|
51
86
|
assert_dom_equal expected, actual
|
87
|
+
|
52
88
|
end
|
53
89
|
|
54
90
|
def test_select_tag
|
@@ -106,3 +142,31 @@ class FormTagHelperTest < Test::Unit::TestCase
|
|
106
142
|
end
|
107
143
|
end
|
108
144
|
|
145
|
+
class DeprecatedFormTagHelperTest < Test::Unit::TestCase
|
146
|
+
include ActionView::Helpers::UrlHelper
|
147
|
+
include ActionView::Helpers::TagHelper
|
148
|
+
include ActionView::Helpers::FormTagHelper
|
149
|
+
include ActionView::Helpers::TextHelper
|
150
|
+
include ActionView::Helpers::CaptureHelper
|
151
|
+
|
152
|
+
def setup
|
153
|
+
@controller = Class.new do
|
154
|
+
def url_for(options, *parameters_for_method_reference)
|
155
|
+
"http://www.example.com"
|
156
|
+
end
|
157
|
+
end
|
158
|
+
@controller = @controller.new
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_start_form_tag_deprecation
|
162
|
+
assert_deprecated /start_form_tag/ do
|
163
|
+
start_form_tag
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def test_end_form_tag_deprecation
|
168
|
+
assert_deprecated /end_form_tag/ do
|
169
|
+
end_form_tag
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
@@ -38,6 +38,8 @@ class JavaScriptMacrosHelperTest < Test::Unit::TestCase
|
|
38
38
|
assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nvar some_input_auto_completer = new Ajax.Autocompleter('some_input', 'some_input_auto_complete', 'http://www.example.com/autocomplete', {afterUpdateElement:function(element,value){alert('You have chosen: '+value)}})\n//]]>\n</script>),
|
39
39
|
auto_complete_field("some_input", :url => { :action => "autocomplete" },
|
40
40
|
:after_update_element => "function(element,value){alert('You have chosen: '+value)}");
|
41
|
+
assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nvar some_input_auto_completer = new Ajax.Autocompleter('some_input', 'some_input_auto_complete', 'http://www.example.com/autocomplete', {paramName:'huidriwusch'})\n//]]>\n</script>),
|
42
|
+
auto_complete_field("some_input", :url => { :action => "autocomplete" }, :param_name => 'huidriwusch');
|
41
43
|
end
|
42
44
|
|
43
45
|
def test_auto_complete_result
|
@@ -53,8 +55,9 @@ class JavaScriptMacrosHelperTest < Test::Unit::TestCase
|
|
53
55
|
end
|
54
56
|
|
55
57
|
def test_text_field_with_auto_complete
|
56
|
-
assert_match
|
58
|
+
assert_match %(<style type="text/css">),
|
57
59
|
text_field_with_auto_complete(:message, :recipient)
|
60
|
+
|
58
61
|
assert_dom_equal %(<input id=\"message_recipient\" name=\"message[recipient]\" size=\"30\" type=\"text\" /><div class=\"auto_complete\" id=\"message_recipient_auto_complete\"></div><script type=\"text/javascript\">\n//<![CDATA[\nvar message_recipient_auto_completer = new Ajax.Autocompleter('message_recipient', 'message_recipient_auto_complete', 'http://www.example.com/auto_complete_for_message_recipient', {})\n//]]>\n</script>),
|
59
62
|
text_field_with_auto_complete(:message, :recipient, {}, :skip_style => true)
|
60
63
|
end
|
@@ -19,6 +19,7 @@ class JavaScriptHelperTest < Test::Unit::TestCase
|
|
19
19
|
|
20
20
|
def test_escape_javascript
|
21
21
|
assert_equal %(This \\"thing\\" is really\\n netos\\'), escape_javascript(%(This "thing" is really\n netos'))
|
22
|
+
assert_equal %(backslash\\\\test), escape_javascript( %(backslash\\test) )
|
22
23
|
end
|
23
24
|
|
24
25
|
def test_link_to_function
|
@@ -31,8 +32,36 @@ class JavaScriptHelperTest < Test::Unit::TestCase
|
|
31
32
|
link_to_function("Greeting", "alert('Hello world!')", :onclick => "confirm('Sanity!')")
|
32
33
|
end
|
33
34
|
|
35
|
+
def test_link_to_function_with_rjs_block
|
36
|
+
html = link_to_function( "Greet me!" ) do |page|
|
37
|
+
page.replace_html 'header', "<h1>Greetings</h1>"
|
38
|
+
end
|
39
|
+
assert_dom_equal %(<a href="#" onclick="Element.update("header", "<h1>Greetings</h1>");; return false;">Greet me!</a>), html
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_link_to_function_with_rjs_block_and_options
|
43
|
+
html = link_to_function( "Greet me!", :class => "updater" ) do |page|
|
44
|
+
page.replace_html 'header', "<h1>Greetings</h1>"
|
45
|
+
end
|
46
|
+
assert_dom_equal %(<a href="#" class="updater" onclick="Element.update("header", "<h1>Greetings</h1>");; return false;">Greet me!</a>), html
|
47
|
+
end
|
48
|
+
|
34
49
|
def test_button_to_function
|
35
50
|
assert_dom_equal %(<input type="button" onclick="alert('Hello world!');" value="Greeting" />),
|
36
51
|
button_to_function("Greeting", "alert('Hello world!')")
|
37
52
|
end
|
53
|
+
|
54
|
+
def test_button_to_function_with_rjs_block
|
55
|
+
html = button_to_function( "Greet me!" ) do |page|
|
56
|
+
page.replace_html 'header', "<h1>Greetings</h1>"
|
57
|
+
end
|
58
|
+
assert_dom_equal %(<input type="button" onclick="Element.update("header", "<h1>Greetings</h1>");;" value="Greet me!" />), html
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_button_to_function_with_rjs_block_and_options
|
62
|
+
html = button_to_function( "Greet me!", :class => "greeter" ) do |page|
|
63
|
+
page.replace_html 'header', "<h1>Greetings</h1>"
|
64
|
+
end
|
65
|
+
assert_dom_equal %(<input type="button" class="greeter" onclick="Element.update("header", "<h1>Greetings</h1>");;" value="Greet me!" />), html
|
66
|
+
end
|
38
67
|
end
|
@@ -1,18 +1,22 @@
|
|
1
|
-
require '
|
1
|
+
require File.dirname(__FILE__) + '/../abstract_unit'
|
2
2
|
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/number_helper'
|
3
|
-
require File.dirname(__FILE__) + '/../../../activesupport/lib/active_support/core_ext/hash' # for stringify_keys
|
4
|
-
require File.dirname(__FILE__) + '/../../../activesupport/lib/active_support/core_ext/numeric' # for human_size
|
5
3
|
|
6
4
|
class NumberHelperTest < Test::Unit::TestCase
|
7
5
|
include ActionView::Helpers::NumberHelper
|
8
|
-
include ActiveSupport::CoreExtensions::Hash
|
9
6
|
|
10
7
|
def test_number_to_phone
|
11
|
-
assert_equal("
|
12
|
-
assert_equal("(
|
13
|
-
assert_equal("
|
14
|
-
assert_equal("(
|
15
|
-
assert_equal("
|
8
|
+
assert_equal("800-555-1212", number_to_phone(8005551212))
|
9
|
+
assert_equal("(800) 555-1212", number_to_phone(8005551212, {:area_code => true}))
|
10
|
+
assert_equal("800 555 1212", number_to_phone(8005551212, {:delimiter => " "}))
|
11
|
+
assert_equal("(800) 555-1212 x 123", number_to_phone(8005551212, {:area_code => true, :extension => 123}))
|
12
|
+
assert_equal("800-555-1212", number_to_phone(8005551212, :extension => " "))
|
13
|
+
assert_equal("800-555-1212", number_to_phone("8005551212"))
|
14
|
+
assert_equal("+1-800-555-1212", number_to_phone(8005551212, :country_code => 1))
|
15
|
+
assert_equal("+18005551212", number_to_phone(8005551212, :country_code => 1, :delimiter => ''))
|
16
|
+
assert_equal("22-555-1212", number_to_phone(225551212))
|
17
|
+
assert_equal("+45-22-555-1212", number_to_phone(225551212, :country_code => 45))
|
18
|
+
assert_equal("x", number_to_phone("x"))
|
19
|
+
assert_nil number_to_phone(nil)
|
16
20
|
end
|
17
21
|
|
18
22
|
def test_number_to_currency
|
@@ -21,36 +25,68 @@ class NumberHelperTest < Test::Unit::TestCase
|
|
21
25
|
assert_equal("$1,234,567,890", number_to_currency(1234567890.50, {:precision => 0}))
|
22
26
|
assert_equal("$1,234,567,890.5", number_to_currency(1234567890.50, {:precision => 1}))
|
23
27
|
assert_equal("£1234567890,50", number_to_currency(1234567890.50, {:unit => "£", :separator => ",", :delimiter => ""}))
|
28
|
+
assert_equal("$1,234,567,890.50", number_to_currency("1234567890.50"))
|
29
|
+
assert_equal("$x.", number_to_currency("x"))
|
30
|
+
assert_nil number_to_currency(nil)
|
24
31
|
end
|
25
32
|
|
26
33
|
def test_number_to_percentage
|
27
34
|
assert_equal("100.000%", number_to_percentage(100))
|
28
35
|
assert_equal("100%", number_to_percentage(100, {:precision => 0}))
|
29
36
|
assert_equal("302.06%", number_to_percentage(302.0574, {:precision => 2}))
|
37
|
+
assert_equal("100.000%", number_to_percentage("100"))
|
38
|
+
assert_equal("x%", number_to_percentage("x"))
|
39
|
+
assert_nil number_to_percentage(nil)
|
30
40
|
end
|
31
41
|
|
32
42
|
def test_number_with_delimiter
|
33
43
|
assert_equal("12,345,678", number_with_delimiter(12345678))
|
44
|
+
assert_equal("0", number_with_delimiter(0))
|
45
|
+
assert_equal("123", number_with_delimiter(123))
|
46
|
+
assert_equal("123,456", number_with_delimiter(123456))
|
47
|
+
assert_equal("123,456.78", number_with_delimiter(123456.78))
|
48
|
+
assert_equal("123,456.789", number_with_delimiter(123456.789))
|
49
|
+
assert_equal("123,456.78901", number_with_delimiter(123456.78901))
|
50
|
+
assert_equal("123,456,789.78901", number_with_delimiter(123456789.78901))
|
51
|
+
assert_equal("0.78901", number_with_delimiter(0.78901))
|
52
|
+
assert_equal("123,456.78", number_with_delimiter("123456.78"))
|
53
|
+
assert_equal("x", number_with_delimiter("x"))
|
54
|
+
assert_nil number_with_delimiter(nil)
|
34
55
|
end
|
35
|
-
|
36
|
-
def test_number_to_human_size
|
37
|
-
assert_equal '0 Bytes', human_size(0)
|
38
|
-
assert_equal '3 Bytes', human_size(3.14159265)
|
39
|
-
assert_equal '123 Bytes', human_size(123.0)
|
40
|
-
assert_equal '123 Bytes', human_size(123)
|
41
|
-
assert_equal '1.2 KB', human_size(1234)
|
42
|
-
assert_equal '12.1 KB', human_size(12345)
|
43
|
-
assert_equal '1.2 MB', human_size(1234567)
|
44
|
-
assert_equal '1.1 GB', human_size(1234567890)
|
45
|
-
assert_equal '1.1 TB', human_size(1234567890123)
|
46
|
-
assert_equal '444 KB', human_size(444.kilobytes)
|
47
|
-
assert_equal '1023 MB', human_size(1023.megabytes)
|
48
|
-
assert_equal '3 TB', human_size(3.terabytes)
|
49
|
-
assert_nil human_size('x')
|
50
|
-
assert_nil human_size(nil)
|
51
|
-
end
|
52
|
-
|
56
|
+
|
53
57
|
def test_number_with_precision
|
54
58
|
assert_equal("111.235", number_with_precision(111.2346))
|
59
|
+
assert_equal("111.23", number_with_precision(111.2346, 2))
|
60
|
+
assert_equal("111.00", number_with_precision(111, 2))
|
61
|
+
assert_equal("111.235", number_with_precision("111.2346"))
|
62
|
+
assert_equal("x", number_with_precision("x"))
|
63
|
+
assert_nil number_with_precision(nil)
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_number_to_human_size
|
67
|
+
assert_equal '0 Bytes', number_to_human_size(0)
|
68
|
+
assert_equal '1 Byte', number_to_human_size(1)
|
69
|
+
assert_equal '3 Bytes', number_to_human_size(3.14159265)
|
70
|
+
assert_equal '123 Bytes', number_to_human_size(123.0)
|
71
|
+
assert_equal '123 Bytes', number_to_human_size(123)
|
72
|
+
assert_equal '1.2 KB', number_to_human_size(1234)
|
73
|
+
assert_equal '12.1 KB', number_to_human_size(12345)
|
74
|
+
assert_equal '1.2 MB', number_to_human_size(1234567)
|
75
|
+
assert_equal '1.1 GB', number_to_human_size(1234567890)
|
76
|
+
assert_equal '1.1 TB', number_to_human_size(1234567890123)
|
77
|
+
assert_equal '444 KB', number_to_human_size(444.kilobytes)
|
78
|
+
assert_equal '1023 MB', number_to_human_size(1023.megabytes)
|
79
|
+
assert_equal '3 TB', number_to_human_size(3.terabytes)
|
80
|
+
assert_equal '1.18 MB', number_to_human_size(1234567, 2)
|
81
|
+
assert_equal '3 Bytes', number_to_human_size(3.14159265, 4)
|
82
|
+
assert_equal("123 Bytes", number_to_human_size("123"))
|
83
|
+
assert_nil number_to_human_size('x')
|
84
|
+
assert_nil number_to_human_size(nil)
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_human_size_alias_is_deprecated
|
88
|
+
assert_deprecated 'human_size' do
|
89
|
+
assert_equal '0 Bytes', human_size(0)
|
90
|
+
end
|
55
91
|
end
|
56
92
|
end
|