case_form 0.0.3

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.
Files changed (88) hide show
  1. data/CHANGELOG.rdoc +1 -0
  2. data/MIT-LICENSE.rdoc +20 -0
  3. data/Manifest +86 -0
  4. data/README.rdoc +0 -0
  5. data/Rakefile +30 -0
  6. data/TODO.rdoc +7 -0
  7. data/case_form.gemspec +31 -0
  8. data/lib/case_form.rb +88 -0
  9. data/lib/case_form/associations.rb +50 -0
  10. data/lib/case_form/buttons.rb +175 -0
  11. data/lib/case_form/core_ext/form_helper.rb +54 -0
  12. data/lib/case_form/core_ext/layout_helper.rb +16 -0
  13. data/lib/case_form/core_ext/sentence_error.rb +38 -0
  14. data/lib/case_form/element.rb +40 -0
  15. data/lib/case_form/element/base.rb +95 -0
  16. data/lib/case_form/element/button.rb +64 -0
  17. data/lib/case_form/element/error.rb +54 -0
  18. data/lib/case_form/element/errors/complex_error.rb +107 -0
  19. data/lib/case_form/element/errors/simple_error.rb +76 -0
  20. data/lib/case_form/element/fieldset.rb +35 -0
  21. data/lib/case_form/element/hint.rb +54 -0
  22. data/lib/case_form/element/input.rb +106 -0
  23. data/lib/case_form/element/inputs/collection/checkbox_input.rb +36 -0
  24. data/lib/case_form/element/inputs/collection/radio_input.rb +27 -0
  25. data/lib/case_form/element/inputs/collection/select_input.rb +22 -0
  26. data/lib/case_form/element/inputs/collection_input.rb +89 -0
  27. data/lib/case_form/element/inputs/datetime/date_input.rb +45 -0
  28. data/lib/case_form/element/inputs/datetime/date_time_input.rb +50 -0
  29. data/lib/case_form/element/inputs/datetime/time_input.rb +34 -0
  30. data/lib/case_form/element/inputs/datetime/time_zone_input.rb +24 -0
  31. data/lib/case_form/element/inputs/file_input.rb +13 -0
  32. data/lib/case_form/element/inputs/hidden_input.rb +17 -0
  33. data/lib/case_form/element/inputs/number_input.rb +42 -0
  34. data/lib/case_form/element/inputs/search_input.rb +32 -0
  35. data/lib/case_form/element/inputs/string_input.rb +18 -0
  36. data/lib/case_form/element/inputs/text_input.rb +19 -0
  37. data/lib/case_form/element/label.rb +52 -0
  38. data/lib/case_form/element/nested_model.rb +105 -0
  39. data/lib/case_form/element/nested_models/handle.rb +18 -0
  40. data/lib/case_form/element/nested_models/handles/destructor_handle.rb +47 -0
  41. data/lib/case_form/element/nested_models/handles/generator_handle.rb +55 -0
  42. data/lib/case_form/element_ext/associationable.rb +54 -0
  43. data/lib/case_form/element_ext/columnable.rb +21 -0
  44. data/lib/case_form/element_ext/naming.rb +17 -0
  45. data/lib/case_form/element_ext/validationable.rb +13 -0
  46. data/lib/case_form/errors.rb +189 -0
  47. data/lib/case_form/form_builder.rb +11 -0
  48. data/lib/case_form/inputs.rb +1095 -0
  49. data/lib/case_form/labels.rb +102 -0
  50. data/lib/case_form/version.rb +6 -0
  51. data/lib/generators/case_form/install_generator.rb +33 -0
  52. data/lib/generators/case_form/templates/case_form.rb +63 -0
  53. data/lib/generators/case_form/templates/javascripts/jquery.case_form.js +10 -0
  54. data/lib/generators/case_form/templates/javascripts/prototype.case_form.js +0 -0
  55. data/lib/generators/case_form/templates/locales/en.yml +28 -0
  56. data/lib/generators/case_form/templates/locales/pl.yml +28 -0
  57. data/lib/generators/case_form/templates/stylesheets/stylesheet.css +93 -0
  58. data/lib/generators/case_form/templates/stylesheets/stylesheet_changes.css +1 -0
  59. data/lib/generators/case_form/uninstall_generator.rb +30 -0
  60. data/rails/init.rb +1 -0
  61. data/test/element/button_test.rb +85 -0
  62. data/test/element/errors/complex_error_test.rb +140 -0
  63. data/test/element/errors/simple_error_test.rb +92 -0
  64. data/test/element/fieldset_test.rb +28 -0
  65. data/test/element/hint_test.rb +81 -0
  66. data/test/element/input_test.rb +197 -0
  67. data/test/element/inputs/collection/checkbox_input_test.rb +176 -0
  68. data/test/element/inputs/collection/radio_input_test.rb +156 -0
  69. data/test/element/inputs/collection/select_input_test.rb +152 -0
  70. data/test/element/inputs/datetime/date_input_test.rb +160 -0
  71. data/test/element/inputs/datetime/datetime_input_test.rb +227 -0
  72. data/test/element/inputs/datetime/time_input_test.rb +72 -0
  73. data/test/element/inputs/datetime/time_zone_input_test.rb +42 -0
  74. data/test/element/inputs/file_input_test.rb +13 -0
  75. data/test/element/inputs/hidden_input_test.rb +13 -0
  76. data/test/element/inputs/number_input_test.rb +50 -0
  77. data/test/element/inputs/search_input_test.rb +13 -0
  78. data/test/element/inputs/string_input_test.rb +33 -0
  79. data/test/element/inputs/text_input_test.rb +13 -0
  80. data/test/element/label_test.rb +62 -0
  81. data/test/element/nested_model_test.rb +163 -0
  82. data/test/element/nested_models/handles/destructor_handle_test.rb +35 -0
  83. data/test/element/nested_models/handles/generator_handle_test.rb +27 -0
  84. data/test/form_builder_test.rb +25 -0
  85. data/test/form_helper_test.rb +15 -0
  86. data/test/lib/models.rb +268 -0
  87. data/test/test_helper.rb +74 -0
  88. metadata +235 -0
