simple_form 2.1.3 → 3.0.0.rc

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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -50
  3. data/README.md +140 -116
  4. data/lib/generators/simple_form/install_generator.rb +4 -4
  5. data/lib/generators/simple_form/templates/README +2 -2
  6. data/lib/generators/simple_form/templates/config/initializers/simple_form.rb +13 -13
  7. data/lib/generators/simple_form/templates/config/initializers/simple_form_bootstrap.rb +16 -16
  8. data/lib/generators/simple_form/templates/config/initializers/simple_form_foundation.rb +3 -3
  9. data/lib/simple_form/action_view_extensions/builder.rb +1 -320
  10. data/lib/simple_form/action_view_extensions/form_helper.rb +2 -9
  11. data/lib/simple_form/components/errors.rb +1 -7
  12. data/lib/simple_form/components/hints.rb +2 -7
  13. data/lib/simple_form/components/html5.rb +5 -2
  14. data/lib/simple_form/components/labels.rb +4 -4
  15. data/lib/simple_form/components/maxlength.rb +1 -8
  16. data/lib/simple_form/components/pattern.rb +2 -2
  17. data/lib/simple_form/components.rb +1 -1
  18. data/lib/simple_form/error_notification.rb +2 -2
  19. data/lib/simple_form/form_builder.rb +148 -50
  20. data/lib/simple_form/helpers.rb +1 -1
  21. data/lib/simple_form/inputs/base.rb +3 -10
  22. data/lib/simple_form/inputs/block_input.rb +1 -1
  23. data/lib/simple_form/inputs/boolean_input.rb +6 -6
  24. data/lib/simple_form/inputs/collection_input.rb +7 -7
  25. data/lib/simple_form/inputs/numeric_input.rb +0 -6
  26. data/lib/simple_form/inputs/password_input.rb +0 -1
  27. data/lib/simple_form/inputs/string_input.rb +0 -1
  28. data/lib/simple_form/railtie.rb +7 -0
  29. data/lib/simple_form/tags.rb +61 -0
  30. data/lib/simple_form/version.rb +1 -1
  31. data/lib/simple_form/wrappers/builder.rb +5 -29
  32. data/lib/simple_form/wrappers/many.rb +1 -1
  33. data/lib/simple_form/wrappers/root.rb +1 -1
  34. data/lib/simple_form/wrappers.rb +1 -1
  35. data/lib/simple_form.rb +39 -47
  36. data/test/action_view_extensions/builder_test.rb +75 -95
  37. data/test/action_view_extensions/form_helper_test.rb +25 -16
  38. data/test/components/label_test.rb +46 -46
  39. data/test/form_builder/association_test.rb +39 -29
  40. data/test/form_builder/button_test.rb +4 -4
  41. data/test/form_builder/error_notification_test.rb +8 -8
  42. data/test/form_builder/error_test.rb +18 -65
  43. data/test/form_builder/general_test.rb +60 -74
  44. data/test/form_builder/hint_test.rb +23 -29
  45. data/test/form_builder/input_field_test.rb +12 -12
  46. data/test/form_builder/label_test.rb +6 -16
  47. data/test/form_builder/wrapper_test.rb +21 -21
  48. data/test/inputs/boolean_input_test.rb +23 -35
  49. data/test/inputs/collection_check_boxes_input_test.rb +61 -55
  50. data/test/inputs/collection_radio_buttons_input_test.rb +76 -79
  51. data/test/inputs/collection_select_input_test.rb +70 -51
  52. data/test/inputs/datetime_input_test.rb +17 -11
  53. data/test/inputs/disabled_test.rb +10 -10
  54. data/test/inputs/discovery_test.rb +4 -4
  55. data/test/inputs/file_input_test.rb +1 -1
  56. data/test/inputs/general_test.rb +12 -12
  57. data/test/inputs/grouped_collection_select_input_test.rb +20 -20
  58. data/test/inputs/hidden_input_test.rb +3 -2
  59. data/test/inputs/numeric_input_test.rb +3 -3
  60. data/test/inputs/priority_input_test.rb +9 -3
  61. data/test/inputs/readonly_test.rb +12 -12
  62. data/test/inputs/required_test.rb +5 -5
  63. data/test/inputs/string_input_test.rb +15 -25
  64. data/test/inputs/text_input_test.rb +1 -1
  65. data/test/support/misc_helpers.rb +46 -24
  66. data/test/support/mock_controller.rb +6 -6
  67. data/test/support/models.rb +62 -64
  68. data/test/test_helper.rb +20 -24
  69. metadata +37 -23
  70. data/lib/simple_form/core_ext/hash.rb +0 -16
@@ -7,27 +7,33 @@ class CollectionCheckBoxesInputTest < ActionView::TestCase
7
7
  end
8
8
 
9
9
  test 'input check boxes should not include for attribute by default' do
10
- with_input_for @user, :gender, :check_boxes, :collection => [:male, :female]
10
+ with_input_for @user, :gender, :check_boxes, collection: [:male, :female]
11
11
  assert_select 'label'
