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
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'abstract_unit'
|
2
|
+
require 'controller/fake_models'
|
3
|
+
|
4
|
+
uses_mocha 'TestTemplateRecompilation' do
|
5
|
+
class CompiledTemplatesTest < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@compiled_templates = ActionView::Base::CompiledTemplates
|
8
|
+
@compiled_templates.instance_methods.each do |m|
|
9
|
+
@compiled_templates.send(:remove_method, m) if m =~ /^_run_/
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_template_gets_compiled
|
14
|
+
assert_equal 0, @compiled_templates.instance_methods.size
|
15
|
+
assert_deprecated do
|
16
|
+
assert_equal "Hello world!", render("test/hello_world.erb")
|
17
|
+
end
|
18
|
+
assert_equal 1, @compiled_templates.instance_methods.size
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_template_gets_recompiled_when_using_different_keys_in_local_assigns
|
22
|
+
assert_equal 0, @compiled_templates.instance_methods.size
|
23
|
+
assert_deprecated do
|
24
|
+
assert_equal "Hello world!", render("test/hello_world.erb")
|
25
|
+
assert_equal "Hello world!", render("test/hello_world.erb", {:foo => "bar"})
|
26
|
+
end
|
27
|
+
assert_equal 2, @compiled_templates.instance_methods.size
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_compiled_template_will_not_be_recompiled_when_rendered_with_identical_local_assigns
|
31
|
+
assert_equal 0, @compiled_templates.instance_methods.size
|
32
|
+
assert_deprecated do
|
33
|
+
assert_equal "Hello world!", render("test/hello_world.erb")
|
34
|
+
ActionView::Template.any_instance.expects(:compile!).never
|
35
|
+
assert_equal "Hello world!", render("test/hello_world.erb")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_compiled_template_will_always_be_recompiled_when_eager_loaded_templates_is_off
|
40
|
+
ActionView::PathSet::Path.expects(:eager_load_templates?).times(4).returns(false)
|
41
|
+
assert_equal 0, @compiled_templates.instance_methods.size
|
42
|
+
|
43
|
+
assert_deprecated do
|
44
|
+
assert_equal "Hello world!", render("#{FIXTURE_LOAD_PATH}/test/hello_world.erb")
|
45
|
+
end
|
46
|
+
|
47
|
+
ActionView::Template.any_instance.expects(:compile!).times(3)
|
48
|
+
assert_deprecated do
|
49
|
+
3.times { assert_equal "Hello world!", render("#{FIXTURE_LOAD_PATH}/test/hello_world.erb") }
|
50
|
+
end
|
51
|
+
assert_equal 1, @compiled_templates.instance_methods.size
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
def render(*args)
|
56
|
+
ActionView::Base.new(ActionController::Base.view_paths, {}).render(*args)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
require 'abstract_unit'
|
2
|
+
|
3
|
+
class DateHelperDistanceOfTimeInWordsI18nTests < Test::Unit::TestCase
|
4
|
+
include ActionView::Helpers::DateHelper
|
5
|
+
attr_reader :request
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@from = Time.mktime(2004, 6, 6, 21, 45, 0)
|
9
|
+
end
|
10
|
+
|
11
|
+
uses_mocha 'date_helper_distance_of_time_in_words_i18n_test' do
|
12
|
+
# distance_of_time_in_words
|
13
|
+
|
14
|
+
def test_distance_of_time_in_words_calls_i18n
|
15
|
+
{ # with include_seconds
|
16
|
+
[2.seconds, true] => [:'less_than_x_seconds', 5],
|
17
|
+
[9.seconds, true] => [:'less_than_x_seconds', 10],
|
18
|
+
[19.seconds, true] => [:'less_than_x_seconds', 20],
|
19
|
+
[30.seconds, true] => [:'half_a_minute', nil],
|
20
|
+
[59.seconds, true] => [:'less_than_x_minutes', 1],
|
21
|
+
[60.seconds, true] => [:'x_minutes', 1],
|
22
|
+
|
23
|
+
# without include_seconds
|
24
|
+
[29.seconds, false] => [:'less_than_x_minutes', 1],
|
25
|
+
[60.seconds, false] => [:'x_minutes', 1],
|
26
|
+
[44.minutes, false] => [:'x_minutes', 44],
|
27
|
+
[61.minutes, false] => [:'about_x_hours', 1],
|
28
|
+
[24.hours, false] => [:'x_days', 1],
|
29
|
+
[30.days, false] => [:'about_x_months', 1],
|
30
|
+
[60.days, false] => [:'x_months', 2],
|
31
|
+
[1.year, false] => [:'about_x_years', 1],
|
32
|
+
[3.years, false] => [:'over_x_years', 3]
|
33
|
+
|
34
|
+
}.each do |passed, expected|
|
35
|
+
assert_distance_of_time_in_words_translates_key passed, expected
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def assert_distance_of_time_in_words_translates_key(passed, expected)
|
40
|
+
diff, include_seconds = *passed
|
41
|
+
key, count = *expected
|
42
|
+
to = @from + diff
|
43
|
+
|
44
|
+
options = {:locale => 'en', :scope => :'datetime.distance_in_words'}
|
45
|
+
options[:count] = count if count
|
46
|
+
|
47
|
+
I18n.expects(:t).with(key, options)
|
48
|
+
distance_of_time_in_words(@from, to, include_seconds, :locale => 'en')
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_distance_of_time_pluralizations
|
52
|
+
{ [:'less_than_x_seconds', 1] => 'less than 1 second',
|
53
|
+
[:'less_than_x_seconds', 2] => 'less than 2 seconds',
|
54
|
+
[:'less_than_x_minutes', 1] => 'less than a minute',
|
55
|
+
[:'less_than_x_minutes', 2] => 'less than 2 minutes',
|
56
|
+
[:'x_minutes', 1] => '1 minute',
|
57
|
+
[:'x_minutes', 2] => '2 minutes',
|
58
|
+
[:'about_x_hours', 1] => 'about 1 hour',
|
59
|
+
[:'about_x_hours', 2] => 'about 2 hours',
|
60
|
+
[:'x_days', 1] => '1 day',
|
61
|
+
[:'x_days', 2] => '2 days',
|
62
|
+
[:'about_x_years', 1] => 'about 1 year',
|
63
|
+
[:'about_x_years', 2] => 'about 2 years',
|
64
|
+
[:'over_x_years', 1] => 'over 1 year',
|
65
|
+
[:'over_x_years', 2] => 'over 2 years'
|
66
|
+
|
67
|
+
}.each do |args, expected|
|
68
|
+
key, count = *args
|
69
|
+
assert_equal expected, I18n.t(key, :count => count, :scope => 'datetime.distance_in_words')
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
class DateHelperSelectTagsI18nTests < Test::Unit::TestCase
|
76
|
+
include ActionView::Helpers::DateHelper
|
77
|
+
attr_reader :request
|
78
|
+
|
79
|
+
uses_mocha 'date_helper_select_tags_i18n_tests' do
|
80
|
+
def setup
|
81
|
+
I18n.stubs(:translate).with(:'date.month_names', :locale => 'en').returns Date::MONTHNAMES
|
82
|
+
end
|
83
|
+
|
84
|
+
# select_month
|
85
|
+
|
86
|
+
def test_select_month_given_use_month_names_option_does_not_translate_monthnames
|
87
|
+
I18n.expects(:translate).never
|
88
|
+
select_month(8, :locale => 'en', :use_month_names => Date::MONTHNAMES)
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_select_month_translates_monthnames
|
92
|
+
I18n.expects(:translate).with(:'date.month_names', :locale => 'en').returns Date::MONTHNAMES
|
93
|
+
select_month(8, :locale => 'en')
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_select_month_given_use_short_month_option_translates_abbr_monthnames
|
97
|
+
I18n.expects(:translate).with(:'date.abbr_month_names', :locale => 'en').returns Date::ABBR_MONTHNAMES
|
98
|
+
select_month(8, :locale => 'en', :use_short_month => true)
|
99
|
+
end
|
100
|
+
|
101
|
+
# date_or_time_select
|
102
|
+
|
103
|
+
def test_date_or_time_select_given_an_order_options_does_not_translate_order
|
104
|
+
I18n.expects(:translate).never
|
105
|
+
datetime_select('post', 'updated_at', :order => [:year, :month, :day], :locale => 'en')
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_date_or_time_select_given_no_order_options_translates_order
|
109
|
+
I18n.expects(:translate).with(:'date.order', :locale => 'en').returns [:year, :month, :day]
|
110
|
+
datetime_select('post', 'updated_at', :locale => 'en')
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
@@ -17,7 +17,7 @@ class DateHelperTest < ActionView::TestCase
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
def assert_distance_of_time_in_words(from, to=nil)
|
22
22
|
to ||= from
|
23
23
|
|
@@ -86,13 +86,13 @@ class DateHelperTest < ActionView::TestCase
|
|
86
86
|
from = Time.mktime(2004, 6, 6, 21, 45, 0)
|
87
87
|
assert_distance_of_time_in_words(from)
|
88
88
|
end
|
89
|
-
|
89
|
+
|
90
90
|
def test_distance_in_words_with_time_zones
|
91
91
|
from = Time.mktime(2004, 6, 6, 21, 45, 0)
|
92
92
|
assert_distance_of_time_in_words(from.in_time_zone('Alaska'))
|
93
93
|
assert_distance_of_time_in_words(from.in_time_zone('Hawaii'))
|
94
94
|
end
|
95
|
-
|
95
|
+
|
96
96
|
def test_distance_in_words_with_different_time_zones
|
97
97
|
from = Time.mktime(2004, 6, 6, 21, 45, 0)
|
98
98
|
assert_distance_of_time_in_words(
|
@@ -100,13 +100,13 @@ class DateHelperTest < ActionView::TestCase
|
|
100
100
|
from.in_time_zone('Hawaii')
|
101
101
|
)
|
102
102
|
end
|
103
|
-
|
103
|
+
|
104
104
|
def test_distance_in_words_with_dates
|
105
105
|
start_date = Date.new 1975, 1, 31
|
106
106
|
end_date = Date.new 1977, 1, 31
|
107
107
|
assert_equal("over 2 years", distance_of_time_in_words(start_date, end_date))
|
108
108
|
end
|
109
|
-
|
109
|
+
|
110
110
|
def test_distance_in_words_with_integers
|
111
111
|
assert_equal "less than a minute", distance_of_time_in_words(59)
|
112
112
|
assert_equal "about 1 hour", distance_of_time_in_words(60*60)
|
@@ -557,11 +557,8 @@ class DateHelperTest < ActionView::TestCase
|
|
557
557
|
end
|
558
558
|
|
559
559
|
def test_select_date_with_incomplete_order
|
560
|
-
|
561
|
-
expected
|
562
|
-
expected << "</select>\n"
|
563
|
-
|
564
|
-
expected << %(<select id="date_first_year" name="date[first][year]">\n)
|
560
|
+
# NOTE: modified this test because of minimal API change
|
561
|
+
expected = %(<select id="date_first_year" name="date[first][year]">\n)
|
565
562
|
expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
|
566
563
|
expected << "</select>\n"
|
567
564
|
|
@@ -569,6 +566,10 @@ class DateHelperTest < ActionView::TestCase
|
|
569
566
|
expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
|
570
567
|
expected << "</select>\n"
|
571
568
|
|
569
|
+
expected << %(<select id="date_first_day" name="date[first][day]">\n)
|
570
|
+
expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
|
571
|
+
expected << "</select>\n"
|
572
|
+
|
572
573
|
assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), :start_year => 2003, :end_year => 2005, :prefix => "date[first]", :order => [:day])
|
573
574
|
end
|
574
575
|
|
@@ -757,6 +758,26 @@ class DateHelperTest < ActionView::TestCase
|
|
757
758
|
assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), {:start_year => 2003, :end_year => 2005, :prefix => "date[first]"}, :class => "selector")
|
758
759
|
end
|
759
760
|
|
761
|
+
def test_select_date_with_separator
|
762
|
+
expected = %(<select id="date_first_year" name="date[first][year]">\n)
|
763
|
+
expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
|
764
|
+
expected << "</select>\n"
|
765
|
+
|
766
|
+
expected << " / "
|
767
|
+
|
768
|
+
expected << %(<select id="date_first_month" name="date[first][month]">\n)
|
769
|
+
expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
|
770
|
+
expected << "</select>\n"
|
771
|
+
|
772
|
+
expected << " / "
|
773
|
+
|
774
|
+
expected << %(<select id="date_first_day" name="date[first][day]">\n)
|
775
|
+
expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
|
776
|
+
expected << "</select>\n"
|
777
|
+
|
778
|
+
assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), { :date_separator => " / ", :start_year => 2003, :end_year => 2005, :prefix => "date[first]"})
|
779
|
+
end
|
780
|
+
|
760
781
|
def test_select_datetime
|
761
782
|
expected = %(<select id="date_first_year" name="date[first][year]">\n)
|
762
783
|
expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
|
@@ -857,6 +878,42 @@ class DateHelperTest < ActionView::TestCase
|
|
857
878
|
assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), {:start_year => 2003, :end_year => 2005, :prefix => "date[first]"}, :class => 'selector')
|
858
879
|
end
|
859
880
|
|
881
|
+
def test_select_datetime_with_all_separators
|
882
|
+
expected = %(<select id="date_first_year" name="date[first][year]" class="selector">\n)
|
883
|
+
expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
|
884
|
+
expected << "</select>\n"
|
885
|
+
|
886
|
+
expected << "/"
|
887
|
+
|
888
|
+
expected << %(<select id="date_first_month" name="date[first][month]" class="selector">\n)
|
889
|
+
expected << %(<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
|
890
|
+
expected << "</select>\n"
|
891
|
+
|
892
|
+
expected << "/"
|
893
|
+
|
894
|
+
expected << %(<select id="date_first_day" name="date[first][day]" class="selector">\n)
|
895
|
+
expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
|
896
|
+
expected << "</select>\n"
|
897
|
+
|
898
|
+
expected << "—"
|
899
|
+
|
900
|
+
expected << %(<select id="date_first_hour" name="date[first][hour]" class="selector">\n)
|
901
|
+
expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
|
902
|
+
expected << "</select>\n"
|
903
|
+
|
904
|
+
expected << ":"
|
905
|
+
|
906
|
+
expected << %(<select id="date_first_minute" name="date[first][minute]" class="selector">\n)
|
907
|
+
expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
|
908
|
+
expected << "</select>\n"
|
909
|
+
|
910
|
+
assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), { :datetime_separator => "—", :date_separator => "/", :time_separator => ":", :start_year => 2003, :end_year => 2005, :prefix => "date[first]"}, :class => 'selector')
|
911
|
+
end
|
912
|
+
|
913
|
+
def test_select_datetime_should_work_with_date
|
914
|
+
assert_nothing_raised { select_datetime(Date.today) }
|
915
|
+
end
|
916
|
+
|
860
917
|
def test_select_time
|
861
918
|
expected = %(<select id="date_hour" name="date[hour]">\n)
|
862
919
|
expected << %(<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n)
|
@@ -933,32 +990,9 @@ class DateHelperTest < ActionView::TestCase
|
|
933
990
|
assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector')
|
934
991
|
assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), {:include_seconds => false}, :class => 'selector')
|
935
992
|
end
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
time = stub(:year => 2004, :month => 6, :day => 15, :hour => 16, :min => 35, :sec => 0)
|
940
|
-
Time.expects(:current).returns time
|
941
|
-
expects(:select_date).with(time, anything, anything).returns('')
|
942
|
-
expects(:select_time).with(time, anything, anything).returns('')
|
943
|
-
select_datetime
|
944
|
-
end
|
945
|
-
|
946
|
-
def test_select_time_uses_time_current_as_default
|
947
|
-
time = stub(:year => 2004, :month => 6, :day => 15, :hour => 16, :min => 35, :sec => 0)
|
948
|
-
Time.expects(:current).returns time
|
949
|
-
expects(:select_hour).with(time, anything, anything).returns('')
|
950
|
-
expects(:select_minute).with(time, anything, anything).returns('')
|
951
|
-
select_time
|
952
|
-
end
|
953
|
-
|
954
|
-
def test_select_date_uses_date_current_as_default
|
955
|
-
date = stub(:year => 2004, :month => 6, :day => 15)
|
956
|
-
Date.expects(:current).returns date
|
957
|
-
expects(:select_year).with(date, anything, anything).returns('')
|
958
|
-
expects(:select_month).with(date, anything, anything).returns('')
|
959
|
-
expects(:select_day).with(date, anything, anything).returns('')
|
960
|
-
select_date
|
961
|
-
end
|
993
|
+
|
994
|
+
def test_select_time_should_work_with_date
|
995
|
+
assert_nothing_raised { select_time(Date.today) }
|
962
996
|
end
|
963
997
|
|
964
998
|
def test_date_select
|
@@ -1002,17 +1036,15 @@ class DateHelperTest < ActionView::TestCase
|
|
1002
1036
|
@post = Post.new
|
1003
1037
|
@post.written_on = Date.new(2004, 6, 15)
|
1004
1038
|
|
1005
|
-
_erbout = ''
|
1006
|
-
|
1007
1039
|
fields_for :post, @post do |f|
|
1008
|
-
|
1040
|
+
concat f.date_select(:written_on)
|
1009
1041
|
end
|
1010
1042
|
|
1011
1043
|
expected = "<select id='post_written_on_1i' name='post[written_on(1i)]'>\n<option value='1999'>1999</option>\n<option value='2000'>2000</option>\n<option value='2001'>2001</option>\n<option value='2002'>2002</option>\n<option value='2003'>2003</option>\n<option selected='selected' value='2004'>2004</option>\n<option value='2005'>2005</option>\n<option value='2006'>2006</option>\n<option value='2007'>2007</option>\n<option value='2008'>2008</option>\n<option value='2009'>2009</option>\n</select>\n"
|
1012
1044
|
expected << "<select id='post_written_on_2i' name='post[written_on(2i)]'>\n<option value='1'>January</option>\n<option value='2'>February</option>\n<option value='3'>March</option>\n<option value='4'>April</option>\n<option value='5'>May</option>\n<option selected='selected' value='6'>June</option>\n<option value='7'>July</option>\n<option value='8'>August</option>\n<option value='9'>September</option>\n<option value='10'>October</option>\n<option value='11'>November</option>\n<option value='12'>December</option>\n</select>\n"
|
1013
1045
|
expected << "<select id='post_written_on_3i' name='post[written_on(3i)]'>\n<option value='1'>1</option>\n<option value='2'>2</option>\n<option value='3'>3</option>\n<option value='4'>4</option>\n<option value='5'>5</option>\n<option value='6'>6</option>\n<option value='7'>7</option>\n<option value='8'>8</option>\n<option value='9'>9</option>\n<option value='10'>10</option>\n<option value='11'>11</option>\n<option value='12'>12</option>\n<option value='13'>13</option>\n<option value='14'>14</option>\n<option selected='selected' value='15'>15</option>\n<option value='16'>16</option>\n<option value='17'>17</option>\n<option value='18'>18</option>\n<option value='19'>19</option>\n<option value='20'>20</option>\n<option value='21'>21</option>\n<option value='22'>22</option>\n<option value='23'>23</option>\n<option value='24'>24</option>\n<option value='25'>25</option>\n<option value='26'>26</option>\n<option value='27'>27</option>\n<option value='28'>28</option>\n<option value='29'>29</option>\n<option value='30'>30</option>\n<option value='31'>31</option>\n</select>\n"
|
1014
1046
|
|
1015
|
-
assert_dom_equal(expected,
|
1047
|
+
assert_dom_equal(expected, output_buffer)
|
1016
1048
|
end
|
1017
1049
|
|
1018
1050
|
def test_date_select_with_index
|
@@ -1117,6 +1149,46 @@ class DateHelperTest < ActionView::TestCase
|
|
1117
1149
|
|
1118
1150
|
assert_dom_equal expected, date_select("post", "written_on", :include_blank => true)
|
1119
1151
|
end
|
1152
|
+
|
1153
|
+
def test_date_select_with_nil_and_blank_and_order
|
1154
|
+
@post = Post.new
|
1155
|
+
|
1156
|
+
start_year = Time.now.year-5
|
1157
|
+
end_year = Time.now.year+5
|
1158
|
+
|
1159
|
+
expected = '<input name="post[written_on(3i)]" type="hidden" id="post_written_on_3i"/>' + "\n"
|
1160
|
+
expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
|
1161
|
+
expected << "<option value=\"\"></option>\n"
|
1162
|
+
start_year.upto(end_year) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
|
1163
|
+
expected << "</select>\n"
|
1164
|
+
|
1165
|
+
expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
|
1166
|
+
expected << "<option value=\"\"></option>\n"
|
1167
|
+
1.upto(12) { |i| expected << %(<option value="#{i}">#{Date::MONTHNAMES[i]}</option>\n) }
|
1168
|
+
expected << "</select>\n"
|
1169
|
+
|
1170
|
+
assert_dom_equal expected, date_select("post", "written_on", :order=>[:year, :month], :include_blank=>true)
|
1171
|
+
end
|
1172
|
+
|
1173
|
+
def test_date_select_with_nil_and_blank_and_order
|
1174
|
+
@post = Post.new
|
1175
|
+
|
1176
|
+
start_year = Time.now.year-5
|
1177
|
+
end_year = Time.now.year+5
|
1178
|
+
|
1179
|
+
expected = '<input name="post[written_on(3i)]" type="hidden" id="post_written_on_3i"/>' + "\n"
|
1180
|
+
expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
|
1181
|
+
expected << "<option value=\"\"></option>\n"
|
1182
|
+
start_year.upto(end_year) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
|
1183
|
+
expected << "</select>\n"
|
1184
|
+
|
1185
|
+
expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
|
1186
|
+
expected << "<option value=\"\"></option>\n"
|
1187
|
+
1.upto(12) { |i| expected << %(<option value="#{i}">#{Date::MONTHNAMES[i]}</option>\n) }
|
1188
|
+
expected << "</select>\n"
|
1189
|
+
|
1190
|
+
assert_dom_equal expected, date_select("post", "written_on", :order=>[:year, :month], :include_blank=>true)
|
1191
|
+
end
|
1120
1192
|
|
1121
1193
|
def test_date_select_cant_override_discard_hour
|
1122
1194
|
@post = Post.new
|
@@ -1161,10 +1233,8 @@ class DateHelperTest < ActionView::TestCase
|
|
1161
1233
|
@post = Post.new
|
1162
1234
|
@post.written_on = Date.new(2004, 6, 15)
|
1163
1235
|
|
1164
|
-
_erbout = ''
|
1165
|
-
|
1166
1236
|
fields_for :post, @post do |f|
|
1167
|
-
|
1237
|
+
concat f.date_select(:written_on, {}, :class => 'selector')
|
1168
1238
|
end
|
1169
1239
|
|
1170
1240
|
expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]" class="selector">\n}
|
@@ -1180,7 +1250,31 @@ class DateHelperTest < ActionView::TestCase
|
|
1180
1250
|
|
1181
1251
|
expected << "</select>\n"
|
1182
1252
|
|
1183
|
-
assert_dom_equal expected,
|
1253
|
+
assert_dom_equal expected, output_buffer
|
1254
|
+
end
|
1255
|
+
|
1256
|
+
def test_date_select_with_separator
|
1257
|
+
@post = Post.new
|
1258
|
+
@post.written_on = Date.new(2004, 6, 15)
|
1259
|
+
|
1260
|
+
expected = %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
|
1261
|
+
expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
|
1262
|
+
expected << "</select>\n"
|
1263
|
+
|
1264
|
+
expected << " / "
|
1265
|
+
|
1266
|
+
expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
|
1267
|
+
expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
|
1268
|
+
expected << "</select>\n"
|
1269
|
+
|
1270
|
+
expected << " / "
|
1271
|
+
|
1272
|
+
expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
|
1273
|
+
expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
|
1274
|
+
|
1275
|
+
expected << "</select>\n"
|
1276
|
+
|
1277
|
+
assert_dom_equal expected, date_select("post", "written_on", { :date_separator => " / " })
|
1184
1278
|
end
|
1185
1279
|
|
1186
1280
|
def test_time_select
|
@@ -1192,16 +1286,31 @@ class DateHelperTest < ActionView::TestCase
|
|
1192
1286
|
expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
|
1193
1287
|
|
1194
1288
|
expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
|
1195
|
-
0.upto(23) { |i| expected << %(<option value="#{
|
1289
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1196
1290
|
expected << "</select>\n"
|
1197
1291
|
expected << " : "
|
1198
1292
|
expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
|
1199
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1293
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1200
1294
|
expected << "</select>\n"
|
1201
1295
|
|
1202
1296
|
assert_dom_equal expected, time_select("post", "written_on")
|
1203
1297
|
end
|
1204
1298
|
|
1299
|
+
def test_time_select_without_date_hidden_fields
|
1300
|
+
@post = Post.new
|
1301
|
+
@post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
|
1302
|
+
|
1303
|
+
expected = %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
|
1304
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1305
|
+
expected << "</select>\n"
|
1306
|
+
expected << " : "
|
1307
|
+
expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
|
1308
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1309
|
+
expected << "</select>\n"
|
1310
|
+
|
1311
|
+
assert_dom_equal expected, time_select("post", "written_on", :ignore_date => true)
|
1312
|
+
end
|
1313
|
+
|
1205
1314
|
def test_time_select_with_seconds
|
1206
1315
|
@post = Post.new
|
1207
1316
|
@post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
|
@@ -1211,15 +1320,15 @@ class DateHelperTest < ActionView::TestCase
|
|
1211
1320
|
expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
|
1212
1321
|
|
1213
1322
|
expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
|
1214
|
-
0.upto(23) { |i| expected << %(<option value="#{
|
1323
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1215
1324
|
expected << "</select>\n"
|
1216
1325
|
expected << " : "
|
1217
1326
|
expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
|
1218
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1327
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1219
1328
|
expected << "</select>\n"
|
1220
1329
|
expected << " : "
|
1221
1330
|
expected << %(<select id="post_written_on_6i" name="post[written_on(6i)]">\n)
|
1222
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1331
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 35}>#{sprintf("%02d", i)}</option>\n) }
|
1223
1332
|
expected << "</select>\n"
|
1224
1333
|
|
1225
1334
|
assert_dom_equal expected, time_select("post", "written_on", :include_seconds => true)
|
@@ -1234,11 +1343,11 @@ class DateHelperTest < ActionView::TestCase
|
|
1234
1343
|
expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
|
1235
1344
|
|
1236
1345
|
expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]" class="selector">\n)
|
1237
|
-
0.upto(23) { |i| expected << %(<option value="#{
|
1346
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1238
1347
|
expected << "</select>\n"
|
1239
1348
|
expected << " : "
|
1240
1349
|
expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]" class="selector">\n)
|
1241
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1350
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1242
1351
|
expected << "</select>\n"
|
1243
1352
|
|
1244
1353
|
assert_dom_equal expected, time_select("post", "written_on", {}, :class => 'selector')
|
@@ -1248,10 +1357,8 @@ class DateHelperTest < ActionView::TestCase
|
|
1248
1357
|
@post = Post.new
|
1249
1358
|
@post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
|
1250
1359
|
|
1251
|
-
_erbout = ''
|
1252
|
-
|
1253
1360
|
fields_for :post, @post do |f|
|
1254
|
-
|
1361
|
+
concat f.time_select(:written_on, {}, :class => 'selector')
|
1255
1362
|
end
|
1256
1363
|
|
1257
1364
|
expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
|
@@ -1259,14 +1366,41 @@ class DateHelperTest < ActionView::TestCase
|
|
1259
1366
|
expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
|
1260
1367
|
|
1261
1368
|
expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]" class="selector">\n)
|
1262
|
-
0.upto(23) { |i| expected << %(<option value="#{
|
1369
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1263
1370
|
expected << "</select>\n"
|
1264
1371
|
expected << " : "
|
1265
1372
|
expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]" class="selector">\n)
|
1266
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1373
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1374
|
+
expected << "</select>\n"
|
1375
|
+
|
1376
|
+
assert_dom_equal expected, output_buffer
|
1377
|
+
end
|
1378
|
+
|
1379
|
+
def test_time_select_with_separator
|
1380
|
+
@post = Post.new
|
1381
|
+
@post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
|
1382
|
+
|
1383
|
+
expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
|
1384
|
+
expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
|
1385
|
+
expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
|
1386
|
+
|
1387
|
+
expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
|
1388
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1389
|
+
expected << "</select>\n"
|
1390
|
+
|
1391
|
+
expected << " - "
|
1392
|
+
|
1393
|
+
expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
|
1394
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1267
1395
|
expected << "</select>\n"
|
1268
1396
|
|
1269
|
-
|
1397
|
+
expected << " - "
|
1398
|
+
|
1399
|
+
expected << %(<select id="post_written_on_6i" name="post[written_on(6i)]">\n)
|
1400
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 35}>#{sprintf("%02d", i)}</option>\n) }
|
1401
|
+
expected << "</select>\n"
|
1402
|
+
|
1403
|
+
assert_dom_equal expected, time_select("post", "written_on", { :time_separator => " - ", :include_seconds => true })
|
1270
1404
|
end
|
1271
1405
|
|
1272
1406
|
def test_datetime_select
|
@@ -1297,7 +1431,7 @@ class DateHelperTest < ActionView::TestCase
|
|
1297
1431
|
|
1298
1432
|
assert_dom_equal expected, datetime_select("post", "updated_at")
|
1299
1433
|
end
|
1300
|
-
|
1434
|
+
|
1301
1435
|
uses_mocha 'TestDatetimeSelectDefaultsToTimeZoneNowWhenConfigTimeZoneIsSet' do
|
1302
1436
|
def test_datetime_select_defaults_to_time_zone_now_when_config_time_zone_is_set
|
1303
1437
|
time = stub(:year => 2004, :month => 6, :day => 15, :hour => 16, :min => 35, :sec => 0)
|
@@ -1338,10 +1472,8 @@ class DateHelperTest < ActionView::TestCase
|
|
1338
1472
|
@post = Post.new
|
1339
1473
|
@post.updated_at = Time.local(2004, 6, 15, 16, 35)
|
1340
1474
|
|
1341
|
-
_erbout = ''
|
1342
|
-
|
1343
1475
|
fields_for :post, @post do |f|
|
1344
|
-
|
1476
|
+
concat f.datetime_select(:updated_at, {}, :class => 'selector')
|
1345
1477
|
end
|
1346
1478
|
|
1347
1479
|
expected = "<select id='post_updated_at_1i' name='post[updated_at(1i)]' class='selector'>\n<option value='1999'>1999</option>\n<option value='2000'>2000</option>\n<option value='2001'>2001</option>\n<option value='2002'>2002</option>\n<option value='2003'>2003</option>\n<option selected='selected' value='2004'>2004</option>\n<option value='2005'>2005</option>\n<option value='2006'>2006</option>\n<option value='2007'>2007</option>\n<option value='2008'>2008</option>\n<option value='2009'>2009</option>\n</select>\n"
|
@@ -1350,7 +1482,48 @@ class DateHelperTest < ActionView::TestCase
|
|
1350
1482
|
expected << " — <select id='post_updated_at_4i' name='post[updated_at(4i)]' class='selector'>\n<option value='00'>00</option>\n<option value='01'>01</option>\n<option value='02'>02</option>\n<option value='03'>03</option>\n<option value='04'>04</option>\n<option value='05'>05</option>\n<option value='06'>06</option>\n<option value='07'>07</option>\n<option value='08'>08</option>\n<option value='09'>09</option>\n<option value='10'>10</option>\n<option value='11'>11</option>\n<option value='12'>12</option>\n<option value='13'>13</option>\n<option value='14'>14</option>\n<option value='15'>15</option>\n<option selected='selected' value='16'>16</option>\n<option value='17'>17</option>\n<option value='18'>18</option>\n<option value='19'>19</option>\n<option value='20'>20</option>\n<option value='21'>21</option>\n<option value='22'>22</option>\n<option value='23'>23</option>\n</select>\n"
|
1351
1483
|
expected << " : <select id='post_updated_at_5i' name='post[updated_at(5i)]' class='selector'>\n<option value='00'>00</option>\n<option value='01'>01</option>\n<option value='02'>02</option>\n<option value='03'>03</option>\n<option value='04'>04</option>\n<option value='05'>05</option>\n<option value='06'>06</option>\n<option value='07'>07</option>\n<option value='08'>08</option>\n<option value='09'>09</option>\n<option value='10'>10</option>\n<option value='11'>11</option>\n<option value='12'>12</option>\n<option value='13'>13</option>\n<option value='14'>14</option>\n<option value='15'>15</option>\n<option value='16'>16</option>\n<option value='17'>17</option>\n<option value='18'>18</option>\n<option value='19'>19</option>\n<option value='20'>20</option>\n<option value='21'>21</option>\n<option value='22'>22</option>\n<option value='23'>23</option>\n<option value='24'>24</option>\n<option value='25'>25</option>\n<option value='26'>26</option>\n<option value='27'>27</option>\n<option value='28'>28</option>\n<option value='29'>29</option>\n<option value='30'>30</option>\n<option value='31'>31</option>\n<option value='32'>32</option>\n<option value='33'>33</option>\n<option value='34'>34</option>\n<option selected='selected' value='35'>35</option>\n<option value='36'>36</option>\n<option value='37'>37</option>\n<option value='38'>38</option>\n<option value='39'>39</option>\n<option value='40'>40</option>\n<option value='41'>41</option>\n<option value='42'>42</option>\n<option value='43'>43</option>\n<option value='44'>44</option>\n<option value='45'>45</option>\n<option value='46'>46</option>\n<option value='47'>47</option>\n<option value='48'>48</option>\n<option value='49'>49</option>\n<option value='50'>50</option>\n<option value='51'>51</option>\n<option value='52'>52</option>\n<option value='53'>53</option>\n<option value='54'>54</option>\n<option value='55'>55</option>\n<option value='56'>56</option>\n<option value='57'>57</option>\n<option value='58'>58</option>\n<option value='59'>59</option>\n</select>\n"
|
1352
1484
|
|
1353
|
-
assert_dom_equal expected,
|
1485
|
+
assert_dom_equal expected, output_buffer
|
1486
|
+
end
|
1487
|
+
|
1488
|
+
def test_datetime_select_with_separators
|
1489
|
+
@post = Post.new
|
1490
|
+
@post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
|
1491
|
+
|
1492
|
+
expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
|
1493
|
+
expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
|
1494
|
+
expected << "</select>\n"
|
1495
|
+
|
1496
|
+
expected << " / "
|
1497
|
+
|
1498
|
+
expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
|
1499
|
+
expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
|
1500
|
+
expected << "</select>\n"
|
1501
|
+
|
1502
|
+
expected << " / "
|
1503
|
+
|
1504
|
+
expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
|
1505
|
+
expected << %{<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n}
|
1506
|
+
expected << "</select>\n"
|
1507
|
+
|
1508
|
+
expected << " , "
|
1509
|
+
|
1510
|
+
expected << %(<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n)
|
1511
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1512
|
+
expected << "</select>\n"
|
1513
|
+
|
1514
|
+
expected << " - "
|
1515
|
+
|
1516
|
+
expected << %(<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n)
|
1517
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1518
|
+
expected << "</select>\n"
|
1519
|
+
|
1520
|
+
expected << " - "
|
1521
|
+
|
1522
|
+
expected << %(<select id="post_updated_at_6i" name="post[updated_at(6i)]">\n)
|
1523
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 35}>#{sprintf("%02d", i)}</option>\n) }
|
1524
|
+
expected << "</select>\n"
|
1525
|
+
|
1526
|
+
assert_dom_equal expected, datetime_select("post", "updated_at", { :date_separator => " / ", :datetime_separator => " , ", :time_separator => " - ", :include_seconds => true })
|
1354
1527
|
end
|
1355
1528
|
|
1356
1529
|
def test_date_select_with_zero_value_and_no_start_year
|
@@ -1363,8 +1536,7 @@ class DateHelperTest < ActionView::TestCase
|
|
1363
1536
|
expected << "</select>\n"
|
1364
1537
|
|
1365
1538
|
expected << %(<select id="date_first_day" name="date[first][day]">\n)
|
1366
|
-
expected <<
|
1367
|
-
%(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
|
1539
|
+
expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
|
1368
1540
|
expected << "</select>\n"
|
1369
1541
|
|
1370
1542
|
assert_dom_equal expected, select_date(0, :end_year => Date.today.year+1, :prefix => "date[first]")
|
@@ -1381,8 +1553,7 @@ class DateHelperTest < ActionView::TestCase
|
|
1381
1553
|
expected << "</select>\n"
|
1382
1554
|
|
1383
1555
|
expected << %(<select id="date_first_day" name="date[first][day]">\n)
|
1384
|
-
expected <<
|
1385
|
-
%(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
|
1556
|
+
expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
|
1386
1557
|
expected << "</select>\n"
|
1387
1558
|
|
1388
1559
|
assert_dom_equal expected, select_date(0, :start_year => 2003, :prefix => "date[first]")
|
@@ -1398,8 +1569,7 @@ class DateHelperTest < ActionView::TestCase
|
|
1398
1569
|
expected << "</select>\n"
|
1399
1570
|
|
1400
1571
|
expected << %(<select id="date_first_day" name="date[first][day]">\n)
|
1401
|
-
expected <<
|
1402
|
-
%(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
|
1572
|
+
expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
|
1403
1573
|
expected << "</select>\n"
|
1404
1574
|
|
1405
1575
|
assert_dom_equal expected, select_date(0, :prefix => "date[first]")
|
@@ -1415,8 +1585,7 @@ class DateHelperTest < ActionView::TestCase
|
|
1415
1585
|
expected << "</select>\n"
|
1416
1586
|
|
1417
1587
|
expected << %(<select id="date_first_day" name="date[first][day]">\n)
|
1418
|
-
expected <<
|
1419
|
-
%(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
|
1588
|
+
expected << %(<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
|
1420
1589
|
expected << "</select>\n"
|
1421
1590
|
|
1422
1591
|
assert_dom_equal expected, select_date(nil, :prefix => "date[first]")
|
@@ -1523,15 +1692,15 @@ class DateHelperTest < ActionView::TestCase
|
|
1523
1692
|
expected << " — "
|
1524
1693
|
|
1525
1694
|
expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
|
1526
|
-
0.upto(23) { |i| expected << %(<option value="#{
|
1695
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1527
1696
|
expected << "</select>\n"
|
1528
1697
|
expected << " : "
|
1529
1698
|
expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
|
1530
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1699
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1531
1700
|
expected << "</select>\n"
|
1532
1701
|
expected << " : "
|
1533
1702
|
expected << %{<select id="post_updated_at_6i" name="post[updated_at(6i)]">\n}
|
1534
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1703
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 35}>#{sprintf("%02d", i)}</option>\n) }
|
1535
1704
|
expected << "</select>\n"
|
1536
1705
|
|
1537
1706
|
assert_dom_equal expected, datetime_select("post", "updated_at", :include_seconds => true)
|
@@ -1552,11 +1721,11 @@ class DateHelperTest < ActionView::TestCase
|
|
1552
1721
|
expected << " — "
|
1553
1722
|
|
1554
1723
|
expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
|
1555
|
-
0.upto(23) { |i| expected << %(<option value="#{
|
1724
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1556
1725
|
expected << "</select>\n"
|
1557
1726
|
expected << " : "
|
1558
1727
|
expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
|
1559
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1728
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1560
1729
|
expected << "</select>\n"
|
1561
1730
|
|
1562
1731
|
assert_dom_equal expected, datetime_select("post", "updated_at", :discard_year => true)
|
@@ -1575,11 +1744,11 @@ class DateHelperTest < ActionView::TestCase
|
|
1575
1744
|
expected << " — "
|
1576
1745
|
|
1577
1746
|
expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
|
1578
|
-
0.upto(23) { |i| expected << %(<option value="#{
|
1747
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1579
1748
|
expected << "</select>\n"
|
1580
1749
|
expected << " : "
|
1581
1750
|
expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
|
1582
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1751
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1583
1752
|
expected << "</select>\n"
|
1584
1753
|
|
1585
1754
|
assert_dom_equal expected, datetime_select("post", "updated_at", :discard_month => true)
|
@@ -1594,11 +1763,11 @@ class DateHelperTest < ActionView::TestCase
|
|
1594
1763
|
expected << %{<input type="hidden" id="post_updated_at_3i" name="post[updated_at(3i)]" value="15" />\n}
|
1595
1764
|
|
1596
1765
|
expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
|
1597
|
-
0.upto(23) { |i| expected << %(<option value="#{
|
1766
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1598
1767
|
expected << "</select>\n"
|
1599
1768
|
expected << " : "
|
1600
1769
|
expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
|
1601
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1770
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1602
1771
|
expected << "</select>\n"
|
1603
1772
|
|
1604
1773
|
assert_dom_equal expected, datetime_select("post", "updated_at", :discard_year => true, :discard_month => true)
|
@@ -1621,11 +1790,11 @@ class DateHelperTest < ActionView::TestCase
|
|
1621
1790
|
expected << " — "
|
1622
1791
|
|
1623
1792
|
expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
|
1624
|
-
0.upto(23) { |i| expected << %(<option value="#{
|
1793
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1625
1794
|
expected << "</select>\n"
|
1626
1795
|
expected << " : "
|
1627
1796
|
expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
|
1628
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1797
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1629
1798
|
expected << "</select>\n"
|
1630
1799
|
|
1631
1800
|
assert_dom_equal expected, datetime_select("post", "updated_at", :order => [:minute, :day, :hour, :month, :year, :second])
|
@@ -1646,11 +1815,11 @@ class DateHelperTest < ActionView::TestCase
|
|
1646
1815
|
expected << " — "
|
1647
1816
|
|
1648
1817
|
expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
|
1649
|
-
0.upto(23) { |i| expected << %(<option value="#{
|
1818
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1650
1819
|
expected << "</select>\n"
|
1651
1820
|
expected << " : "
|
1652
1821
|
expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
|
1653
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1822
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1654
1823
|
expected << "</select>\n"
|
1655
1824
|
|
1656
1825
|
assert_dom_equal expected, datetime_select("post", "updated_at", :order => [:day, :month])
|
@@ -1673,11 +1842,11 @@ class DateHelperTest < ActionView::TestCase
|
|
1673
1842
|
expected << " — "
|
1674
1843
|
|
1675
1844
|
expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
|
1676
|
-
0.upto(23) { |i| expected << %(<option value="#{
|
1845
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
1677
1846
|
expected << "</select>\n"
|
1678
1847
|
expected << " : "
|
1679
1848
|
expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
|
1680
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1849
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
1681
1850
|
expected << "</select>\n"
|
1682
1851
|
|
1683
1852
|
assert_dom_equal expected, datetime_select("post", "updated_at", :default => Time.local(2006, 9, 19, 15, 16, 35))
|
@@ -1720,11 +1889,11 @@ class DateHelperTest < ActionView::TestCase
|
|
1720
1889
|
expected << " — "
|
1721
1890
|
|
1722
1891
|
expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
|
1723
|
-
0.upto(23) { |i| expected << %(<option value="#{
|
1892
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 9}>#{sprintf("%02d", i)}</option>\n) }
|
1724
1893
|
expected << "</select>\n"
|
1725
1894
|
expected << " : "
|
1726
1895
|
expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
|
1727
|
-
0.upto(59) { |i| expected << %(<option value="#{
|
1896
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 42}>#{sprintf("%02d", i)}</option>\n) }
|
1728
1897
|
expected << "</select>\n"
|
1729
1898
|
|
1730
1899
|
assert_dom_equal expected, datetime_select("post", "updated_at", :default => { :month => 10, :minute => 42, :hour => 9 })
|
@@ -1759,33 +1928,158 @@ class DateHelperTest < ActionView::TestCase
|
|
1759
1928
|
assert_dom_equal expected, datetime_select("post", "updated_at", {}, :class => 'selector')
|
1760
1929
|
end
|
1761
1930
|
|
1762
|
-
|
1763
|
-
|
1764
|
-
|
1765
|
-
|
1766
|
-
|
1767
|
-
|
1768
|
-
|
1769
|
-
|
1770
|
-
|
1771
|
-
|
1772
|
-
|
1773
|
-
|
1774
|
-
|
1775
|
-
|
1776
|
-
|
1777
|
-
|
1778
|
-
|
1779
|
-
|
1780
|
-
|
1781
|
-
|
1931
|
+
def test_date_select_should_not_change_passed_options_hash
|
1932
|
+
@post = Post.new
|
1933
|
+
@post.updated_at = Time.local(2008, 7, 16, 23, 30)
|
1934
|
+
|
1935
|
+
options = {
|
1936
|
+
:order => [ :year, :month, :day ],
|
1937
|
+
:default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
|
1938
|
+
:discard_type => false,
|
1939
|
+
:include_blank => false,
|
1940
|
+
:ignore_date => false,
|
1941
|
+
:include_seconds => true
|
1942
|
+
}
|
1943
|
+
date_select(@post, :updated_at, options)
|
1944
|
+
|
1945
|
+
# note: the literal hash is intentional to show that the actual options hash isn't modified
|
1946
|
+
# don't change this!
|
1947
|
+
assert_equal({
|
1948
|
+
:order => [ :year, :month, :day ],
|
1949
|
+
:default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
|
1950
|
+
:discard_type => false,
|
1951
|
+
:include_blank => false,
|
1952
|
+
:ignore_date => false,
|
1953
|
+
:include_seconds => true
|
1954
|
+
}, options)
|
1955
|
+
end
|
1956
|
+
|
1957
|
+
def test_datetime_select_should_not_change_passed_options_hash
|
1958
|
+
@post = Post.new
|
1959
|
+
@post.updated_at = Time.local(2008, 7, 16, 23, 30)
|
1960
|
+
|
1961
|
+
options = {
|
1962
|
+
:order => [ :year, :month, :day ],
|
1963
|
+
:default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
|
1964
|
+
:discard_type => false,
|
1965
|
+
:include_blank => false,
|
1966
|
+
:ignore_date => false,
|
1967
|
+
:include_seconds => true
|
1968
|
+
}
|
1969
|
+
datetime_select(@post, :updated_at, options)
|
1970
|
+
|
1971
|
+
# note: the literal hash is intentional to show that the actual options hash isn't modified
|
1972
|
+
# don't change this!
|
1973
|
+
assert_equal({
|
1974
|
+
:order => [ :year, :month, :day ],
|
1975
|
+
:default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
|
1976
|
+
:discard_type => false,
|
1977
|
+
:include_blank => false,
|
1978
|
+
:ignore_date => false,
|
1979
|
+
:include_seconds => true
|
1980
|
+
}, options)
|
1981
|
+
end
|
1982
|
+
|
1983
|
+
def test_time_select_should_not_change_passed_options_hash
|
1984
|
+
@post = Post.new
|
1985
|
+
@post.updated_at = Time.local(2008, 7, 16, 23, 30)
|
1986
|
+
|
1987
|
+
options = {
|
1988
|
+
:order => [ :year, :month, :day ],
|
1989
|
+
:default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
|
1990
|
+
:discard_type => false,
|
1991
|
+
:include_blank => false,
|
1992
|
+
:ignore_date => false,
|
1993
|
+
:include_seconds => true
|
1994
|
+
}
|
1995
|
+
time_select(@post, :updated_at, options)
|
1996
|
+
|
1997
|
+
# note: the literal hash is intentional to show that the actual options hash isn't modified
|
1998
|
+
# don't change this!
|
1999
|
+
assert_equal({
|
2000
|
+
:order => [ :year, :month, :day ],
|
2001
|
+
:default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
|
2002
|
+
:discard_type => false,
|
2003
|
+
:include_blank => false,
|
2004
|
+
:ignore_date => false,
|
2005
|
+
:include_seconds => true
|
2006
|
+
}, options)
|
2007
|
+
end
|
2008
|
+
|
2009
|
+
def test_select_date_should_not_change_passed_options_hash
|
2010
|
+
options = {
|
2011
|
+
:order => [ :year, :month, :day ],
|
2012
|
+
:default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
|
2013
|
+
:discard_type => false,
|
2014
|
+
:include_blank => false,
|
2015
|
+
:ignore_date => false,
|
2016
|
+
:include_seconds => true
|
2017
|
+
}
|
2018
|
+
select_date(Date.today, options)
|
2019
|
+
|
2020
|
+
# note: the literal hash is intentional to show that the actual options hash isn't modified
|
2021
|
+
# don't change this!
|
2022
|
+
assert_equal({
|
2023
|
+
:order => [ :year, :month, :day ],
|
2024
|
+
:default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
|
2025
|
+
:discard_type => false,
|
2026
|
+
:include_blank => false,
|
2027
|
+
:ignore_date => false,
|
2028
|
+
:include_seconds => true
|
2029
|
+
}, options)
|
2030
|
+
end
|
2031
|
+
|
2032
|
+
def test_select_datetime_should_not_change_passed_options_hash
|
2033
|
+
options = {
|
2034
|
+
:order => [ :year, :month, :day ],
|
2035
|
+
:default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
|
2036
|
+
:discard_type => false,
|
2037
|
+
:include_blank => false,
|
2038
|
+
:ignore_date => false,
|
2039
|
+
:include_seconds => true
|
2040
|
+
}
|
2041
|
+
select_datetime(Time.now, options)
|
2042
|
+
|
2043
|
+
# note: the literal hash is intentional to show that the actual options hash isn't modified
|
2044
|
+
# don't change this!
|
2045
|
+
assert_equal({
|
2046
|
+
:order => [ :year, :month, :day ],
|
2047
|
+
:default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
|
2048
|
+
:discard_type => false,
|
2049
|
+
:include_blank => false,
|
2050
|
+
:ignore_date => false,
|
2051
|
+
:include_seconds => true
|
2052
|
+
}, options)
|
2053
|
+
end
|
2054
|
+
|
2055
|
+
def test_select_time_should_not_change_passed_options_hash
|
2056
|
+
options = {
|
2057
|
+
:order => [ :year, :month, :day ],
|
2058
|
+
:default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
|
2059
|
+
:discard_type => false,
|
2060
|
+
:include_blank => false,
|
2061
|
+
:ignore_date => false,
|
2062
|
+
:include_seconds => true
|
2063
|
+
}
|
2064
|
+
select_time(Time.now, options)
|
2065
|
+
|
2066
|
+
# note: the literal hash is intentional to show that the actual options hash isn't modified
|
2067
|
+
# don't change this!
|
2068
|
+
assert_equal({
|
2069
|
+
:order => [ :year, :month, :day ],
|
2070
|
+
:default => { :year => 2008, :month => 7, :day => 16, :hour => 23, :minute => 30, :second => 1 },
|
2071
|
+
:discard_type => false,
|
2072
|
+
:include_blank => false,
|
2073
|
+
:ignore_date => false,
|
2074
|
+
:include_seconds => true
|
2075
|
+
}, options)
|
1782
2076
|
end
|
1783
|
-
|
2077
|
+
|
1784
2078
|
protected
|
1785
2079
|
def with_env_tz(new_tz = 'US/Eastern')
|
1786
2080
|
old_tz, ENV['TZ'] = ENV['TZ'], new_tz
|
1787
2081
|
yield
|
1788
2082
|
ensure
|
1789
2083
|
old_tz ? ENV['TZ'] = old_tz : ENV.delete('TZ')
|
1790
|
-
end
|
2084
|
+
end
|
1791
2085
|
end
|