date_select_separator 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 140046bd4a139bea58c7a6ca9f0e438d088ac2fd
4
- data.tar.gz: 08fd82cfa1da9880159f5ffcc00686a126298ef3
3
+ metadata.gz: 5bddcd7a558ebc3bae63f3cc4090619028af6191
4
+ data.tar.gz: 47cb9da0d7a6c261f12e19ded1f50e600cb9cf9e
5
5
  SHA512:
6
- metadata.gz: d52478807677174dbeb14733cd689811d7649748e04ff89ae83fcf21e52a389b221b85a3c25ecd52990988d480fae7ecd726b606d2ad152368b5b6c79b7965b0
7
- data.tar.gz: 97c793ffc5d3f37cb1bb407b898aaee8ddd927622c340858e700976cdf33ea35dad8a5266e9de0e751fb92e740e9025f742a250df1aa25e16aa28ed9a83690f4
6
+ metadata.gz: 31f38d0a1c2badfb971bbb80fabfb562c324f022646ae22d6c2897b4561bd3f50f9f9568e7421c74335993bef4d84c6f9da0c455f4004295f690380d2f605060
7
+ data.tar.gz: 22b7f3a8f57670694df17ef35cf955b6d80820efdc43098c90e29394f55ce0dd5f214d0a24dc38fedd05a1ab28b54a70449f10d306a0e794753cf2b4fe4fad3d
data/README.md CHANGED
@@ -39,9 +39,11 @@ Add `use_separators: true` option to data_select or datetime_select.
39
39
  <%= f.date_select :birthday, use_separators: { inline: true } %>
40
40
  <%= f.datetime_select :birthday, time_separator: '', use_separators: { inline: true } %>
41
41
 
42
- # Options: html_tag, class_prefix etc
42
+ # Options: html_tag, class_prefix, translations, wrapper_select_tag etc
43
43
  <%= f.date_select :birthday, use_month_numbers: true, use_separators: { html_tag: :div, class_prefix: 'foo' } %>
44
44
  <%= f.date_select :birthday, use_month_numbers: true, use_separators: { year: 'yy', month: 'mm', day: 'dd' } %>
45
+ <%= f.date_select :birthday, use_month_numbers: true, use_separators: { wrapper_select_tag: true } %>
46
+ <%= f.date_select :birthday, use_month_numbers: true, use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }} %>
45
47
 
46
48
  ## Contributing
47
49
 
@@ -4,11 +4,18 @@ module DateSelectSeparator
4
4
 
5
5
  included do
6
6
  def select_month_with_separator
7
- separators = @options[:use_separators]
7
+ type = :month
8
+ separator_options = @options[:use_separators]
8
9
  select_tag = select_month_without_separator
9
10
 
10
- if use_separators?(:month, separators) && !inline_separator?(separators)
11
- select_tag << separator_tag(:month, separators)
11
+ if use_separators?(type, separator_options)
12
+ unless inline_separator?(separator_options)
13
+ select_tag << separator_tag(type, separator_options)
14
+ end
15
+
16
+ if use_wrapper_select_tag?(separator_options)
17
+ select_tag = wrapper_select_tag(select_tag, type, separator_options)
18
+ end
12
19
  end
13
20
 
14
21
  select_tag
@@ -16,44 +23,64 @@ module DateSelectSeparator
16
23
  alias_method_chain :select_month, :separator
17
24
 
18
25
  private
19
- def use_separators?(type, separators)
26
+ def use_separators?(type, separator_options)
20
27
  discard_type = "discard_#{type}".to_sym
21
- !@options[:use_hidden] && !@options[discard_type] && separators
28
+ !@options[:use_hidden] && !@options[discard_type] && separator_options
29
+ end
30
+
31
+ def inline_separator?(separator_options)
32
+ separator_options.is_a?(Hash) && separator_options[:inline]
22
33
  end
23
34
 
24
- def inline_separator?(separators)
25
- separators.is_a?(Hash) && separators[:inline]
35
+ def use_wrapper_select_tag?(separator_options)
36
+ separator_options.is_a?(Hash) && separator_options[:wrapper_select_tag]
26
37
  end
27
38
 
28
- def separator_text(type, separators)
29
- if separators.is_a?(Hash) && separators[type]
30
- separators[type]
39
+ def wrapper_select_tag(select_tag, type, separator_options)
40
+ default_options = { html_tag: :div, class_prefix: 'wrapper_select_' }
41
+ wrapper_options = separator_options[:wrapper_select_tag]
42
+ wrapper_options = wrapper_options.is_a?(Hash) ? default_options.merge(wrapper_options) : default_options
43
+ class_name = wrapper_options[:class_prefix] + "#{type}"
44
+ content_tag(wrapper_options[:html_tag], "\n".html_safe + select_tag, class: class_name) + "\n"
45
+ end
46
+
47
+ def separator_text(type, separator_options)
48
+ if separator_options.is_a?(Hash) && separator_options[type]
49
+ separator_options[type]
31
50
  else
32
51
  key = 'datetime.separators.' + type.to_s
33
- I18n.translate(key, locale: @options[:locale])
52
+ I18n.translate(key, locale: @options[:locale], default: '')
34
53
  end
35
54
  end
36
55
 