@@ -0,0 +1,160 @@
1
+ # coding: utf-8
2
+ require 'test_helper'
3
+
4
+ class DateInputTest < ActionView::TestCase
5
+ def date_case_form_for(object, attribute, options={})
6
+ concat(case_form_for(object) { |f| f.date(attribute, options) })
7
+ end
8
+
9
+ test "should generate date input" do
10
+ date_case_form_for(@user, :created_at)
11
+ assert_select "select", 3
12
+ assert_select "select#user_created_at_1i", 1
13
+ assert_select "select#user_created_at_2i", 1
14
+ assert_select "select#user_created_at_3i", 1
15
+ end
16
+
17
+ test "should generate date input without year" do
18
+ date_case_form_for(@user, :created_at, :year => false)
19
+ assert_select "select", 2
20
+ assert_select "input[type=hidden]#user_created_at_1i", 1
21
+ end
22
+
23
+ test "should generate date input without year in elements" do
24
+ date_case_form_for(@user, :created_at, :elements => [:month, :day])
25
+ assert_select "select", 2
26
+ assert_select "input[type=hidden]#user_created_at_1i", 1
27
+ end
28
+
29
+ test "should generate date input without month" do
30
+ date_case_form_for(@user, :created_at, :month => false)
31
+ assert_select "select", 1 # no sense for only year and day
32
+ assert_select "input[type=hidden]#user_created_at_2i", 1
33
+ assert_select "input[type=hidden]#user_created_at_3i", 1
34
+ end
35
+
36
+ test "should generate date input without month in elements" do
37
+ date_case_form_for(@user, :created_at, :elements => [:year, :day])
38
+ assert_select "select", 1 # no sense for only year and day
39
+ assert_select "input[type=hidden]#user_created_at_2i", 1
40
+ assert_select "input[type=hidden]#user_created_at_3i", 1
41
+ end
42
+
43
+ test "should generate date input without day" do
44
+ date_case_form_for(@user, :created_at, :day => false)
45
+ assert_select "select", 2
46
+ assert_select "input[type=hidden]#user_created_at_3i", 1
47
+ end
48
+
49
+ test "should generate date input without day in elements" do
50
+ date_case_form_for(@user, :created_at, :elements => [:year, :month])
51
+ assert_select "select", 2
52
+ assert_select "input[type=hidden]#user_created_at_3i", 1
53
+ end
54
+
55
+ test "should generate date input with specific date" do
56
+ date_case_form_for(@user, :created_at, :date => Date.tomorrow)
57
+ assert_select("select#user_created_at_3i", 1) { assert_select "option[selected=selected]", :text => Date.tomorrow.day }
58
+ end
59
+
60
+ test "should generate date input with start and end year" do
61
+ date_case_form_for(@user, :created_at, :year => {:start => 2008, :end => 2012 })
62
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", 5 }
63
+ end
64
+
65
+ test "should generate date input with :start_year and :end_year" do
66
+ date_case_form_for(@user, :created_at, :start_year => 2008, :end_year => 2012)
67
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", 5 }
68
+ end
69
+
70
+ test "should generate date input with mixed :start_year and end year" do
71
+ date_case_form_for(@user, :created_at, :start_year => 2008, :year => { :end => 2012 })
72
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", 5 }
73
+ end
74
+
75
+ test "should generate date input with :start_year rather than start year" do
76
+ date_case_form_for(@user, :created_at, :start_year => 2008, :year => {:start => 2009}, :end_year => 2012)
77
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", 5 }
78
+ end
79
+
80
+ test "should generate date input with :end_year rather than end year" do
81
+ date_case_form_for(@user, :created_at, :end_year => 2012, :year => {:end => 2013}, :start_year => 2008)
82
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", 5 }
83
+ end
84
+
85
+ test "should generate date input with long months" do
86
+ date_case_form_for(@user, :created_at, :month => {:short => false})
87
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "February" }
88
+ end
89
+
90
+ test "should generate date input with short months" do
91
+ date_case_form_for(@user, :created_at, :month => {:short => true})
92
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "Feb" }
93
+ end
94
+
95
+ test "should generate date input without :short_month" do
96
+ date_case_form_for(@user, :created_at, :short_month => false)
97
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "February" }
98
+ end
99
+
100
+ test "should generate date input with :short_month" do
101
+ date_case_form_for(@user, :created_at, :short_month => true)
102
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "Feb" }
103
+ end
104
+
105
+ test "should generate date input with month names" do
106
+ date_case_form_for(@user, :created_at, :month => {:names => ["Styczownik", "Lutownik", "", "", "", "", "", "", "", "", "", ""]})
107
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "Lutownik" }
108
+ end
109
+
110
+ test "should generate date input with default month names when nil" do
111
+ date_case_form_for(@user, :created_at, :month => {:names => nil})
112
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "February" }
113
+ end
114
+
115
+ test "should generate date input without prompt" do
116
+ date_case_form_for(@user, :created_at, :prompt => false)
117
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", :count => 0, :text => "Year" }
118
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", :count => 0, :text => "Month" }
119
+ assert_select("select#user_created_at_3i", 1) { assert_select "option", :count => 0, :text => "Day" }
120
+ end
121
+
122
+ test "should generate date input with default prompt" do
123
+ date_case_form_for(@user, :created_at, :prompt => true)
124
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", "Year" }
125
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "Month" }
126
+ assert_select("select#user_created_at_3i", 1) { assert_select "option", "Day" }
127
+ end
128
+
129
+ test "should generate date input with specific prompt" do
130
+ date_case_form_for(@user, :created_at, :prompt => { :year => "Choose year", :month => "Choose month", :day => "Choose day"})
131
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", "Choose year" }
132
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "Choose month" }
133
+ assert_select("select#user_created_at_3i", 1) { assert_select "option", "Choose day" }
134
+ end
135
+
136
+ test "should generate date input with specific prompt as string" do
137
+ text = "Choose date"
138
+ date_case_form_for(@user, :created_at, :prompt => text)
139
+ assert_select("select", 3) { assert_select "option", text }
140
+ end
141
+
142
+ test "should generate date input without blank" do
143
+ date_case_form_for(@user, :created_at, :blank => false)
144
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", :count => 0, :text => "" }
145
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", :count => 0, :text => "" }
146
+ assert_select("select#user_created_at_3i", 1) { assert_select "option", :count => 0, :text => "" }
147
+ end
148
+
149
+ test "should generate date input with blank" do
150
+ date_case_form_for(@user, :created_at, :blank => true)
151
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", "" }
152
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "" }
153
+ assert_select("select#user_created_at_3i", 1) { assert_select "option", "" }
154
+ end
155
+
156
+ test "should generate date input as disabled" do
157
+ date_case_form_for(@user, :created_at, :disabled => true)
158
+ assert_select "select[disabled=disabled]", 3
159
+ end
160
+ end
@@ -0,0 +1,227 @@
1
+ # coding: utf-8
2
+ require 'test_helper'
3
+
4
+ class DateTimeInputTest < ActionView::TestCase
5
+ def datetime_case_form_for(object, attribute, options={})
6
+ concat(case_form_for(object) { |f| f.datetime(attribute, options) })
7
+ end
8
+
9
+ test "should generate datetime input" do
10
+ datetime_case_form_for(@user, :created_at)
11
+ assert_select "select", 5
12
+ assert_select "select#user_created_at_1i", 1
13
+ assert_select "select#user_created_at_2i", 1
14
+ assert_select "select#user_created_at_3i", 1
15
+ assert_select "select#user_created_at_4i", 1
16
+ assert_select "select#user_created_at_5i", 1
17
+ end
18
+
19
+ test "should generate datetime input without year" do
20
+ datetime_case_form_for(@user, :created_at, :year => false)
21
+ assert_select "select", 4
22
+ assert_select "input[type=hidden]#user_created_at_1i", 1
23
+ end
24
+
25
+ test "should generate datetime input without year in elements" do
26
+ datetime_case_form_for(@user, :created_at, :elements => [:month, :day, :hour, :minute, :second])
27
+ assert_select "select", 5
28
+ assert_select "input[type=hidden]#user_created_at_1i", 1
29
+ end
30
+
31
+ test "should generate datetime input without month" do
32
+ datetime_case_form_for(@user, :created_at, :month => false)
33
+ assert_select "select", 3 # no sense for only year and day
34
+ assert_select "input[type=hidden]#user_created_at_2i", 1
35
+ assert_select "input[type=hidden]#user_created_at_3i", 1
36
+ end
37
+
38
+ test "should generate datetime input without month in elements" do
39
+ datetime_case_form_for(@user, :created_at, :elements => [:year, :day, :hour, :minute, :second])
40
+ assert_select "select", 4 # no sense for only year and day
41
+ assert_select "input[type=hidden]#user_created_at_2i", 1
42
+ assert_select "input[type=hidden]#user_created_at_3i", 1
43
+ end
44
+
45
+ test "should generate datetime input without day" do
46
+ datetime_case_form_for(@user, :created_at, :day => false)
47
+ assert_select "select", 4
48
+ assert_select "input[type=hidden]#user_created_at_3i", 1
49
+ end
50
+
51
+ test "should generate datetime input without day in elements" do
52
+ datetime_case_form_for(@user, :created_at, :elements => [:year, :month, :hour, :minute, :second])
53
+ assert_select "select", 5
54
+ assert_select "input[type=hidden]#user_created_at_3i", 1
55
+ end
56
+
57
+ test "should generate datetime input without hour" do
58
+ datetime_case_form_for(@user, :created_at, :hour => false)
59
+ assert_select "select", 3 # no sense for time without hour (delete all time fields)
60
+ end
61
+
62
+ test "should generate datetime input without hour in elements" do
63
+ datetime_case_form_for(@user, :created_at, :elements => [:year, :month, :day, :minute, :second])
64
+ assert_select "select", 3 # no sense for time without hour (delete all time fields)
65
+ end
66
+
67
+ test "should generate datetime input without minute" do
68
+ datetime_case_form_for(@user, :created_at, :minute => false)
69
+ assert_select "select", 4
70
+ assert_select "input[type=hidden]#user_created_at_5i", 1
71
+ end
72
+
73
+ test "should generate datetime input without minute in elements" do
74
+ datetime_case_form_for(@user, :created_at, :elements => [:year, :month, :day, :hour, :second])
75
+ assert_select "select", 4 # no sense for second without minute (delete minute and second time fields)
76
+ assert_select "input[type=hidden]#user_created_at_5i", 1
77
+ end
78
+
79
+ test "should generate datetime input with second" do
80
+ datetime_case_form_for(@user, :created_at, :second => true)
81
+ assert_select "select", 6
82
+ end
83
+
84
+ test "should generate datetime input without second" do
85
+ datetime_case_form_for(@user, :created_at, :second => false)
86
+ assert_select "select", 5
87
+ assert_select "input[type=hidden]#user_created_at_6i", 0
88
+ end
89
+
90
+ test "should generate datetime input with second in elements" do
91
+ datetime_case_form_for(@user, :created_at, :elements => [:year, :month, :day, :hour, :minute, :second])
92
+ assert_select "select", 6
93
+ end
94
+
95
+ test "should generate datetime input without second in elements" do
96
+ datetime_case_form_for(@user, :created_at, :elements => [:year, :month, :day, :hour, :minute])
97
+ assert_select "select", 5
98
+ assert_select "input[type=hidden]#user_created_at_6i", 0
99
+ end
100
+
101
+ test "should generate datetime input with specific datetime" do
102
+ datetime = Time.now + 86400
103
+ datetime_case_form_for(@user, :created_at, :datetime => datetime)
104
+ assert_select("select#user_created_at_3i", 1) { assert_select "option[selected=selected]", :text => datetime.day }
105
+ end
106
+
107
+ test "should generate datetime input with start and end year" do
108
+ datetime_case_form_for(@user, :created_at, :year => {:start => 2008, :end => 2012 })
109
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", 5 }
110
+ end
111
+
112
+ test "should generate datetime input with :start_year and :end_year" do
113
+ datetime_case_form_for(@user, :created_at, :start_year => 2008, :end_year => 2012)
114
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", 5 }
115
+ end
116
+
117
+ test "should generate datetime input with mixed :start_year and end year" do
118
+ datetime_case_form_for(@user, :created_at, :start_year => 2008, :year => { :end => 2012 })
119
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", 5 }
120
+ end
121
+
122
+ test "should generate datetime input with :start_year rather than start year" do
123
+ datetime_case_form_for(@user, :created_at, :start_year => 2008, :year => {:start => 2009}, :end_year => 2012)
124
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", 5 }
125
+ end
126
+
127
+ test "should generate datetime input with :end_year rather than end year" do
128
+ datetime_case_form_for(@user, :created_at, :end_year => 2012, :year => {:end => 2013}, :start_year => 2008)
129
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", 5 }
130
+ end
131
+
132
+ test "should generate datetime input with long months" do
133
+ datetime_case_form_for(@user, :created_at, :month => {:short => false})
134
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "February" }
135
+ end
136
+
137
+ test "should generate datetime input with short months" do
138
+ datetime_case_form_for(@user, :created_at, :month => {:short => true})
139
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "Feb" }
140
+ end
141
+
142
+ test "should generate datetime input without :short_month" do
143
+ datetime_case_form_for(@user, :created_at, :short_month => false)
144
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "February" }
145
+ end
146
+
147
+ test "should generate datetime input with :short_month" do
148
+ datetime_case_form_for(@user, :created_at, :short_month => true)
149
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "Feb" }
150
+ end
151
+
152
+ test "should generate datetime input with month names" do
153
+ datetime_case_form_for(@user, :created_at, :month => {:names => ["Styczownik", "Lutownik", "", "", "", "", "", "", "", "", "", ""]})
154
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "Lutownik" }
155
+ end
156
+
157
+ test "should generate datetime input with default month names when nil" do
158
+ datetime_case_form_for(@user, :created_at, :month => {:names => nil})
159
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "February" }
160
+ end
161
+
162
+ test "should generate datetime input with minute step" do
163
+ datetime_case_form_for(@user, :created_at, :minute => {:step => 15})
164
+ assert_select("select#user_created_at_5i", 1) { assert_select "option", 4 }
165
+ end
166
+
167
+ test "should generate datetime input with :minute_step" do
168
+ datetime_case_form_for(@user, :created_at, :minute_step => 15 )
169
+ assert_select("select#user_created_at_5i", 1) { assert_select "option", 4 }
170
+ end
171
+
172
+ test "should generate datetime input without prompt" do
173
+ datetime_case_form_for(@user, :created_at, :prompt => false)
174
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", :count => 0, :text => "Year" }
175
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", :count => 0, :text => "Month" }
176
+ assert_select("select#user_created_at_3i", 1) { assert_select "option", :count => 0, :text => "Day" }
177
+ assert_select("select#user_created_at_4i", 1) { assert_select "option", :count => 0, :text => "Hour" }
178
+ assert_select("select#user_created_at_5i", 1) { assert_select "option", :count => 0, :text => "Minute" }
179
+ end
180
+
181
+ test "should generate datetime input with default prompt" do
182
+ datetime_case_form_for(@user, :created_at, :prompt => true)
183
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", "Year" }
184
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "Month" }
185
+ assert_select("select#user_created_at_3i", 1) { assert_select "option", "Day" }
186
+ assert_select("select#user_created_at_4i", 1) { assert_select "option", "Hour" }
187
+ assert_select("select#user_created_at_5i", 1) { assert_select "option", "Minute" }
188
+ end
189
+
190
+ test "should generate datetime input with specific prompt" do
191
+ datetime_case_form_for(@user, :created_at, :prompt => { :year => "Choose year", :month => "Choose month", :day => "Choose day", :hour => "Choose hour", :minute => "Choose minute"})
192
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", "Choose year" }
193
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "Choose month" }
194
+ assert_select("select#user_created_at_3i", 1) { assert_select "option", "Choose day" }
195
+ assert_select("select#user_created_at_4i", 1) { assert_select "option", "Choose hour" }
196
+ assert_select("select#user_created_at_5i", 1) { assert_select "option", "Choose minute" }
197
+ end
198
+
199
+ test "should generate datetime input with specific prompt as string" do
200
+ text = "Choose date and time"
201
+ datetime_case_form_for(@user, :created_at, :prompt => text)
202
+ assert_select("select", 5) { assert_select "option", text }
203
+ end
204
+
205
+ test "should generate datetime input without blank" do
206
+ datetime_case_form_for(@user, :created_at, :blank => false)
207
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", :count => 0, :text => "" }
208
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", :count => 0, :text => "" }
209
+ assert_select("select#user_created_at_3i", 1) { assert_select "option", :count => 0, :text => "" }
210
+ assert_select("select#user_created_at_4i", 1) { assert_select "option", :count => 0, :text => "" }
211
+ assert_select("select#user_created_at_5i", 1) { assert_select "option", :count => 0, :text => "" }
212
+ end
213
+
214
+ test "should generate datetime input with blank" do
215
+ datetime_case_form_for(@user, :created_at, :blank => true)
216
+ assert_select("select#user_created_at_1i", 1) { assert_select "option", "" }
217
+ assert_select("select#user_created_at_2i", 1) { assert_select "option", "" }
218
+ assert_select("select#user_created_at_3i", 1) { assert_select "option", "" }
219
+ assert_select("select#user_created_at_4i", 1) { assert_select "option", "" }
220
+ assert_select("select#user_created_at_5i", 1) { assert_select "option", "" }
221
+ end
222
+
223
+ test "should generate datetime input as disabled" do
224
+ datetime_case_form_for(@user, :created_at, :disabled => true)
225
+ assert_select "select[disabled=disabled]", 5
226
+ end
227
+ end
@@ -0,0 +1,72 @@
1
+ # coding: utf-8
2
+ require 'test_helper'
3
+
4
+ class TimeInputTest < ActionView::TestCase
5
+ def time_case_form_for(object, attribute, options={})
6
+ concat(case_form_for(object) { |f| f.time(attribute, options) })
7
+ end
8
+
9
+ test "should generate time input" do
10
+ time_case_form_for(@user, :created_at)
11
+ assert_select "select", 2 # for hour and minute
12
+ end
13
+
14
+ test "should generate time without date" do
15
+ time_case_form_for(@user, :created_at)
16
+ assert_select "input[type=hidden]#user_created_at_1i", 0
17
+ assert_select "input[type=hidden]#user_created_at_2i", 0
18
+ assert_select "input[type=hidden]#user_created_at_3i", 0
19
+ end
20
+
21
+ test "should generate time with date" do
22
+ time_case_form_for(@user, :created_at, :date => true)
23
+ assert_select "input[type=hidden]#user_created_at_1i", 1
24
+ assert_select "input[type=hidden]#user_created_at_2i", 1
25
+ assert_select "input[type=hidden]#user_created_at_3i", 1
26
+ end
27
+
28
+ test "should generate time with different order" do
29
+ time_case_form_for(@user, :created_at, :elements => [:second, :minute, :hour])
30
+ assert_select "select", 3 # for hour, minute and second
31
+ end
32
+
33
+ test "should generate time with own minute step" do
34
+ time_case_form_for(@user, :created_at, :minute_step => 10)
35
+ assert_select("select#user_created_at_5i") { assert_select "option", 6 }
36
+ end
37
+
38
+ test "should generate time with standard prompt" do
39
+ time_case_form_for(@user, :created_at, :prompt => true)
40
+ assert_select("select#user_created_at_4i") { assert_select "option", "Hour" }
41
+ assert_select("select#user_created_at_5i") { assert_select "option", "Minute" }
42
+ end
43
+
44
+ test "should generate time with own prompt" do
45
+ hour, minute = "Choose hour", "Choose minute"
46
+ time_case_form_for(@user, :created_at, :prompt => { :hour => hour, :minute => minute })
47
+ assert_select("select#user_created_at_4i") { assert_select "option", hour }
48
+ assert_select("select#user_created_at_5i") { assert_select "option", minute }
49
+ end
50
+
51
+ test "should generate time with own text prompt" do
52
+ text = "Choose time"
53
+ time_case_form_for(@user, :created_at, :prompt => text)
54
+ assert_select("select#user_created_at_4i") { assert_select "option", text }
55
+ assert_select("select#user_created_at_5i") { assert_select "option", text }
56
+ end
57
+
58
+ test "should generate time without blank" do
59
+ time_case_form_for(@user, :created_at, :blank => false)
60
+ assert_select("select") { assert_select "option", :count => 0 , :text => "" }
61
+ end
62
+
63
+ test "should generate time with blank" do
64
+ time_case_form_for(@user, :created_at, :blank => true)
65
+ assert_select("select") { assert_select "option", "" }
66
+ end
67
+
68
+ test "should generate disabled time" do
69
+ time_case_form_for(@user, :created_at, :disabled => true)
70
+ assert_select "select[disabled=disabled]", 2
71
+ end
72
+ end