simple_form 5.1.0 → 5.3.0

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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/MIT-LICENSE +1 -1
  4. data/README.md +64 -16
  5. data/lib/generators/simple_form/install_generator.rb +2 -2
  6. data/lib/generators/simple_form/templates/README +1 -1
  7. data/lib/generators/simple_form/templates/config/initializers/simple_form.rb +1 -1
  8. data/lib/generators/simple_form/templates/config/initializers/simple_form_bootstrap.rb +126 -194
  9. data/lib/simple_form/components/label_input.rb +1 -1
  10. data/lib/simple_form/form_builder.rb +2 -6
  11. data/lib/simple_form/inputs/boolean_input.rb +6 -2
  12. data/lib/simple_form/inputs/grouped_collection_select_input.rb +1 -1
  13. data/lib/simple_form/inputs/priority_input.rb +16 -2
  14. data/lib/simple_form/railtie.rb +4 -0
  15. data/lib/simple_form/version.rb +1 -1
  16. data/lib/simple_form/wrappers/leaf.rb +1 -1
  17. data/lib/simple_form.rb +9 -5
  18. metadata +11 -83
  19. data/test/action_view_extensions/builder_test.rb +0 -634
  20. data/test/action_view_extensions/form_helper_test.rb +0 -172
  21. data/test/components/custom_components_test.rb +0 -62
  22. data/test/components/label_test.rb +0 -352
  23. data/test/form_builder/association_test.rb +0 -252
  24. data/test/form_builder/button_test.rb +0 -48
  25. data/test/form_builder/error_notification_test.rb +0 -80
  26. data/test/form_builder/error_test.rb +0 -281
  27. data/test/form_builder/general_test.rb +0 -539
  28. data/test/form_builder/hint_test.rb +0 -150
  29. data/test/form_builder/input_field_test.rb +0 -195
  30. data/test/form_builder/label_test.rb +0 -136
  31. data/test/form_builder/wrapper_test.rb +0 -378
  32. data/test/generators/simple_form_generator_test.rb +0 -43
  33. data/test/inputs/boolean_input_test.rb +0 -243
  34. data/test/inputs/collection_check_boxes_input_test.rb +0 -323
  35. data/test/inputs/collection_radio_buttons_input_test.rb +0 -446
  36. data/test/inputs/collection_select_input_test.rb +0 -380
  37. data/test/inputs/color_input_test.rb +0 -10
  38. data/test/inputs/datetime_input_test.rb +0 -176
  39. data/test/inputs/disabled_test.rb +0 -92
  40. data/test/inputs/discovery_test.rb +0 -142
  41. data/test/inputs/file_input_test.rb +0 -17
  42. data/test/inputs/general_test.rb +0 -133
  43. data/test/inputs/grouped_collection_select_input_test.rb +0 -183
  44. data/test/inputs/hidden_input_test.rb +0 -32
  45. data/test/inputs/numeric_input_test.rb +0 -177
  46. data/test/inputs/priority_input_test.rb +0 -50
  47. data/test/inputs/readonly_test.rb +0 -102
  48. data/test/inputs/required_test.rb +0 -158
  49. data/test/inputs/rich_text_area_input_test.rb +0 -15
  50. data/test/inputs/string_input_test.rb +0 -158
  51. data/test/inputs/text_input_test.rb +0 -37
  52. data/test/simple_form_test.rb +0 -18
  53. data/test/support/discovery_inputs.rb +0 -65
  54. data/test/support/misc_helpers.rb +0 -274
  55. data/test/support/mock_controller.rb +0 -30
  56. data/test/support/models.rb +0 -357
  57. data/test/test_helper.rb +0 -95