37
- def separator_tag(type, separators)
38
- default_options = { html_tag: :span, class_prefix: 'separator' }
39
- options = separators.is_a?(Hash) ? default_options.merge!(separators) : default_options
40
- text = separator_text(type, separators)
41
- class_name = options[:class_prefix] + "_#{type}"
56
+ def separator_tag(type, separator_options)
57
+ text = separator_text(type, separator_options)
58
+ return text if text.empty?
59
+
60
+ default_options = { html_tag: :span, class_prefix: 'separator_' }
61
+ options = separator_options.is_a?(Hash) ? default_options.merge(separator_options) : default_options
62
+ class_name = options[:class_prefix] + "#{type}"
42
63
  content_tag(options[:html_tag], text, class: class_name) + "\n"
43
64
  end
44
65
 
45
66
  def build_options_and_select_with_separator(type, selected, options = {})
46
- separators = @options[:use_separators]
67
+ separator_options = @options[:use_separators]
47
68
 
48
- unless use_separators?(type, separators)
69
+ unless use_separators?(type, separator_options)
49
70
  return build_options_and_select_without_separator(type, selected, options)
50
71
  end
51
72
 
52
- if inline_separator?(separators)
53
- options.merge!(separator: separator_text(type, separators))
54
- build_select(type, build_options_with_separator(selected, options))
73
+ select_tag = if inline_separator?(separator_options)
74
+ options.merge!(separator: separator_text(type, separator_options))
75
+ build_select(type, build_options_with_separator(selected, options))
76
+ else
77
+ build_select(type, build_options(selected, options)) + separator_tag(type, separator_options)
78
+ end
79
+
80
+ if use_wrapper_select_tag?(separator_options)
81
+ wrapper_select_tag(select_tag, type, separator_options)
55
82
  else
56
- build_select(type, build_options(selected, options)) + separator_tag(type, separators)
83
+ select_tag
57
84
  end
58
85
  end
59
86
  alias_method_chain :build_options_and_select, :separator
@@ -1,3 +1,3 @@
1
1
  module DateSelectSeparator
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -89,8 +89,8 @@ class DateSelectSeparatorTest < ActionView::TestCase
89
89
  expected = select_day(Time.mktime(2003, 8, 16))
90
90
  expected << %(<span class="foo_day">dd</span>\n).html_safe
91
91
 
92
- assert_dom_equal expected, select_day(Time.mktime(2003, 8, 16), use_separators: { class_prefix: 'foo' })
93
- assert_dom_equal expected, select_day(16, use_separators: { class_prefix: 'foo' })
92
+ assert_dom_equal expected, select_day(Time.mktime(2003, 8, 16), use_separators: { class_prefix: 'foo_' })
93
+ assert_dom_equal expected, select_day(16, use_separators: { class_prefix: 'foo_' })
94
94
  end
95
95
 
96
96
  def test_select_day_with_custom_separator_and_translation
@@ -101,6 +101,26 @@ class DateSelectSeparatorTest < ActionView::TestCase
101
101
  assert_dom_equal expected, select_day(16, use_separators: { day: 'foo' })
102
102
  end
103
103
 
104
+ def test_select_day_with_custom_separator_and_wrapper_select_tag
105
+ expected = %(<div class="wrapper_select_day">\n)
106
+ expected << select_day(Time.mktime(2003, 8, 16))
107
+ expected << %(<span class="separator_day">dd</span>\n).html_safe
108
+ expected << %(</div>\n)
109
+
110
+ assert_dom_equal expected, select_day(Time.mktime(2003, 8, 16), use_separators: { wrapper_select_tag: true })
111
+ assert_dom_equal expected, select_day(16, use_separators: { wrapper_select_tag: true })
112
+ end
113
+
114
+ def test_select_day_with_custom_separator_and_wrapper_select_tag_with_options
115
+ expected = %(<span class="foo_day">\n)
116
+ expected << select_day(Time.mktime(2003, 8, 16))
117
+ expected << %(<span class="separator_day">dd</span>\n).html_safe
118
+ expected << %(</span>\n)
119
+
120
+ assert_dom_equal expected, select_day(Time.mktime(2003, 8, 16), use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
121
+ assert_dom_equal expected, select_day(16, use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
122
+ end
123
+
104
124
  def test_select_month
105
125
  expected = select_month(Time.mktime(2003, 8, 16))
106
126
  expected << %(<span class="separator_month">mm</span>\n).html_safe
@@ -252,8 +272,8 @@ class DateSelectSeparatorTest < ActionView::TestCase
252
272
  expected = select_month(Time.mktime(2003, 8, 16))
253
273
  expected << %(<span class="foo_month">mm</span>\n).html_safe
254
274
 
255
- assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), use_separators: { class_prefix: 'foo' })
256
- assert_dom_equal expected, select_month(8, use_separators: { class_prefix: 'foo' })
275
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), use_separators: { class_prefix: 'foo_' })
276
+ assert_dom_equal expected, select_month(8, use_separators: { class_prefix: 'foo_' })
257
277
  end
258
278
 
259
279
  def test_select_month_with_custom_separator_and_translation
@@ -264,6 +284,25 @@ class DateSelectSeparatorTest < ActionView::TestCase
264
284
  assert_dom_equal expected, select_month(8, use_separators: { month: 'foo' })
