date_select_separator 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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) }