12
12
  assert_no_select 'label[for=user_gender]'
13
13
  end
14
14
 
15
15
  test 'input check boxes should include for attribute when giving as html option' do
16
- with_input_for @user, :gender, :check_boxes, :collection => [:male, :female], :label_html => { :for => 'gender' }
16
+ with_input_for @user, :gender, :check_boxes, collection: [:male, :female], label_html: { for: 'gender' }
17
17
  assert_select 'label[for=gender]'
18
18
  end
19
19
 
20
20
  test 'collection input with check_boxes type should not generate required html attribute' do
21
- with_input_for @user, :name, :check_boxes, :collection => ['Jose' , 'Carlos']
21
+ with_input_for @user, :name, :check_boxes, collection: ['Jose', 'Carlos']
22
22
  assert_select 'input.required'
23
23
  assert_no_select 'input[required]'
24
24
  end
25
25
 
26
+ test 'collection input with check_boxes type should not generate aria-required html attribute' do
27
+ with_input_for @user, :name, :check_boxes, collection: ['Jose', 'Carlos']
28
+ assert_select 'input.required'
29
+ assert_no_select 'input[aria-required]'
30
+ end
31
+
26
32
  test 'input should do automatic collection translation for check_box types using defaults key' do
27
- store_translations(:en, :simple_form => { :options => { :defaults => {
28
- :gender => { :male => 'Male', :female => 'Female'}
33
+ store_translations(:en, simple_form: { options: { defaults: {
34
+ gender: { male: 'Male', female: 'Female'}
29
35
  } } } ) do
30
- with_input_for @user, :gender, :check_boxes, :collection => [:male, :female]
36
+ with_input_for @user, :gender, :check_boxes, collection: [:male, :female]
31
37
  assert_select 'input[type=checkbox][value=male]'
32
38
  assert_select 'input[type=checkbox][value=female]'
33
39
  assert_select 'label.collection_check_boxes', 'Male'
@@ -36,10 +42,10 @@ class CollectionCheckBoxesInputTest < ActionView::TestCase
36
42
  end
37
43
 
38
44
  test 'input should do automatic collection translation for check_box types using specific object key' do
39
- store_translations(:en, :simple_form => { :options => { :user => {
40
- :gender => { :male => 'Male', :female => 'Female'}
45
+ store_translations(:en, simple_form: { options: { user: {
46
+ gender: { male: 'Male', female: 'Female'}
41
47
  } } } ) do
42
- with_input_for @user, :gender, :check_boxes, :collection => [:male, :female]
48
+ with_input_for @user, :gender, :check_boxes, collection: [:male, :female]
43
49
  assert_select 'input[type=checkbox][value=male]'
44
50
  assert_select 'input[type=checkbox][value=female]'
45
51
  assert_select 'label.collection_check_boxes', 'Male'
@@ -50,100 +56,100 @@ class CollectionCheckBoxesInputTest < ActionView::TestCase
50
56
  test 'input check boxes does not wrap the collection by default' do
51
57
  with_input_for @user, :active, :check_boxes
52
58
 
53
- assert_select 'form input[type=checkbox]', :count => 2
59
+ assert_select 'form input[type=checkbox]', count: 2
54
60
  assert_no_select 'form ul'
55
61
  end
56
62
 
57
63
  test 'input check boxes wraps the collection in the configured collection wrapper tag' do
58
- swap SimpleForm, :collection_wrapper_tag => :ul do
64
+ swap SimpleForm, collection_wrapper_tag: :ul do
59
65
  with_input_for @user, :active, :check_boxes
60
66
 
61
- assert_select 'form ul input[type=checkbox]', :count => 2
67
+ assert_select 'form ul input[type=checkbox]', count: 2
62
68
  end
63
69
  end
64
70
 
65
71
  test 'input check boxes does not wrap the collection when configured with falsy values' do
66
- swap SimpleForm, :collection_wrapper_tag => false do
72
+ swap SimpleForm, collection_wrapper_tag: false do
67
73
  with_input_for @user, :active, :check_boxes
68
74
 
69
- assert_select 'form input[type=checkbox]', :count => 2
75
+ assert_select 'form input[type=checkbox]', count: 2
70
76
  assert_no_select 'form ul'
71
77
  end
72
78
  end
73
79
 
74
80
  test 'input check boxes allows overriding the collection wrapper tag at input level' do
75
- swap SimpleForm, :collection_wrapper_tag => :ul do
76
- with_input_for @user, :active, :check_boxes, :collection_wrapper_tag => :section
81
+ swap SimpleForm, collection_wrapper_tag: :ul do
82
+ with_input_for @user, :active, :check_boxes, collection_wrapper_tag: :section
77
83
 
78
- assert_select 'form section input[type=checkbox]', :count => 2
84
+ assert_select 'form section input[type=checkbox]', count: 2
79
85
  assert_no_select 'form ul'
80
86
  end
81
87
  end
82
88
 
83
89
  test 'input check boxes allows disabling the collection wrapper tag at input level' do
84
- swap SimpleForm, :collection_wrapper_tag => :ul do
85
- with_input_for @user, :active, :check_boxes, :collection_wrapper_tag => false
90
+ swap SimpleForm, collection_wrapper_tag: :ul do
91
+ with_input_for @user, :active, :check_boxes, collection_wrapper_tag: false
86
92
 
87
- assert_select 'form input[type=checkbox]', :count => 2
93
+ assert_select 'form input[type=checkbox]', count: 2
88
94
  assert_no_select 'form ul'
89
95
  end
90
96
  end
91
97
 
92
98
  test 'input check boxes renders the wrapper tag with the configured wrapper class' do
93
- swap SimpleForm, :collection_wrapper_tag => :ul, :collection_wrapper_class => 'inputs-list' do
99
+ swap SimpleForm, collection_wrapper_tag: :ul, collection_wrapper_class: 'inputs-list' do
94
100
  with_input_for @user, :active, :check_boxes
95
101
 
96
- assert_select 'form ul.inputs-list input[type=checkbox]', :count => 2
102
+ assert_select 'form ul.inputs-list input[type=checkbox]', count: 2
97
103
  end
98
104
  end
99
105
 
100
106
  test 'input check boxes allows giving wrapper class at input level only' do
101
- swap SimpleForm, :collection_wrapper_tag => :ul do
102
- with_input_for @user, :active, :check_boxes, :collection_wrapper_class => 'items-list'
107
+ swap SimpleForm, collection_wrapper_tag: :ul do
108
+ with_input_for @user, :active, :check_boxes, collection_wrapper_class: 'items-list'
103
109
 
104
- assert_select 'form ul.items-list input[type=checkbox]', :count => 2
110
+ assert_select 'form ul.items-list input[type=checkbox]', count: 2
105
111
  end
106
112
  end
107
113
 
108
114
  test 'input check boxes uses both configured and given wrapper classes for wrapper tag' do
109
- swap SimpleForm, :collection_wrapper_tag => :ul, :collection_wrapper_class => 'inputs-list' do
110
- with_input_for @user, :active, :check_boxes, :collection_wrapper_class => 'items-list'
115
+ swap SimpleForm, collection_wrapper_tag: :ul, collection_wrapper_class: 'inputs-list' do
116
+ with_input_for @user, :active, :check_boxes, collection_wrapper_class: 'items-list'
111
117
 
112
- assert_select 'form ul.inputs-list.items-list input[type=checkbox]', :count => 2
118
+ assert_select 'form ul.inputs-list.items-list input[type=checkbox]', count: 2
113
119
  end
114
120
  end
115
121
 
116
122
  test 'input check boxes wraps each item in the configured item wrapper tag' do
117
- swap SimpleForm, :item_wrapper_tag => :li do
123
+ swap SimpleForm, item_wrapper_tag: :li do
118
124
  with_input_for @user, :active, :check_boxes
119
125
 
120
- assert_select 'form li input[type=checkbox]', :count => 2
126
+ assert_select 'form li input[type=checkbox]', count: 2
121
127
  end
122
128
  end
123
129
 
124
130
  test 'input check boxes does not wrap items when configured with falsy values' do
125
- swap SimpleForm, :item_wrapper_tag => false do
131
+ swap SimpleForm, item_wrapper_tag: false do
126
132
  with_input_for @user, :active, :check_boxes
127
133
 
128
- assert_select 'form input[type=checkbox]', :count => 2
134
+ assert_select 'form input[type=checkbox]', count: 2
129
135
  assert_no_select 'form li'
130
136
  end
131
137
  end
132
138
 
133
139
  test 'input check boxes allows overriding the item wrapper tag at input level' do
134
- swap SimpleForm, :item_wrapper_tag => :li do
135
- with_input_for @user, :active, :check_boxes, :item_wrapper_tag => :dl
140
+ swap SimpleForm, item_wrapper_tag: :li do
141
+ with_input_for @user, :active, :check_boxes, item_wrapper_tag: :dl
136
142
 
137
- assert_select 'form dl input[type=checkbox]', :count => 2
143
+ assert_select 'form dl input[type=checkbox]', count: 2
138
144
  assert_no_select 'form li'
139
145
  end
140
146
  end
141
147
 
142
148
  test 'input check boxes allows disabling the item wrapper tag at input level' do
143
- swap SimpleForm, :item_wrapper_tag => :ul do
144
- with_input_for @user, :active, :check_boxes, :item_wrapper_tag => false
149
+ swap SimpleForm, item_wrapper_tag: :ul do
150
+ with_input_for @user, :active, :check_boxes, item_wrapper_tag: false
145
151
 
146
- assert_select 'form input[type=checkbox]', :count => 2
152
+ assert_select 'form input[type=checkbox]', count: 2
147
153
  assert_no_select 'form li'
148
154
  end
149
155
  end
@@ -151,41 +157,41 @@ class CollectionCheckBoxesInputTest < ActionView::TestCase
151
157
  test 'input check boxes wraps items in a span tag by default' do
152
158
  with_input_for @user, :active, :check_boxes
153
159
 
154
- assert_select 'form span input[type=checkbox]', :count => 2
160
+ assert_select 'form span input[type=checkbox]', count: 2
155
161
  end
156
162
 
157
163
  test 'input check boxes renders the item wrapper tag with a default class "checkbox"' do
158
- with_input_for @user, :active, :check_boxes, :item_wrapper_tag => :li
164
+ with_input_for @user, :active, :check_boxes, item_wrapper_tag: :li
159
165
 
160
- assert_select 'form li.checkbox input[type=checkbox]', :count => 2
166
+ assert_select 'form li.checkbox input[type=checkbox]', count: 2
161
167
  end
162
168
 
163
169
  test 'input check boxes renders the item wrapper tag with the configured item wrapper class' do
164
- swap SimpleForm, :item_wrapper_tag => :li, :item_wrapper_class => 'item' do
170
+ swap SimpleForm, item_wrapper_tag: :li, item_wrapper_class: 'item' do
165
171
  with_input_for @user, :active, :check_boxes
166
172
 
167
- assert_select 'form li.checkbox.item input[type=checkbox]', :count => 2
173
+ assert_select 'form li.checkbox.item input[type=checkbox]', count: 2
168
174
  end
169
175
  end
170
176
 
171
177
  test 'input check boxes allows giving item wrapper class at input level only' do
172
- swap SimpleForm, :item_wrapper_tag => :li do
173
- with_input_for @user, :active, :check_boxes, :item_wrapper_class => 'item'
178
+ swap SimpleForm, item_wrapper_tag: :li do
179
+ with_input_for @user, :active, :check_boxes, item_wrapper_class: 'item'
174
180
 
175
- assert_select 'form li.checkbox.item input[type=checkbox]', :count => 2
181
+ assert_select 'form li.checkbox.item input[type=checkbox]', count: 2
176
182
  end
177
183
  end
178
184
 
179
185
  test 'input check boxes uses both configured and given item wrapper classes for item wrapper tag' do
180
- swap SimpleForm, :item_wrapper_tag => :li, :item_wrapper_class => 'item' do
181
- with_input_for @user, :active, :check_boxes, :item_wrapper_class => 'inline'
186
+ swap SimpleForm, item_wrapper_tag: :li, item_wrapper_class: 'item' do
187
+ with_input_for @user, :active, :check_boxes, item_wrapper_class: 'inline'
182
188
 
183
- assert_select 'form li.checkbox.item.inline input[type=checkbox]', :count => 2
189
+ assert_select 'form li.checkbox.item.inline input[type=checkbox]', count: 2
184
190
  end
185
191
  end
186
192
 
187
193
  test 'input check boxes respects the nested boolean style config, generating nested label > input' do
188
- swap SimpleForm, :boolean_style => :nested do
194
+ swap SimpleForm, boolean_style: :nested do
189
195
  with_input_for @user, :active, :check_boxes
190
196
 
191
197
  assert_select 'label.checkbox > input#user_active_true[type=checkbox]'
@@ -197,7 +203,7 @@ class CollectionCheckBoxesInputTest < ActionView::TestCase
197
203
  end
198
204
 
199
205
  test 'input check boxes with nested style overrides configured item wrapper tag, forcing the :label' do
200
- swap SimpleForm, :boolean_style => :nested, :item_wrapper_tag => :li do
206
+ swap SimpleForm, boolean_style: :nested, item_wrapper_tag: :li do
201
207
  with_input_for @user, :active, :check_boxes
202
208
 
203
209
  assert_select 'label.checkbox > input'
@@ -206,8 +212,8 @@ class CollectionCheckBoxesInputTest < ActionView::TestCase
206
212
  end
207
213
 
208
214
  test 'input check boxes with nested style overrides given item wrapper tag, forcing the :label' do
209
- swap SimpleForm, :boolean_style => :nested do
210
- with_input_for @user, :active, :check_boxes, :item_wrapper_tag => :li
215
+ swap SimpleForm, boolean_style: :nested do
216
+ with_input_for @user, :active, :check_boxes, item_wrapper_tag: :li
211
217
 
212
218
  assert_select 'label.checkbox > input'
213
219
  assert_no_select 'li'
@@ -215,8 +221,8 @@ class CollectionCheckBoxesInputTest < ActionView::TestCase
215
221
  end
216
222
 
217
223
  test 'input check boxes with nested style accepts giving extra wrapper classes' do
218
- swap SimpleForm, :boolean_style => :nested do
219
- with_input_for @user, :active, :check_boxes, :item_wrapper_class => "inline"
224
+ swap SimpleForm, boolean_style: :nested do
225
+ with_input_for @user, :active, :check_boxes, item_wrapper_class: "inline"
220
226
 
221
227
  assert_select 'label.checkbox.inline > input'
222
228
  end
@@ -6,15 +6,6 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
6
6
  SimpleForm::Inputs::CollectionRadioButtonsInput.reset_i18n_cache :boolean_collection
7
7
  end
8
8
 
9
- test 'input :as => :radio is deprecated in favor of :as => :radio_buttons' do
10
- assert_deprecated "[SIMPLE_FORM] Using `:as => :radio` as " \
11
- "input type is deprecated, please change it to `:as => :radio_buttons`." do
12
- with_input_for @user, :active, :radio
13
- end
14
-
15
- assert_select 'input[type=radio].radio_buttons', :count => 2
16
- end
17
-
18
9
  test 'input should generate boolean radio buttons by default for radio types' do
19
10
  with_input_for @user, :active, :radio_buttons
20
11
  assert_select 'input[type=radio][value=true].radio_buttons#user_active_true'
@@ -28,7 +19,7 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
28
19
  end
29
20
 
30
21
  test 'input as radio should use i18n to translate internal labels' do
31
- store_translations(:en, :simple_form => { :yes => 'Sim', :no => 'Não' }) do
22
+ store_translations(:en, simple_form: { yes: 'Sim', no: 'Não' }) do
32
23
  with_input_for @user, :active, :radio_buttons
33
24
  assert_select 'label[for=user_active_true]', 'Sim'
34
25
  assert_select 'label[for=user_active_false]', 'Não'
@@ -36,13 +27,13 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
36
27
  end
37
28
 
38
29
  test 'input radio should not include for attribute by default' do
39
- with_input_for @user, :gender, :radio_buttons, :collection => [:male, :female]
30
+ with_input_for @user, :gender, :radio_buttons, collection: [:male, :female]
40
31
  assert_select 'label'
41
32
  assert_no_select 'label[for=user_gender]'
42
33
  end
43
34
 
44
35
  test 'input radio should include for attribute when giving as html option' do
45
- with_input_for @user, :gender, :radio_buttons, :collection => [:male, :female], :label_html => { :for => 'gender' }
36
+ with_input_for @user, :gender, :radio_buttons, collection: [:male, :female], label_html: { for: 'gender' }
46
37
  assert_select 'label[for=gender]'
47
38
  end
48
39
 
@@ -54,7 +45,7 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
54
45
  end
55
46
 
56
47
  test 'input should allow overriding collection for radio types' do
57
- with_input_for @user, :name, :radio_buttons, :collection => ['Jose', 'Carlos']
48
+ with_input_for @user, :name, :radio_buttons, collection: ['Jose', 'Carlos']
58
49
  assert_select 'input[type=radio][value=Jose]'
59
50
  assert_select 'input[type=radio][value=Carlos]'
60
51
  assert_select 'label.collection_radio_buttons', 'Jose'
@@ -62,10 +53,10 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
62
53
  end
63
54
 
64
55
  test 'input should do automatic collection translation for radio types using defaults key' do
65
- store_translations(:en, :simple_form => { :options => { :defaults => {
66
- :gender => { :male => 'Male', :female => 'Female'}
56
+ store_translations(:en, simple_form: { options: { defaults: {
57
+ gender: { male: 'Male', female: 'Female'}
67
58
  } } } ) do
68
- with_input_for @user, :gender, :radio_buttons, :collection => [:male, :female]
59
+ with_input_for @user, :gender, :radio_buttons, collection: [:male, :female]
69
60
  assert_select 'input[type=radio][value=male]'
70
61
  assert_select 'input[type=radio][value=female]'
71
62
  assert_select 'label.collection_radio_buttons', 'Male'
@@ -74,10 +65,10 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
74
65
  end
75
66
 
76
67
  test 'input should do automatic collection translation for radio types using specific object key' do
77
- store_translations(:en, :simple_form => { :options => { :user => {
78
- :gender => { :male => 'Male', :female => 'Female'}
68
+ store_translations(:en, simple_form: { options: { user: {
69
+ gender: { male: 'Male', female: 'Female'}
79
70
  } } } ) do
80
- with_input_for @user, :gender, :radio_buttons, :collection => [:male, :female]
71
+ with_input_for @user, :gender, :radio_buttons, collection: [:male, :female]
81
72
  assert_select 'input[type=radio][value=male]'
82
73
  assert_select 'input[type=radio][value=female]'
83
74
  assert_select 'label.collection_radio_buttons', 'Male'
@@ -87,12 +78,12 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
87
78
 
88
79
  test 'input should mark the current radio value by default' do
89
80
  @user.name = "Carlos"
90
- with_input_for @user, :name, :radio_buttons, :collection => ['Jose', 'Carlos']
81
+ with_input_for @user, :name, :radio_buttons, collection: ['Jose', 'Carlos']
91
82
  assert_select 'input[type=radio][value=Carlos][checked=checked]'
92
83
  end
93
84
 
94
85
  test 'input should allow using a collection with text/value arrays' do
95
- with_input_for @user, :name, :radio_buttons, :collection => [['Jose', 'jose'], ['Carlos', 'carlos']]
86
+ with_input_for @user, :name, :radio_buttons, collection: [['Jose', 'jose'], ['Carlos', 'carlos']]
96
87
  assert_select 'input[type=radio][value=jose]'
97
88
  assert_select 'input[type=radio][value=carlos]'
98
89
  assert_select 'label.collection_radio_buttons', 'Jose'
@@ -100,32 +91,32 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
100
91
  end
101
92
 
102
93
  test 'input should allow using a collection with a Proc' do
103
- with_input_for @user, :name, :radio_buttons, :collection => Proc.new { ['Jose', 'Carlos' ] }
94
+ with_input_for @user, :name, :radio_buttons, collection: Proc.new { ['Jose', 'Carlos' ] }
104
95
  assert_select 'label.collection_radio_buttons', 'Jose'
105
96
  assert_select 'label.collection_radio_buttons', 'Carlos'
106
97
  end
107
98
 
108
99
  test 'input should allow overriding only label method for collections' do
109
100
  with_input_for @user, :name, :radio_buttons,
110
- :collection => ['Jose' , 'Carlos'],
111
- :label_method => :upcase
101
+ collection: ['Jose', 'Carlos'],
102
+ label_method: :upcase
112
103
  assert_select 'label.collection_radio_buttons', 'JOSE'
113
104
  assert_select 'label.collection_radio_buttons', 'CARLOS'
114
105
  end
115
106
 
116
107
  test 'input should allow overriding only value method for collections' do
117
108
  with_input_for @user, :name, :radio_buttons,
118
- :collection => ['Jose' , 'Carlos'],
119
- :value_method => :upcase
109
+ collection: ['Jose', 'Carlos'],
110
+ value_method: :upcase
120
111
  assert_select 'input[type=radio][value=JOSE]'
121
112
  assert_select 'input[type=radio][value=CARLOS]'
122
113
  end
123
114
 
124
115
  test 'input should allow overriding label and value method for collections' do
125
116
  with_input_for @user, :name, :radio_buttons,
126
- :collection => ['Jose' , 'Carlos'],
127
- :label_method => :upcase,
128
- :value_method => :downcase
117
+ collection: ['Jose', 'Carlos'],
118
+ label_method: :upcase,
119
+ value_method: :downcase
129
120
  assert_select 'input[type=radio][value=jose]'
130
121
  assert_select 'input[type=radio][value=carlos]'
131
122
  assert_select 'label.collection_radio_buttons', 'JOSE'
@@ -134,9 +125,9 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
134
125
 
135
126
  test 'input should allow overriding label and value method using a lambda for collections' do
136
127
  with_input_for @user, :name, :radio_buttons,
137
- :collection => ['Jose' , 'Carlos'],
138
- :label_method => lambda { |i| i.upcase },
139
- :value_method => lambda { |i| i.downcase }
128
+ collection: ['Jose', 'Carlos'],
129
+ label_method: lambda { |i| i.upcase },
130
+ value_method: lambda { |i| i.downcase }
140
131
  assert_select 'input[type=radio][value=jose]'
141
132
  assert_select 'input[type=radio][value=carlos]'
142
133
  assert_select 'label.collection_radio_buttons', 'JOSE'
@@ -144,108 +135,114 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
144
135
  end
145
136
 
146
137
  test 'collection input with radio type should generate required html attribute' do
147
- with_input_for @user, :name, :radio_buttons, :collection => ['Jose' , 'Carlos']
138
+ with_input_for @user, :name, :radio_buttons, collection: ['Jose', 'Carlos']
148
139
  assert_select 'input[type=radio].required'
149
140
  assert_select 'input[type=radio][required]'
150
141
  end
151
142
 
143
+ test 'collection input with radio type should generate aria-required html attribute' do
144
+ with_input_for @user, :name, :radio_buttons, collection: ['Jose', 'Carlos']
145
+ assert_select 'input[type=radio].required'
146
+ assert_select 'input[type=radio][aria-required=true]'
147
+ end
148
+
152
149
  test 'input radio does not wrap the collection by default' do
153
150
  with_input_for @user, :active, :radio_buttons
154
151
 
155
- assert_select 'form input[type=radio]', :count => 2
152
+ assert_select 'form input[type=radio]', count: 2
156
153
  assert_no_select 'form ul'
157
154
  end
158
155
 
159
156
  test 'input radio wraps the collection in the configured collection wrapper tag' do
160
- swap SimpleForm, :collection_wrapper_tag => :ul do
157
+ swap SimpleForm, collection_wrapper_tag: :ul do
161
158
  with_input_for @user, :active, :radio_buttons
162
159
 
163
- assert_select 'form ul input[type=radio]', :count => 2
160
+ assert_select 'form ul input[type=radio]', count: 2
164
161
  end
165
162
  end
166
163
 
167
164
  test 'input radio does not wrap the collection when configured with falsy values' do
168
- swap SimpleForm, :collection_wrapper_tag => false do
165
+ swap SimpleForm, collection_wrapper_tag: false do
169
166
  with_input_for @user, :active, :radio_buttons
170
167
 
171
- assert_select 'form input[type=radio]', :count => 2
168
+ assert_select 'form input[type=radio]', count: 2
172
169
  assert_no_select 'form ul'
173
170
  end
174
171
  end
175
172
 
176
173
  test 'input radio allows overriding the collection wrapper tag at input level' do
177
- swap SimpleForm, :collection_wrapper_tag => :ul do
178
- with_input_for @user, :active, :radio_buttons, :collection_wrapper_tag => :section
174
+ swap SimpleForm, collection_wrapper_tag: :ul do
175
+ with_input_for @user, :active, :radio_buttons, collection_wrapper_tag: :section
179
176
 
180
- assert_select 'form section input[type=radio]', :count => 2
177
+ assert_select 'form section input[type=radio]', count: 2
181
178
  assert_no_select 'form ul'
182
179
  end
183
180
  end
184
181
 
185
182
  test 'input radio allows disabling the collection wrapper tag at input level' do
186
- swap SimpleForm, :collection_wrapper_tag => :ul do
187
- with_input_for @user, :active, :radio_buttons, :collection_wrapper_tag => false
183
+ swap SimpleForm, collection_wrapper_tag: :ul do
184
+ with_input_for @user, :active, :radio_buttons, collection_wrapper_tag: false
188
185
 
189
- assert_select 'form input[type=radio]', :count => 2
186
+ assert_select 'form input[type=radio]', count: 2
190
187
  assert_no_select 'form ul'
191
188
  end
192
189
  end
193
190
 
194
191
  test 'input radio renders the wrapper tag with the configured wrapper class' do
195
- swap SimpleForm, :collection_wrapper_tag => :ul, :collection_wrapper_class => 'inputs-list' do
192
+ swap SimpleForm, collection_wrapper_tag: :ul, collection_wrapper_class: 'inputs-list' do
196
193
  with_input_for @user, :active, :radio_buttons
197
194
 
198
- assert_select 'form ul.inputs-list input[type=radio]', :count => 2
195
+ assert_select 'form ul.inputs-list input[type=radio]', count: 2
199
196
  end
200
197
  end
201
198
 
202
199
  test 'input radio allows giving wrapper class at input level only' do
203
- swap SimpleForm, :collection_wrapper_tag => :ul do
204
- with_input_for @user, :active, :radio_buttons, :collection_wrapper_class => 'items-list'
200
+ swap SimpleForm, collection_wrapper_tag: :ul do
201
+ with_input_for @user, :active, :radio_buttons, collection_wrapper_class: 'items-list'
205
202
 
206
- assert_select 'form ul.items-list input[type=radio]', :count => 2
203
+ assert_select 'form ul.items-list input[type=radio]', count: 2
207
204
  end
208
205
  end
209
206
 
210
207
  test 'input radio uses both configured and given wrapper classes for wrapper tag' do
211
- swap SimpleForm, :collection_wrapper_tag => :ul, :collection_wrapper_class => 'inputs-list' do
212
- with_input_for @user, :active, :radio_buttons, :collection_wrapper_class => 'items-list'
208
+ swap SimpleForm, collection_wrapper_tag: :ul, collection_wrapper_class: 'inputs-list' do
209
+ with_input_for @user, :active, :radio_buttons, collection_wrapper_class: 'items-list'
213
210
 
214
- assert_select 'form ul.inputs-list.items-list input[type=radio]', :count => 2
211
+ assert_select 'form ul.inputs-list.items-list input[type=radio]', count: 2
215
212
  end
216
213
  end
217
214
 
218
215
  test 'input radio wraps each item in the configured item wrapper tag' do
219
- swap SimpleForm, :item_wrapper_tag => :li do
216
+ swap SimpleForm, item_wrapper_tag: :li do
220
217
  with_input_for @user, :active, :radio_buttons
221
218
 
222
- assert_select 'form li input[type=radio]', :count => 2
219
+ assert_select 'form li input[type=radio]', count: 2
223
220
  end
224
221
  end
225
222
 
226
223
  test 'input radio does not wrap items when configured with falsy values' do
227
- swap SimpleForm, :item_wrapper_tag => false do
224
+ swap SimpleForm, item_wrapper_tag: false do
228
225
  with_input_for @user, :active, :radio_buttons
229
226
 
230
- assert_select 'form input[type=radio]', :count => 2
227
+ assert_select 'form input[type=radio]', count: 2
231
228
  assert_no_select 'form li'
232
229
  end
233
230
  end
234
231
 
235
232
  test 'input radio allows overriding the item wrapper tag at input level' do
236
- swap SimpleForm, :item_wrapper_tag => :li do
237
- with_input_for @user, :active, :radio_buttons, :item_wrapper_tag => :dl
233
+ swap SimpleForm, item_wrapper_tag: :li do
234
+ with_input_for @user, :active, :radio_buttons, item_wrapper_tag: :dl
238
235
 
239
- assert_select 'form dl input[type=radio]', :count => 2
236
+ assert_select 'form dl input[type=radio]', count: 2
240
237
  assert_no_select 'form li'
241
238
  end
242
239
  end
243
240
 
244
241
  test 'input radio allows disabling the item wrapper tag at input level' do
245
- swap SimpleForm, :item_wrapper_tag => :ul do
246
- with_input_for @user, :active, :radio_buttons, :item_wrapper_tag => false
242
+ swap SimpleForm, item_wrapper_tag: :ul do
243
+ with_input_for @user, :active, :radio_buttons, item_wrapper_tag: false
247
244
 
248
- assert_select 'form input[type=radio]', :count => 2
245
+ assert_select 'form input[type=radio]', count: 2
249
246
  assert_no_select 'form li'
250
247
  end
251
248
  end
@@ -253,41 +250,41 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
253
250
  test 'input radio wraps items in a span tag by default' do
254
251
  with_input_for @user, :active, :radio_buttons
255
252
 
256
- assert_select 'form span input[type=radio]', :count => 2
253
+ assert_select 'form span input[type=radio]', count: 2
257
254
  end
258
255
 
259
256
  test 'input radio renders the item wrapper tag with a default class "radio"' do
260
- with_input_for @user, :active, :radio_buttons, :item_wrapper_tag => :li
257
+ with_input_for @user, :active, :radio_buttons, item_wrapper_tag: :li
261
258
 
262
- assert_select 'form li.radio input[type=radio]', :count => 2
259
+ assert_select 'form li.radio input[type=radio]', count: 2
263
260
  end
264
261
 
265
262
  test 'input radio renders the item wrapper tag with the configured item wrapper class' do
266
- swap SimpleForm, :item_wrapper_tag => :li, :item_wrapper_class => 'item' do
263
+ swap SimpleForm, item_wrapper_tag: :li, item_wrapper_class: 'item' do
267
264
  with_input_for @user, :active, :radio_buttons
268
265
 
269
- assert_select 'form li.radio.item input[type=radio]', :count => 2
266
+ assert_select 'form li.radio.item input[type=radio]', count: 2
270
267
  end
271
268
  end
272
269
 
273
270
  test 'input radio allows giving item wrapper class at input level only' do
274
- swap SimpleForm, :item_wrapper_tag => :li do
275
- with_input_for @user, :active, :radio_buttons, :item_wrapper_class => 'item'
271
+ swap SimpleForm, item_wrapper_tag: :li do
272
+ with_input_for @user, :active, :radio_buttons, item_wrapper_class: 'item'
276
273
 
277
- assert_select 'form li.radio.item input[type=radio]', :count => 2
274
+ assert_select 'form li.radio.item input[type=radio]', count: 2
278
275
  end
279
276
  end
280
277
 
281
278
  test 'input radio uses both configured and given item wrapper classes for item wrapper tag' do
282
- swap SimpleForm, :item_wrapper_tag => :li, :item_wrapper_class => 'item' do
283
- with_input_for @user, :active, :radio_buttons, :item_wrapper_class => 'inline'
279
+ swap SimpleForm, item_wrapper_tag: :li, item_wrapper_class: 'item' do
280
+ with_input_for @user, :active, :radio_buttons, item_wrapper_class: 'inline'
284
281
 
285
- assert_select 'form li.radio.item.inline input[type=radio]', :count => 2
282
+ assert_select 'form li.radio.item.inline input[type=radio]', count: 2
286
283
  end
287
284
  end
288
285
 
289
286
  test 'input radio respects the nested boolean style config, generating nested label > input' do
290
- swap SimpleForm, :boolean_style => :nested do
287
+ swap SimpleForm, boolean_style: :nested do
291
288
  with_input_for @user, :active, :radio_buttons
292
289
 
293
290
  assert_select 'label.radio > input#user_active_true[type=radio]'
@@ -299,7 +296,7 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
299
296
  end
300
297
 
301
298
  test 'input radio with nested style overrides configured item wrapper tag, forcing the :label' do
302
- swap SimpleForm, :boolean_style => :nested, :item_wrapper_tag => :li do
299
+ swap SimpleForm, boolean_style: :nested, item_wrapper_tag: :li do
303
300
  with_input_for @user, :active, :radio_buttons
304
301
 
305
302
  assert_select 'label.radio > input'
@@ -308,8 +305,8 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
308
305
  end
309
306
 
310
307
  test 'input radio with nested style overrides given item wrapper tag, forcing the :label' do
311
- swap SimpleForm, :boolean_style => :nested do
312
- with_input_for @user, :active, :radio_buttons, :item_wrapper_tag => :li
308
+ swap SimpleForm, boolean_style: :nested do
309
+ with_input_for @user, :active, :radio_buttons, item_wrapper_tag: :li
313
310
 
314
311
  assert_select 'label.radio > input'
315
312
  assert_no_select 'li'
@@ -317,8 +314,8 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
317
314
  end
318
315
 
319
316
  test 'input radio with nested style accepts giving extra wrapper classes' do
320
- swap SimpleForm, :boolean_style => :nested do
321
- with_input_for @user, :active, :radio_buttons, :item_wrapper_class => "inline"
317
+ swap SimpleForm, boolean_style: :nested do
318
+ with_input_for @user, :active, :radio_buttons, item_wrapper_class: "inline"
322
319
 
323
320
  assert_select 'label.radio.inline > input'
324
321
  end