265
285
  end
266
286
 
287
+ def test_select_month_with_custom_separator_and_wrapper_select_tag
288
+ expected = %(<div class="wrapper_select_month">\n)
289
+ expected << select_month(Time.mktime(2003, 8, 16))
290
+ expected << %(<span class="separator_month">mm</span>\n).html_safe
291
+ expected << %(</div>\n)
292
+
293
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), use_separators: { wrapper_select_tag: true })
294
+ assert_dom_equal expected, select_month(8, use_separators: { wrapper_select_tag: true })
295
+ end
296
+
297
+ def test_select_month_with_custom_separator_and_wrapper_select_tag_with_options
298
+ expected = %(<span class="foo_month">\n)
299
+ expected << select_month(Time.mktime(2003, 8, 16))
300
+ expected << %(<span class="separator_month">mm</span>\n).html_safe
301
+ expected << %(</span>\n)
302
+
303
+ assert_dom_equal expected, select_month(Time.mktime(2003, 8, 16), use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
304
+ assert_dom_equal expected, select_month(8, use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
305
+ end
267
306
 
268
307
  def test_select_year
269
308
  expected = select_year(Time.mktime(2003, 8, 16), start_year: 2003, end_year: 2005)
@@ -356,8 +395,8 @@ class DateSelectSeparatorTest < ActionView::TestCase
356
395
  expected = select_year(Time.mktime(2003, 8, 16), start_year: 2003, end_year: 2005)
357
396
  expected << %(<span class="foo_year">yy</span>\n).html_safe
358
397
 
359
- assert_dom_equal expected, select_year(Time.mktime(2003, 8, 16), start_year: 2003, end_year: 2005, use_separators: { class_prefix: 'foo' })
360
- assert_dom_equal expected, select_year(2003, start_year: 2003, end_year: 2005, use_separators: { class_prefix: 'foo' })
398
+ assert_dom_equal expected, select_year(Time.mktime(2003, 8, 16), start_year: 2003, end_year: 2005, use_separators: { class_prefix: 'foo_' })
399
+ assert_dom_equal expected, select_year(2003, start_year: 2003, end_year: 2005, use_separators: { class_prefix: 'foo_' })
361
400
  end
362
401
 
363
402
  def test_select_year_with_custom_separator_and_translation
@@ -368,6 +407,26 @@ class DateSelectSeparatorTest < ActionView::TestCase
368
407
  assert_dom_equal expected, select_year(2003, start_year: 2003, end_year: 2005, use_separators: { year: 'foo' })
369
408
  end
370
409
 
410
+ def test_select_year_with_custom_separator_and_wrapper_select_tag
411
+ expected = %(<div class="wrapper_select_year">\n)
412
+ expected << select_year(Time.mktime(2003, 8, 16))
413
+ expected << %(<span class="separator_year">yy</span>\n).html_safe
414
+ expected << %(</div>\n)
415
+
416
+ assert_dom_equal expected, select_year(Time.mktime(2003, 8, 16), use_separators: { wrapper_select_tag: true })
417
+ assert_dom_equal expected, select_year(2003, use_separators: { wrapper_select_tag: true })
418
+ end
419
+
420
+ def test_select_year_with_custom_separator_and_wrapper_select_tag_with_options
421
+ expected = %(<span class="foo_year">\n)
422
+ expected << select_year(Time.mktime(2003, 8, 16))
423
+ expected << %(<span class="separator_year">yy</span>\n).html_safe
424
+ expected << %(</span>\n)
425
+
426
+ assert_dom_equal expected, select_year(Time.mktime(2003, 8, 16), use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
427
+ assert_dom_equal expected, select_year(2003, use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
428
+ end
429
+
371
430
  def test_select_hour
372
431
  expected = select_hour(Time.mktime(2003, 8, 16, 8, 4, 18))
373
432
  expected << %(<span class="separator_hour">h</span>\n).html_safe
@@ -449,7 +508,7 @@ class DateSelectSeparatorTest < ActionView::TestCase
449
508
  expected = select_hour(Time.mktime(2003, 8, 16, 8, 4, 18))
450
509
  expected << %(<span class="foo_hour">h</span>\n).html_safe
451
510
 
452
- assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { class_prefix: 'foo' })
511
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { class_prefix: 'foo_' })
453
512
  end
454
513
 
455
514
  def test_select_hour_with_custom_separator_and_translation
@@ -459,6 +518,24 @@ class DateSelectSeparatorTest < ActionView::TestCase
459
518
  assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { hour: 'foo' })
460
519
  end
461
520
 
521
+ def test_select_hour_with_custom_separator_and_wrapper_select_tag
522
+ expected = %(<div class="wrapper_select_hour">\n)
523
+ expected << select_hour(Time.mktime(2003, 8, 16, 8, 4, 18))
524
+ expected << %(<span class="separator_hour">h</span>\n).html_safe
525
+ expected << %(</div>\n)
526
+
527
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { wrapper_select_tag: true })
528
+ end
529
+
530
+ def test_select_hour_with_custom_separator_and_wrapper_select_tag_with_options
531
+ expected = %(<span class="foo_hour">\n)
532
+ expected << select_hour(Time.mktime(2003, 8, 16, 8, 4, 18))
533
+ expected << %(<span class="separator_hour">h</span>\n).html_safe
534
+ expected << %(</span>\n)
535
+
536
+ assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
537
+ end
538
+
462
539
  def test_select_minute