@@ -1,380 +0,0 @@
1
- # frozen_string_literal: true
2
- # encoding: UTF-8
3
- require 'test_helper'
4
-
5
- class CollectionSelectInputTest < ActionView::TestCase
6
- test 'input generates a boolean select with options by default for select types' do
7
- with_input_for @user, :active, :select
8
- assert_select 'select.select#user_active'
9
- assert_select 'select option[value=true]', 'Yes'
10
- assert_select 'select option[value=false]', 'No'
11
- end
12
-
13
- test 'input as select uses i18n to translate select boolean options' do
14
- store_translations(:en, simple_form: { yes: 'Sim', no: 'Não' }) do
15
- with_input_for @user, :active, :select
16
- assert_select 'select option[value=true]', 'Sim'
17
- assert_select 'select option[value=false]', 'Não'
18
- end
19
- end
20
-
21
- test 'input allows overriding collection for select types' do
22
- with_input_for @user, :name, :select, collection: %w[Jose Carlos]
23
- assert_select 'select.select#user_name'
24
- assert_select 'select option', 'Jose'
25
- assert_select 'select option', 'Carlos'
26
- end
27
-
28
- test 'input does automatic collection translation for select types using defaults key' do
29
- store_translations(:en, simple_form: { options: { defaults: {
30
- gender: { male: 'Male', female: 'Female' }
31
- } } }) do
32
- with_input_for @user, :gender, :select, collection: %i[male female]
33
- assert_select 'select.select#user_gender'
34
- assert_select 'select option', 'Male'
35
- assert_select 'select option', 'Female'
36
- end
37
- end
38
-
39
- test 'input does automatic collection translation for select types using specific object key' do
40
- store_translations(:en, simple_form: { options: { user: {
41
- gender: { male: 'Male', female: 'Female' }
42
- } } }) do
43
- with_input_for @user, :gender, :select, collection: %i[male female]
44
- assert_select 'select.select#user_gender'
45
- assert_select 'select option', 'Male'
46
- assert_select 'select option', 'Female'
47
- end
48
- end
49
-
50
- test 'input marks the selected value by default' do
51
- @user.name = "Carlos"
52
- with_input_for @user, :name, :select, collection: %w[Jose Carlos]
53
- assert_select 'select option[selected=selected]', 'Carlos'
54
- end
55
-
56
- test 'input accepts html options as the last element of collection' do
57
- with_input_for @user, :name, :select, collection: [['Jose', class: 'foo']]
58
- assert_select 'select.select#user_name'
59
- assert_select 'select option.foo', 'Jose'
60
- end
61
-
62
- test 'input marks the selected value also when using integers' do
63
- @user.age = 18
64
- with_input_for @user, :age, :select, collection: 18..60
65
- assert_select 'select option[selected=selected]', '18'
66
- end
67
-
68
- test 'input marks the selected value when using booleans and select' do
69
- @user.active = false
70
- with_input_for @user, :active, :select
71
- assert_no_select 'select option[selected][value=true]', 'Yes'
72
- assert_select 'select option[selected][value=false]', 'No'
73
- end
74
-
75
- test 'input sets the correct value when using a collection that includes floats' do
76
- with_input_for @user, :age, :select, collection: [2.0, 2.5, 3.0, 3.5, 4.0, 4.5]
77
- assert_select 'select option[value="2.0"]'
78
- assert_select 'select option[value="2.5"]'
79
- end
80
-
81
- test 'input sets the correct values when using a collection that uses mixed values' do
82
- with_input_for @user, :age, :select, collection: ["Hello Kitty", 2, 4.5, :johnny, nil, true, false]
83
- assert_select 'select option[value="Hello Kitty"]'
84
- assert_select 'select option[value="2"]'
85
- assert_select 'select option[value="4.5"]'
86
- assert_select 'select option[value="johnny"]'
87
- assert_select 'select option[value=""]'
88
- assert_select 'select option[value="true"]'
89
- assert_select 'select option[value="false"]'
90
- end
91
-
92
- test 'input includes a blank option even if :include_blank is set to false if the collection includes a nil value' do
93
- with_input_for @user, :age, :select, collection: [nil], include_blank: false
94
- assert_select 'select option[value=""]'
95
- end
96
-
97
- test 'input automatically sets include blank' do
98
- with_input_for @user, :age, :select, collection: 18..30
99
- assert_select 'select option[value=""]', ''
100
- end
101
-
102
- test 'input translates include blank when set to :translate' do
103
- store_translations(:en, simple_form: { include_blanks: { user: {
104
- age: 'Rather not say'
105
- } } }) do
106
- with_input_for @user, :age, :select, collection: 18..30, include_blank: :translate
107
- assert_select 'select option[value=""]', 'Rather not say'
108
- end
109
- end
110
-
111
- test 'input translates include blank with a default' do
112
- store_translations(:en, simple_form: { include_blanks: { defaults: {
113
- age: 'Rather not say'
114
- } } }) do
115
- with_input_for @user, :age, :select, collection: 18..30, include_blank: :translate
116
- assert_select 'select option[value=""]', 'Rather not say'
117
- end
118
- end
119
-
120
- test 'input does not translate include blank when set to a string' do
121
- store_translations(:en, simple_form: { include_blanks: { user: {
122
- age: 'Rather not say'
123
- } } }) do
124
- with_input_for @user, :age, :select, collection: 18..30, include_blank: 'Young at heart'
125
- assert_select 'select option[value=""]', 'Young at heart'
126
- end
127
- end
128
-
129
- test 'input does not translate include blank when automatically set' do
130
- store_translations(:en, simple_form: { include_blanks: { user: {
131
- age: 'Rather not say'
132
- } } }) do
133
- with_input_for @user, :age, :select, collection: 18..30
134
- assert_select 'select option[value=""]', ''
135
- end
136
- end
137
-
138
- test 'input does not translate include blank when set to true' do
139
- store_translations(:en, simple_form: { include_blanks: { user: {
140
- age: 'Rather not say'
141
- } } }) do
142
- with_input_for @user, :age, :select, collection: 18..30, include_blank: true
143
- assert_select 'select option[value=""]', ''
144
- end
145
- end
146
-
147
- test 'input does not translate include blank when set to false' do
148
- store_translations(:en, simple_form: { include_blanks: { user: {
149
- age: 'Rather not say'
150
- } } }) do
151
- with_input_for @user, :age, :select, collection: 18..30, include_blank: false
152
- assert_no_select 'select option[value=""]'
153
- end
154
- end
155
-
156
- test 'input does not set include blank if otherwise is told' do
157
- with_input_for @user, :age, :select, collection: 18..30, include_blank: false
158
- assert_no_select 'select option[value=""]'
159
- end
160
-
161
- test 'input does not set include blank if prompt is given' do
162
- with_input_for @user, :age, :select, collection: 18..30, prompt: "Please select foo"
163
- assert_no_select 'select option[value=""]', ''
164
- end
165
-
166
- test 'input does not set include blank if multiple is given' do
167
- with_input_for @user, :age, :select, collection: 18..30, input_html: { multiple: true }
168
- assert_no_select 'select option[value=""]', ''
169
- end
170
-
171
- test 'input translates prompt when set to :translate' do
172
- store_translations(:en, simple_form: { prompts: { user: {
173
- age: 'Select age:'
174
- } } }) do
175
- with_input_for @user, :age, :select, collection: 18..30, prompt: :translate
176
- assert_select 'select option[value=""]', 'Select age:'
177
- end
178
- end
179
-
180
- test 'input translates prompt with a default' do
181
- store_translations(:en, simple_form: { prompts: { defaults: {
182
- age: 'Select age:'
183
- } } }) do
184
- with_input_for @user, :age, :select, collection: 18..30, prompt: :translate
185
- assert_select 'select option[value=""]', 'Select age:'
186
- end
187
- end
188
-
189
- test 'input does not translate prompt when set to a string' do
190
- store_translations(:en, simple_form: { prompts: { user: {
191
- age: 'Select age:'
192
- } } }) do
193
- with_input_for @user, :age, :select, collection: 18..30, prompt: 'Do it:'
194
- assert_select 'select option[value=""]', 'Do it:'
195
- end
196
- end
197
-
198
- test 'input does not translate prompt when set to false' do
199
- store_translations(:en, simple_form: { prompts: { user: {
200
- age: 'Select age:'
201
- } } }) do
202
- with_input_for @user, :age, :select, collection: 18..30, prompt: false
203
- assert_no_select 'select option[value=""]'
204
- end
205
- end
206
-
207
- test 'input uses Rails prompt translation as a fallback' do
208
- store_translations(:en, helpers: { select: {
209
- prompt: 'Select value:'
210
- } }) do
211
- with_input_for @user, :age, :select, collection: 18..30, prompt: :translate
212
- assert_select 'select option[value=""]', "Select value:"
213
- end
214
- end
215
-
216
- test 'input detects label and value on collections' do
217
- users = [User.build(id: 1, name: "Jose"), User.build(id: 2, name: "Carlos")]
218
- with_input_for @user, :description, :select, collection: users
219
- assert_select 'select option[value="1"]', 'Jose'
220
- assert_select 'select option[value="2"]', 'Carlos'
221
- end
222
-
223
- test 'input disables the anothers components when the option is a object' do
224
- with_input_for @user, :description, :select, collection: %w[Jose Carlos], disabled: true
225
- assert_no_select 'select option[value=Jose][disabled=disabled]', 'Jose'
226
- assert_no_select 'select option[value=Carlos][disabled=disabled]', 'Carlos'
227
- assert_select 'select[disabled=disabled]'
228
- assert_select 'div.disabled'
229
- end
230
-
231
- test 'input does not disable the anothers components when the option is a object' do
232
- with_input_for @user, :description, :select, collection: %w[Jose Carlos], disabled: 'Jose'
233
- assert_select 'select option[value=Jose][disabled=disabled]', 'Jose'
234
- assert_no_select 'select option[value=Carlos][disabled=disabled]', 'Carlos'
235
- assert_no_select 'select[disabled=disabled]'
236
- assert_no_select 'div.disabled'
237
- end
238
-
239
- test 'input allows overriding label and value method using a lambda for collection selects' do
240
- with_input_for @user, :name, :select,
241
- collection: %w[Jose Carlos],
242
- label_method: ->(i) { i.upcase },
243
- value_method: ->(i) { i.downcase }
244
- assert_select 'select option[value=jose]', "JOSE"
245
- assert_select 'select option[value=carlos]', "CARLOS"
246
- end
247
-
248
- test 'input allows overriding only label but not value method using a lambda for collection select' do
249
- with_input_for @user, :name, :select,
250
- collection: %w[Jose Carlos],
251
- label_method: ->(i) { i.upcase }
252
- assert_select 'select option[value=Jose]', "JOSE"
253
- assert_select 'select option[value=Carlos]', "CARLOS"
254
- end
255
-
256
- test 'input allows overriding only value but not label method using a lambda for collection select' do
257
- with_input_for @user, :name, :select,
258
- collection: %w[Jose Carlos],
259
- value_method: ->(i) { i.downcase }
260
- assert_select 'select option[value=jose]', "Jose"
261
- assert_select 'select option[value=carlos]', "Carlos"
262
- end
263
-
264
- test 'input allows symbols for collections' do
265
- with_input_for @user, :name, :select, collection: %i[jose carlos]
266
- assert_select 'select.select#user_name'
267
- assert_select 'select option[value=jose]', 'jose'
268
- assert_select 'select option[value=carlos]', 'carlos'
269
- end
270
-
271
- test 'collection input with select type generates required html attribute only with blank option' do
272
- with_input_for @user, :name, :select, include_blank: true, collection: %w[Jose Carlos]
273
- assert_select 'select.required'
274
- assert_select 'select[required]'
275
- end
276
-
277
- test 'collection input with select type generates required html attribute only with blank option or prompt' do
278
- with_input_for @user, :name, :select, prompt: 'Name...', collection: %w[Jose Carlos]
279
- assert_select 'select.required'
280
- assert_select 'select[required]'
281
- end
282
-
283
- test "collection input generated aria-label should contain 'true'" do
284
- with_input_for @user, :age, :select, collection: 18..30, prompt: "Please select foo"
285
- assert_select 'select.required'
286
- assert_select 'select[aria-required=true]'
287
- end
288
-
289
- test 'collection input with select type does not generate required html attribute without blank option' do
290
- with_input_for @user, :name, :select, include_blank: false, collection: %w[Jose Carlos]
291
- assert_select 'select.required'
292
- assert_no_select 'select[required]'
293
- assert_no_select 'select[aria-required=true]'
294
- end
295
-
296
- test 'collection input with select type with multiple attribute generates required html attribute without blank option' do
297
- with_input_for @user, :name, :select, include_blank: false, input_html: { multiple: true }, collection: %w[Jose Carlos]
298
- assert_select 'select.required'
299
- assert_select 'select[required]'
300
- end
301
-
302
- test 'collection input with select type with multiple attribute generates required html attribute with blank option' do
303
- with_input_for @user, :name, :select, include_blank: true, input_html: { multiple: true }, collection: %w[Jose Carlos]
304
- assert_select 'select.required'
305
- assert_select 'select[required]'
306
- end
307
-
308
- test 'with a blank option, a collection input of type select has an aria-required html attribute' do
309
- with_input_for @user, :name, :select, include_blank: true, collection: %w[Jose Carlos]
310
- assert_select 'select.required'
311
- assert_select 'select[aria-required=true]'
312
- end
313
-
314
- test 'without a blank option, a collection input of type select does not have an aria-required html attribute' do
315
- with_input_for @user, :name, :select, include_blank: false, collection: %w[Jose Carlos]
316
- assert_select 'select.required'
317
- assert_no_select 'select[aria-required]'
318
- end
319
-
320
- test 'without a blank option and with a multiple option, a collection input of type select has an aria-required html attribute' do
321
- with_input_for @user, :name, :select, include_blank: false, input_html: { multiple: true }, collection: %w[Jose Carlos]
322
- assert_select 'select.required'
323
- assert_select 'select[aria-required=true]'
324
- end
325
-
326
- test 'with a blank option and a multiple option, a collection input of type select has an aria-required html attribute' do
327
- with_input_for @user, :name, :select, include_blank: true, input_html: { multiple: true }, collection: %w[Jose Carlos]
328
- assert_select 'select.required'
329
- assert_select 'select[aria-required]'
330
- end
331
-
332
- test 'input allows disabled options with a lambda for collection select' do
333
- with_input_for @user, :name, :select, collection: %w[Carlos Antonio],
334
- disabled: ->(x) { x == "Carlos" }
335
- assert_select 'select option[value=Carlos][disabled=disabled]', 'Carlos'
336
- assert_select 'select option[value=Antonio]', 'Antonio'
337
- assert_no_select 'select option[value=Antonio][disabled]'
338
- end
339
-
340
- test 'input allows disabled and label method with lambdas for collection select' do
341
- with_input_for @user, :name, :select, collection: %w[Carlos Antonio],
342
- disabled: ->(x) { x == "Carlos" }, label_method: ->(x) { x.upcase }
343
- assert_select 'select option[value=Carlos][disabled=disabled]', 'CARLOS'
344
- assert_select 'select option[value=Antonio]', 'ANTONIO'
345
- assert_no_select 'select option[value=Antonio][disabled]'
346
- end
347
-
348
- test 'input allows a non lambda disabled option with lambda label method for collections' do
349
- with_input_for @user, :name, :select, collection: %w[Carlos Antonio],
350
- disabled: "Carlos", label_method: ->(x) { x.upcase }
351
- assert_select 'select option[value=Carlos][disabled=disabled]', 'CARLOS'
352
- assert_select 'select option[value=Antonio]', 'ANTONIO'
353
- assert_no_select 'select option[value=Antonio][disabled]'
354
- end
355
-
356
- test 'input allows selected and label method with lambdas for collection select' do
357
- with_input_for @user, :name, :select, collection: %w[Carlos Antonio],
358
- selected: ->(x) { x == "Carlos" }, label_method: ->(x) { x.upcase }
359
- assert_select 'select option[value=Carlos][selected=selected]', 'CARLOS'
360
- assert_select 'select option[value=Antonio]', 'ANTONIO'
361
- assert_no_select 'select option[value=Antonio][selected]'
362
- end
363
-
364
- test 'input allows a non lambda selected option with lambda label method for collection select' do
365
- with_input_for @user, :name, :select, collection: %w[Carlos Antonio],
366
- selected: "Carlos", label_method: ->(x) { x.upcase }
367
- assert_select 'select option[value=Carlos][selected=selected]', 'CARLOS'
368
- assert_select 'select option[value=Antonio]', 'ANTONIO'
369
- assert_no_select 'select option[value=Antonio][selected]'
370
- end
371
-
372
- test 'input does not override default selection through attribute value with label method as lambda for collection select' do
373
- @user.name = "Carlos"
374
- with_input_for @user, :name, :select, collection: %w[Carlos Antonio],
375
- label_method: ->(x) { x.upcase }
376
- assert_select 'select option[value=Carlos][selected=selected]', 'CARLOS'
377
- assert_select 'select option[value=Antonio]', 'ANTONIO'
378
- assert_no_select 'select option[value=Antonio][selected]'
379
- end
380
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class ColorInputTest < ActionView::TestCase
6
- test 'input generates a color field' do
7
- with_input_for @user, :favorite_color, :color
8
- assert_select 'input[type=color].color#user_favorite_color'
9
- end
10
- end
@@ -1,176 +0,0 @@
1
- # frozen_string_literal: true
2
- # encoding: UTF-8
3
- require 'test_helper'
4
-
5
- # Tests for datetime, date and time inputs when HTML5 compatibility is enabled in the wrapper.
6
- class DateTimeInputWithHtml5Test < ActionView::TestCase
7
- test 'input generates a datetime input for datetime attributes if HTML5 compatibility is explicitly enbled' do
8
- with_input_for @user, :created_at, :datetime, html5: true
9
- assert_select 'input[type="datetime-local"]'
10
- end
11
-
12
- test 'input generates a datetime select for datetime attributes' do
13
- with_input_for @user, :created_at, :datetime
14
-
15
- assert_select 'select.datetime'
16
- end
17
-
18
- test 'input generates a date input for date attributes if HTML5 compatibility is explicitly enbled' do
19
- with_input_for @user, :born_at, :date, html5: true
20
-
21
- assert_select 'input[type="date"]'
22
- end
23
-
24
- test 'input generates a date select for date attributes' do
25
- with_input_for @user, :born_at, :date
26
-
27
- assert_select 'select.date'
28
- end
29
-
30
- test 'input generates a time input for time attributes if HTML5 compatibility is explicitly enbled' do
31
- with_input_for @user, :delivery_time, :time, html5: true
32
-
33
- assert_select 'input[type="time"]'
34
- end
35
-
36
- test 'input generates a time select for time attributes' do
37
- with_input_for @user, :delivery_time, :time
38
-
39
- assert_select 'select.time'
40
- end
41
-
42
- test 'input generates required html attribute' do
43
- with_input_for @user, :delivery_time, :time, required: true, html5: true
44
- assert_select 'input.required'
45
- assert_select 'input[required]'
46
- end
47
-
48
- test 'input has an aria-required html attribute' do
49
- with_input_for @user, :delivery_time, :time, required: true, html5: true
50
- assert_select 'input[aria-required=true]'
51
- end
52
- end
53
-
54
- # Tests for datetime, date and time inputs when HTML5 compatibility is enabled in the wrapper.
55
- class DateTimeInputWithoutHtml5Test < ActionView::TestCase
56
- test 'input generates a datetime select by default for datetime attributes' do
57
- swap_wrapper do
58
- with_input_for @user, :created_at, :datetime
59
- 1.upto(5) do |i|
60
- assert_select "form select.datetime#user_created_at_#{i}i"
61
- end
62
- end
63
- end
64
-
65
- test 'input is able to pass options to datetime select' do
66
- with_input_for @user, :created_at, :datetime, html5: false,
67
- disabled: true, prompt: { year: 'ano', month: 'mês', day: 'dia' }
68
-
69
- assert_select 'select.datetime[disabled=disabled]'
70
- assert_select 'select.datetime option', 'ano'
71
- assert_select 'select.datetime option', 'mês'
72
- assert_select 'select.datetime option', 'dia'
73
- end
74
-
75
- test 'input generates a datetime input for datetime attributes if HTML5 compatibility is explicitly enabled' do
76
- swap_wrapper do
77
- with_input_for @user, :created_at, :datetime, html5: true
78
- assert_select 'input[type="datetime-local"]'
79
- end
80
- end
81
-
82
- test 'input generates a date select for date attributes' do
83
- swap_wrapper do
84
- with_input_for @user, :born_at, :date
85
- assert_select 'select.date#user_born_at_1i'
86
- assert_select 'select.date#user_born_at_2i'
87
- assert_select 'select.date#user_born_at_3i'
88
- assert_no_select 'select.date#user_born_at_4i'
89
- end
90
- end
91
-
92
- test 'input is able to pass options to date select' do
93
- with_input_for @user, :born_at, :date, as: :date, html5: false,
94
- disabled: true, prompt: { year: 'ano', month: 'mês', day: 'dia' }
95
-
96
- assert_select 'select.date[disabled=disabled]'
97
- assert_select 'select.date option', 'ano'
98
- assert_select 'select.date option', 'mês'
99
- assert_select 'select.date option', 'dia'
100
- end
101
-
102
- test 'input is able to pass :default to date select' do
103
- with_input_for @user, :born_at, :date, default: Date.today, html5: false
104
- assert_select "select.date option[value='#{Date.today.year}'][selected=selected]"
105
- end
106
-
107
- test 'input generates a date input for date attributes if HTML5 compatibility is explicitly enabled' do
108
- swap_wrapper do
109
- with_input_for @user, :born_at, :date, html5: true
110
-
111
- assert_select 'input[type="date"]'
112
- end
113
- end
114
-
115
- test 'input generates a time select for time attributes' do
116
- swap_wrapper do
117
- with_input_for @user, :delivery_time, :time
118
- assert_select 'input[type=hidden]#user_delivery_time_1i'
119
- assert_select 'input[type=hidden]#user_delivery_time_2i'
120
- assert_select 'input[type=hidden]#user_delivery_time_3i'
121
- assert_select 'select.time#user_delivery_time_4i'
122
- assert_select 'select.time#user_delivery_time_5i'
123
- end
124
- end
125
-
126
- test 'input is able to pass options to time select' do
127
- with_input_for @user, :delivery_time, :time, required: true, html5: false,
128
- disabled: true, prompt: { hour: 'hora', minute: 'minuto' }
129
-
130
- assert_select 'select.time[disabled=disabled]'
131
- assert_select 'select.time option', 'hora'
132
- assert_select 'select.time option', 'minuto'
133
- end
134
-
135
- test 'input generates a time input for time attributes if HTML5 compatibility is explicitly enabled' do
136
- swap_wrapper do
137
- with_input_for @user, :delivery_time, :time, html5: true
138
-
139
- assert_select 'input[type="time"]'
140
- end
141
- end
142
-
143
- test 'label uses i18n to get target for date input type' do
144
- store_translations(:en, date: { order: %w[month day year] }) do
145
- with_input_for :project, :created_at, :date, html5: false
146
- assert_select 'label[for=project_created_at_2i]'
147
- end
148
- end
149
-
150
- test 'label uses i18n to get target for datetime input type' do
151
- store_translations(:en, date: { order: %w[month day year] }) do
152
- with_input_for :project, :created_at, :datetime, html5: false
153
- assert_select 'label[for=project_created_at_2i]'
154
- end
155
- end
156
-
157
- test 'label uses order to get target when date input type' do
158
- with_input_for :project, :created_at, :date, order: %w[month year day], html5: false
159
- assert_select 'label[for=project_created_at_2i]'
160
- end
161
-
162
- test 'label uses order to get target when datetime input type' do
163
- with_input_for :project, :created_at, :datetime, order: %w[month year day], html5: false
164
- assert_select 'label[for=project_created_at_2i]'
165
- end
166
-
167
- test 'label points to first option when time input type' do
168
- with_input_for :project, :created_at, :time, html5: false
169
- assert_select 'label[for=project_created_at_4i]'
170
- end
171
-
172
- test 'label points to attribute name if HTML5 compatibility is explicitly enabled' do
173
- with_input_for :project, :created_at, :date, html5: true
174
- assert_select 'label[for=project_created_at]'
175
- end
176
- end
@@ -1,92 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'test_helper'
3
-
4
- class DisabledTest < ActionView::TestCase
5
- test 'string input is disabled when disabled option is true' do
6
- with_input_for @user, :name, :string, disabled: true
7
- assert_select 'input.string.disabled[disabled]'
8
- end
9
-
10
- test 'text input is disabled when disabled option is true' do
11
- with_input_for @user, :description, :text, disabled: true
12
- assert_select 'textarea.text.disabled[disabled]'
13
- end
14
-
15
- test 'numeric input is disabled when disabled option is true' do
16
- with_input_for @user, :age, :integer, disabled: true
17
- assert_select 'input.integer.disabled[disabled]'
18
- end
19
-
20
- test 'date input is disabled when disabled option is true' do
21
- with_input_for @user, :born_at, :date, disabled: true
22
- assert_select 'select.date.disabled[disabled]'
23
- end
24
-
25
- test 'datetime input is disabled when disabled option is true' do
26
- with_input_for @user, :created_at, :datetime, disabled: true
27
- assert_select 'select.datetime.disabled[disabled]'
28
- end
29
-
30
- test 'string input does not be disabled when disabled option is false' do
31
- with_input_for @user, :name, :string, disabled: false
32
- assert_no_select 'input.string.disabled[disabled]'
33
- end
34
-
35
- test 'text input does not be disabled when disabled option is false' do
36
- with_input_for @user, :description, :text, disabled: false
37
- assert_no_select 'textarea.text.disabled[disabled]'
38
- end
39
-
40
- test 'numeric input does not be disabled when disabled option is false' do
41
- with_input_for @user, :age, :integer, disabled: false
42
- assert_no_select 'input.integer.disabled[disabled]'
43
- end
44
-
45
- test 'date input does not be disabled when disabled option is false' do
46
- with_input_for @user, :born_at, :date, disabled: false
47
- assert_no_select 'select.date.disabled[disabled]'
48
- end
49
-
50
- test 'datetime input does not be disabled when disabled option is false' do
51
- with_input_for @user, :created_at, :datetime, disabled: false
52
- assert_no_select 'select.datetime.disabled[disabled]'
53
- end
54
-
55
- test 'string input does not be disabled when disabled option is not present' do
56
- with_input_for @user, :name, :string
57
- assert_no_select 'input.string.disabled[disabled]'
58
- end
59
-
60
- test 'text input does not be disabled when disabled option is not present' do
61
- with_input_for @user, :description, :text
62
- assert_no_select 'textarea.text.disabled[disabled]'
63
- end
64
-
65
- test 'numeric input does not be disabled when disabled option is not present' do
66
- with_input_for @user, :age, :integer
67
- assert_no_select 'input.integer.disabled[disabled]'
68
- end
69
-
70
- test 'date input does not be disabled when disabled option is not present' do
71
- with_input_for @user, :born_at, :date
72
- assert_no_select 'select.date.disabled[disabled]'
73
- end
74
-
75
- test 'datetime input does not be disabled when disabled option is not present' do
76
- with_input_for @user, :created_at, :datetime
77
- assert_no_select 'select.datetime.disabled[disabled]'
78
- end
79
-
80
- test 'input_field collection allows disabled select' do
81
- with_input_field_for @user, :description, collection: ['foo', 'bar'], disabled: true
82
- assert_select 'select[disabled]'
83
- assert_no_select 'option[disabled]'
84
- end
85
-
86
- test 'input_field collection allows individual disabled options' do
87
- with_input_field_for @user, :description, collection: ['foo', 'bar'], disabled: 'bar'
88
- assert_no_select 'select[disabled]'
89
- assert_no_select 'option[disabled][value=foo]'
90
- assert_select 'option[disabled][value=bar]'
91
- end
92
- end