463
540
  expected = select_minute(Time.mktime(2003, 8, 16, 8, 4, 18))
464
541
  expected << %(<span class="separator_minute">min</span>\n).html_safe
@@ -555,7 +632,7 @@ class DateSelectSeparatorTest < ActionView::TestCase
555
632
  expected = select_minute(Time.mktime(2003, 8, 16, 8, 4, 18))
556
633
  expected << %(<span class="foo_minute">min</span>\n).html_safe
557
634
 
558
- assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { class_prefix: 'foo' })
635
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { class_prefix: 'foo_' })
559
636
  end
560
637
 
561
638
  def test_select_minute_with_custom_separator_and_translation
@@ -565,6 +642,24 @@ class DateSelectSeparatorTest < ActionView::TestCase
565
642
  assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { minute: 'foo' })
566
643
  end
567
644
 
645
+ def test_select_minute_with_custom_separator_and_wrapper_select_tag
646
+ expected = %(<div class="wrapper_select_minute">\n)
647
+ expected << select_minute(Time.mktime(2003, 8, 16, 8, 4, 18))
648
+ expected << %(<span class="separator_minute">min</span>\n).html_safe
649
+ expected << %(</div>\n)
650
+
651
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { wrapper_select_tag: true })
652
+ end
653
+
654
+ def test_select_minute_with_custom_separator_and_wrapper_select_tag_with_options
655
+ expected = %(<span class="foo_minute">\n)
656
+ expected << select_minute(Time.mktime(2003, 8, 16, 8, 4, 18))
657
+ expected << %(<span class="separator_minute">min</span>\n).html_safe
658
+ expected << %(</span>\n)
659
+
660
+ assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
661
+ end
662
+
568
663
  def test_select_second
569
664
  expected = select_second(Time.mktime(2003, 8, 16, 8, 4, 18))
570
665
  expected << %(<span class="separator_second">sec</span>\n).html_safe
@@ -639,7 +734,7 @@ class DateSelectSeparatorTest < ActionView::TestCase
639
734
  expected = select_second(Time.mktime(2003, 8, 16, 8, 4, 18))
640
735
  expected << %(<span class="foo_second">sec</span>\n).html_safe
641
736
 
642
- assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { class_prefix: 'foo' })
737
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { class_prefix: 'foo_' })
643
738
  end
644
739
 
645
740
  def test_select_second_with_custom_separator_and_translation
@@ -649,6 +744,24 @@ class DateSelectSeparatorTest < ActionView::TestCase
649
744
  assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { second: 'foo' })
650
745
  end
651
746
 
747
+ def test_select_second_with_custom_separator_and_wrapper_select_tag
748
+ expected = %(<div class="wrapper_select_second">\n)
749
+ expected << select_second(Time.mktime(2003, 8, 16, 8, 4, 18))
750
+ expected << %(<span class="separator_second">sec</span>\n).html_safe
751
+ expected << %(</div>\n)
752
+
753
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { wrapper_select_tag: true })
754
+ end
755
+
756
+ def test_select_second_with_custom_separator_and_wrapper_select_tag_with_options
757
+ expected = %(<span class="foo_second">\n)
758
+ expected << select_second(Time.mktime(2003, 8, 16, 8, 4, 18))
759
+ expected << %(<span class="separator_second">sec</span>\n).html_safe
760
+ expected << %(</span>\n)
761
+
762
+ assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
763
+ end
764
+
652
765
  def test_select_date
653
766
  expected = %(<select id="date_first_year" name="date[first][year]">\n)
654
767
  expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
@@ -1051,7 +1164,7 @@ class DateSelectSeparatorTest < ActionView::TestCase
1051
1164
  expected << "</select>\n"
1052
1165
  expected << %(<span class="foo_day">dd</span>\n)
1053
1166
 
1054
- assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), start_year: 2003, end_year: 2005, prefix: "date[first]", use_separators: { class_prefix: 'foo' })
1167
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), start_year: 2003, end_year: 2005, prefix: "date[first]", use_separators: { class_prefix: 'foo_' })
1055
1168
  end
1056
1169
 
1057
1170
  def test_select_date_with_custom_separator_and_translation
@@ -1073,6 +1186,56 @@ class DateSelectSeparatorTest < ActionView::TestCase
1073
1186
  assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), start_year: 2003, end_year: 2005, prefix: "date[first]", use_separators: { year: 'foo', month: 'bar', day: 'baz' })
1074
1187
  end
1075
1188
 
1189
+ def test_select_date_with_custom_separator_and_wrapper_select_tag
1190
+ expected = %(<div class="wrapper_select_year">\n)
1191
+ expected << %(<select id="date_first_year" name="date[first][year]">\n)
1192
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
1193
+ expected << "</select>\n"
1194
+ expected << %(<span class="separator_year">yy</span>\n)
1195
+ expected << %(</div>\n)
1196
+
1197
+ expected << %(<div class="wrapper_select_month">\n)
1198
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1199
+ 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)
1200
+ expected << "</select>\n"
1201
+ expected << %(<span class="separator_month">mm</span>\n)
1202
+ expected << %(</div>\n)
1203
+
1204
+ expected << %(<div class="wrapper_select_day">\n)
1205
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1206
+ 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)
1207
+ expected << "</select>\n"
1208
+ expected << %(<span class="separator_day">dd</span>\n)
1209
+ expected << %(</div>\n)
1210
+
1211
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), start_year: 2003, end_year: 2005, prefix: "date[first]", use_separators: { wrapper_select_tag: true })
1212
+ end
1213
+
1214
+ def test_select_date_with_custom_separator_and_wrapper_select_tag_with_options
1215
+ expected = %(<span class="foo_year">\n)
1216
+ expected << %(<select id="date_first_year" name="date[first][year]">\n)
1217
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
1218
+ expected << "</select>\n"
1219
+ expected << %(<span class="separator_year">yy</span>\n)
1220
+ expected << %(</span>\n)
1221
+
1222
+ expected << %(<span class="foo_month">\n)
1223
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1224
+ 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)
1225
+ expected << "</select>\n"
1226
+ expected << %(<span class="separator_month">mm</span>\n)
1227
+ expected << %(</span>\n)
1228
+
1229
+ expected << %(<span class="foo_day">\n)
1230
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1231
+ 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)
1232
+ expected << "</select>\n"
1233
+ expected << %(<span class="separator_day">dd</span>\n)
1234
+ expected << %(</span>\n)
1235
+
1236
+ assert_dom_equal expected, select_date(Time.mktime(2003, 8, 16), start_year: 2003, end_year: 2005, prefix: "date[first]", use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
1237
+ end
1238
+
1076
1239
  def test_select_datetime
1077
1240
  expected = %(<select id="date_first_year" name="date[first][year]">\n)
1078
1241
  expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
@@ -1483,7 +1646,7 @@ class DateSelectSeparatorTest < ActionView::TestCase
1483
1646
  expected << "</select>\n"
1484
1647
  expected << %(<span class="foo_minute">min</span>\n)
1485
1648
 
1486
- assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), start_year: 2003, end_year: 2005, prefix: "date[first]", use_separators: { class_prefix: 'foo' })
1649
+ assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), start_year: 2003, end_year: 2005, prefix: "date[first]", use_separators: { class_prefix: 'foo_' })
1487
1650
  end
1488
1651
 
1489
1652
  def test_select_datetime_with_custom_separator_and_translation
@@ -1519,6 +1682,92 @@ class DateSelectSeparatorTest < ActionView::TestCase
1519
1682
  assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), start_year: 2003, end_year: 2005, prefix: "date[first]", use_separators: { year: 'foo', month: 'bar', day: 'baz', hour: 'hoge', minute: 'fuga' })
1520
1683
  end
1521
1684
 
1685
+ def test_select_datetime_with_custom_separator_and_wrapper_select_tag
1686
+ expected = %(<div class="wrapper_select_year">\n)
1687
+ expected << %(<select id="date_first_year" name="date[first][year]">\n)
1688
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
1689
+ expected << "</select>\n"
1690
+ expected << %(<span class="separator_year">yy</span>\n)
1691
+ expected << %(</div>\n)
1692
+
1693
+ expected << %(<div class="wrapper_select_month">\n)
1694
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1695
+ 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)
1696
+ expected << "</select>\n"
1697
+ expected << %(<span class="separator_month">mm</span>\n)
1698
+ expected << %(</div>\n)
1699
+
1700
+ expected << %(<div class="wrapper_select_day">\n)
1701
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1702
+ 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)
1703
+ expected << "</select>\n"
1704
+ expected << %(<span class="separator_day">dd</span>\n)
1705
+ expected << %(</div>\n)
1706
+
1707
+ expected << " &mdash; "
1708
+
1709
+ expected << %(<div class="wrapper_select_hour">\n)
1710
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
1711
+ 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)
1712
+ expected << "</select>\n"
1713
+ expected << %(<span class="separator_hour">h</span>\n)
1714
+ expected << %(</div>\n)
1715
+
1716
+ expected << " : "
1717
+
1718
+ expected << %(<div class="wrapper_select_minute">\n)
1719
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
1720
+ 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)
1721
+ expected << "</select>\n"
1722
+ expected << %(<span class="separator_minute">min</span>\n)
1723
+ expected << %(</div>\n)
1724
+
1725
+ assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), start_year: 2003, end_year: 2005, prefix: "date[first]", use_separators: { wrapper_select_tag: true })
1726
+ end
1727
+
1728
+ def test_select_datetime_with_custom_separator_and_wrapper_select_tag_with_options
1729
+ expected = %(<span class="foo_year">\n)
1730
+ expected << %(<select id="date_first_year" name="date[first][year]">\n)
1731
+ expected << %(<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
1732
+ expected << "</select>\n"
1733
+ expected << %(<span class="separator_year">yy</span>\n)
1734
+ expected << %(</span>\n)
1735
+
1736
+ expected << %(<span class="foo_month">\n)
1737
+ expected << %(<select id="date_first_month" name="date[first][month]">\n)
1738
+ 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)
1739
+ expected << "</select>\n"
1740
+ expected << %(<span class="separator_month">mm</span>\n)
1741
+ expected << %(</span>\n)
1742
+
1743
+ expected << %(<span class="foo_day">\n)
1744
+ expected << %(<select id="date_first_day" name="date[first][day]">\n)
1745
+ 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)
1746
+ expected << "</select>\n"
1747
+ expected << %(<span class="separator_day">dd</span>\n)
1748
+ expected << %(</span>\n)
1749
+
1750
+ expected << " &mdash; "
1751
+
1752
+ expected << %(<span class="foo_hour">\n)
1753
+ expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
1754
+ 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)
1755
+ expected << "</select>\n"
1756
+ expected << %(<span class="separator_hour">h</span>\n)
1757
+ expected << %(</span>\n)
1758
+
1759
+ expected << " : "
1760
+
1761
+ expected << %(<span class="foo_minute">\n)
1762
+ expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
1763
+ 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)
1764
+ expected << "</select>\n"
1765
+ expected << %(<span class="separator_minute">min</span>\n)
1766
+ expected << %(</span>\n)
1767
+
1768
+ assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), start_year: 2003, end_year: 2005, prefix: "date[first]", use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
1769
+ end
1770
+
1522
1771
  def test_select_time
1523
1772
  expected = %(<input name="date[year]" id="date_year" value="2003" type="hidden" />\n)
1524
1773
  expected << %(<input name="date[month]" id="date_month" value="8" type="hidden" />\n)
@@ -1782,8 +2031,8 @@ class DateSelectSeparatorTest < ActionView::TestCase
1782
2031
  expected << "</select>\n"
1783
2032
  expected << %(<span class="foo_minute">min</span>\n)
1784
2033
 
1785
- assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { class_prefix: 'foo' })
1786
- assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), include_seconds: false, use_separators: { class_prefix: 'foo' })
2034
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { class_prefix: 'foo_' })
2035
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), include_seconds: false, use_separators: { class_prefix: 'foo_' })
1787
2036
  end
1788
2037
 
1789
2038
  def test_select_time_with_custom_separator_and_translation
@@ -1807,6 +2056,56 @@ class DateSelectSeparatorTest < ActionView::TestCase
1807
2056
  assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), include_seconds: false, use_separators: { hour: 'hoge', minute: 'fuga' })
1808
2057
  end
1809
2058
 
2059
+ def test_select_time_with_custom_separator_and_wrapper_select_tag
2060
+ expected = %(<input name="date[year]" id="date_year" value="2003" type="hidden" />\n)
2061
+ expected << %(<input name="date[month]" id="date_month" value="8" type="hidden" />\n)
2062
+ expected << %(<input name="date[day]" id="date_day" value="16" type="hidden" />\n)
2063
+
2064
+ expected << %(<div class="wrapper_select_hour">\n)
2065
+ expected << %(<select id="date_hour" name="date[hour]">\n)
2066
+ 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)
2067
+ expected << "</select>\n"
2068
+ expected << %(<span class="separator_hour">h</span>\n)
2069
+ expected << %(</div>\n)
2070
+
2071
+ expected << " : "
2072
+
2073
+ expected << %(<div class="wrapper_select_minute">\n)
2074
+ expected << %(<select id="date_minute" name="date[minute]">\n)
2075
+ 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)
2076
+ expected << "</select>\n"
2077
+ expected << %(<span class="separator_minute">min</span>\n)
2078
+ expected << %(</div>\n)
2079
+
2080
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { wrapper_select_tag: true })
2081
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), include_seconds: false, use_separators: { wrapper_select_tag: true })
2082
+ end
2083
+
2084
+ def test_select_time_with_custom_separator_and_wrapper_select_tag_with_options
2085
+ expected = %(<input name="date[year]" id="date_year" value="2003" type="hidden" />\n)
2086
+ expected << %(<input name="date[month]" id="date_month" value="8" type="hidden" />\n)
2087
+ expected << %(<input name="date[day]" id="date_day" value="16" type="hidden" />\n)
2088
+
2089
+ expected << %(<span class="foo_hour">\n)
2090
+ expected << %(<select id="date_hour" name="date[hour]">\n)
2091
+ 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)
2092
+ expected << "</select>\n"
2093
+ expected << %(<span class="separator_hour">h</span>\n)
2094
+ expected << %(</span>\n)
2095
+
2096
+ expected << " : "
2097
+
2098
+ expected << %(<span class="foo_minute">\n)
2099
+ expected << %(<select id="date_minute" name="date[minute]">\n)
2100
+ 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)
2101
+ expected << "</select>\n"
2102
+ expected << %(<span class="separator_minute">min</span>\n)
2103
+ expected << %(</span>\n)
2104
+
2105
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
2106
+ assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), include_seconds: false, use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
2107
+ end
2108
+
1810
2109
  def test_date_select
1811
2110
  @post = Post.new
1812
2111
  @post.written_on = Date.new(2004, 6, 15)
@@ -2422,7 +2721,7 @@ class DateSelectSeparatorTest < ActionView::TestCase
2422
2721
  expected << "</select>\n"
2423
2722
  expected << %(<span class="foo_day">dd</span>\n)
2424
2723
 
2425
- assert_dom_equal expected, date_select("post", "written_on", use_separators: { class_prefix: 'foo' })
2724
+ assert_dom_equal expected, date_select("post", "written_on", use_separators: { class_prefix: 'foo_' })
2426
2725
  end
2427
2726
 
2428
2727
  def test_date_select_with_custom_separator_and_translation
@@ -2488,6 +2787,61 @@ class DateSelectSeparatorTest < ActionView::TestCase
2488
2787
  assert_dom_equal expected, date_select("post", "written_on", use_separators: { inline: true }, locale: :ja)
2489
2788
  end
2490
2789
 
2790
+ def test_date_select_with_custom_separator_and_wrapper_select_tag
2791
+ @post = Post.new
2792
+ @post.written_on = Date.new(2004, 6, 15)
2793
+
2794
+ expected = %(<div class="wrapper_select_year">\n)
2795
+ expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
2796
+ 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}
2797
+ expected << "</select>\n"
2798
+ expected << %(<span class="separator_year">yy</span>\n)
2799
+ expected << %(</div>\n)
2800
+
2801
+ expected << %(<div class="wrapper_select_month">\n)
2802
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
2803
+ 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}
2804
+ expected << "</select>\n"
2805
+ expected << %(<span class="separator_month">mm</span>\n)
2806
+ expected << %(</div>\n)
2807
+
2808
+ expected << %(<div class="wrapper_select_day">\n)
2809
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
2810
+ 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}
2811
+ expected << "</select>\n"
2812
+ expected << %(<span class="separator_day">dd</span>\n)
2813
+ expected << %(</div>\n)
2814
+
2815
+ assert_dom_equal expected, date_select("post", "written_on", use_separators: { wrapper_select_tag: true })
2816
+ end
2817
+
2818
+ def test_date_select_with_custom_separator_and_wrapper_select_tag_with_options
2819
+ @post = Post.new
2820
+ @post.written_on = Date.new(2004, 6, 15)
2821
+
2822
+ expected = %(<span class="foo_year">\n)
2823
+ expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
2824
+ 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}
2825
+ expected << "</select>\n"
2826
+ expected << %(<span class="separator_year">yy</span>\n)
2827
+ expected << %(</span>\n)
2828
+
2829
+ expected << %(<span class="foo_month">\n)
2830
+ expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
2831
+ 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}
2832
+ expected << "</select>\n"
2833
+ expected << %(<span class="separator_month">mm</span>\n)
2834
+ expected << %(</span>\n)
2835
+
2836
+ expected << %(<span class="foo_day">\n)
2837
+ expected << %{<select id="post_written_on_3i" name="post[written_on(3i)]">\n}
2838
+ 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}
2839
+ expected << "</select>\n"
2840
+ expected << %(<span class="separator_day">dd</span>\n)
2841
+ expected << %(</span>\n)
2842
+
2843
+ assert_dom_equal expected, date_select("post", "written_on", use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
2844
+ end
2491
2845
 
2492
2846
  def test_time_select
2493
2847
  @post = Post.new
@@ -2796,7 +3150,7 @@ class DateSelectSeparatorTest < ActionView::TestCase
2796
3150
  expected << "</select>\n"
2797
3151
  expected << %(<span class="foo_minute">min</span>\n)
2798
3152
 
2799
- assert_dom_equal expected, time_select("post", "written_on", use_separators: { class_prefix: 'foo' })
3153
+ assert_dom_equal expected, time_select("post", "written_on", use_separators: { class_prefix: 'foo_' })
2800
3154
  end
2801
3155
 
2802
3156
  def test_time_select_with_custom_separator_and_translation
@@ -2820,6 +3174,31 @@ class DateSelectSeparatorTest < ActionView::TestCase
2820
3174
  assert_dom_equal expected, time_select("post", "written_on", use_separators: { hour: 'foo', minute: 'bar' })
2821
3175
  end
2822
3176
 
3177
+ def test_time_select_with_custom_separator_and_wrapper_select_tag
3178
+ @post = Post.new
3179
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
3180
+
3181
+ expected = %{<input type="hidden" id="post_written_on_1i" name="post[written_on(1i)]" value="2004" />\n}
3182
+ expected << %{<input type="hidden" id="post_written_on_2i" name="post[written_on(2i)]" value="6" />\n}
3183
+ expected << %{<input type="hidden" id="post_written_on_3i" name="post[written_on(3i)]" value="15" />\n}
3184
+
3185
+ expected << %(<div class="wrapper_select_hour">\n)
3186
+ expected << %(<select id="post_written_on_4i" name="post[written_on(4i)]">\n)
3187
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
3188
+ expected << "</select>\n"
3189
+ expected << %(<span class="separator_hour">h</span>\n)
3190
+ expected << %(</div>\n)
3191
+ expected << " : "
3192
+ expected << %(<div class="wrapper_select_minute">\n)
3193
+ expected << %(<select id="post_written_on_5i" name="post[written_on(5i)]">\n)
3194
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
3195
+ expected << "</select>\n"
3196
+ expected << %(<span class="separator_minute">min</span>\n)
3197
+ expected << %(</div>\n)
3198
+
3199
+ assert_dom_equal expected, time_select("post", "written_on", use_separators: { wrapper_select_tag: true })
3200
+ end
3201
+
2823
3202
  def test_datetime_select
2824
3203
  @post = Post.new
2825
3204
  @post.updated_at = Time.local(2004, 6, 15, 16, 35)
@@ -3208,7 +3587,7 @@ class DateSelectSeparatorTest < ActionView::TestCase
3208
3587
  expected << "</select>\n"
3209
3588
  expected << %(<span class="foo_minute">min</span>\n)
3210
3589
 
3211
- assert_dom_equal expected, datetime_select("post", "updated_at", use_separators: { class_prefix: 'foo' })
3590
+ assert_dom_equal expected, datetime_select("post", "updated_at", use_separators: { class_prefix: 'foo_' })
3212
3591
  end
3213
3592
 
3214
3593
  def test_datetime_select_with_custom_separator_and_translation
@@ -3308,6 +3687,94 @@ class DateSelectSeparatorTest < ActionView::TestCase
3308
3687
  assert_dom_equal expected, datetime_select("post", "updated_at", use_separators: { inline: true }, locale: :ja)
3309
3688
  end
3310
3689
 
3690
+ def test_datetime_select_with_custom_separator_and_wrapper_select_tag
3691
+ @post = Post.new
3692
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
3693
+
3694
+ expected = %(<div class="wrapper_select_year">\n)
3695
+ expected << %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
3696
+ 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}
3697
+ expected << "</select>\n"
3698
+ expected << %(<span class="separator_year">yy</span>\n)
3699
+ expected << %(</div>\n)
3700
+
3701
+ expected << %(<div class="wrapper_select_month">\n)
3702
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
3703
+ 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}
3704
+ expected << "</select>\n"
3705
+ expected << %(<span class="separator_month">mm</span>\n)
3706
+ expected << %(</div>\n)
3707
+
3708
+ expected << %(<div class="wrapper_select_day">\n)
3709
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
3710
+ 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}
3711
+ expected << "</select>\n"
3712
+ expected << %(<span class="separator_day">dd</span>\n)
3713
+ expected << %(</div>\n)
3714
+
3715
+ expected << " &mdash; "
3716
+
3717
+ expected << %(<div class="wrapper_select_hour">\n)
3718
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
3719
+ 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">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" 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}
3720
+ expected << "</select>\n"
3721
+ expected << %(<span class="separator_hour">h</span>\n)
3722
+ expected << %(</div>\n)
3723
+ expected << " : "
3724
+ expected << %(<div class="wrapper_select_minute">\n)
3725
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
3726
+ 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">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" selected="selected">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}
3727
+ expected << "</select>\n"
3728
+ expected << %(<span class="separator_minute">min</span>\n)
3729
+ expected << %(</div>\n)
3730
+
3731
+ assert_dom_equal expected, datetime_select("post", "updated_at", use_separators: { wrapper_select_tag: true })
3732
+ end
3733
+
3734
+ def test_datetime_select_with_custom_separator_and_wrapper_select_tag_with_options
3735
+ @post = Post.new
3736
+ @post.updated_at = Time.local(2004, 6, 15, 16, 35)
3737
+
3738
+ expected = %(<span class="foo_year">\n)
3739
+ expected << %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
3740
+ 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}
3741
+ expected << "</select>\n"
3742
+ expected << %(<span class="separator_year">yy</span>\n)
3743
+ expected << %(</span>\n)
3744
+
3745
+ expected << %(<span class="foo_month">\n)
3746
+ expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
3747
+ 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}
3748
+ expected << "</select>\n"
3749
+ expected << %(<span class="separator_month">mm</span>\n)
3750
+ expected << %(</span>\n)
3751
+
3752
+ expected << %(<span class="foo_day">\n)
3753
+ expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
3754
+ 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}
3755
+ expected << "</select>\n"
3756
+ expected << %(<span class="separator_day">dd</span>\n)
3757
+ expected << %(</span>\n)
3758
+
3759
+ expected << " &mdash; "
3760
+
3761
+ expected << %(<span class="foo_hour">\n)
3762
+ expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
3763
+ 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">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" 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}
3764
+ expected << "</select>\n"
3765
+ expected << %(<span class="separator_hour">h</span>\n)
3766
+ expected << %(</span>\n)
3767
+ expected << " : "
3768
+ expected << %(<span class="foo_minute">\n)
3769
+ expected << %{<select id="post_updated_at_5i" name="post[updated_at(5i)]">\n}
3770
+ 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">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" selected="selected">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}
3771
+ expected << "</select>\n"
3772
+ expected << %(<span class="separator_minute">min</span>\n)
3773
+ expected << %(</span>\n)
3774
+
3775
+ assert_dom_equal expected, datetime_select("post", "updated_at", use_separators: { wrapper_select_tag: { html_tag: :span, class_prefix: 'foo_' }})
3776
+ end
3777
+
3311
3778
  def test_date_select_with_zero_value_and_no_start_year
3312
3779
  expected = %(<select id="date_first_year" name="date[first][year]">\n)
3313
3780
  (Date.today.year-5).upto(Date.today.year+1) { |y| expected << %(<option value="#{y}">#{y}</option>\n) }