simple_form 3.1.0.rc1 → 3.1.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -1
- data/README.md +64 -16
- data/lib/generators/simple_form/install_generator.rb +2 -2
- data/lib/generators/simple_form/templates/config/initializers/simple_form.rb +9 -4
- data/lib/generators/simple_form/templates/config/initializers/simple_form_bootstrap.rb +45 -15
- data/lib/generators/simple_form/templates/config/initializers/simple_form_foundation.rb +85 -4
- data/lib/simple_form/action_view_extensions/builder.rb +1 -0
- data/lib/simple_form/action_view_extensions/form_helper.rb +5 -1
- data/lib/simple_form/components/errors.rb +3 -5
- data/lib/simple_form/components/labels.rb +1 -1
- data/lib/simple_form/form_builder.rb +34 -19
- data/lib/simple_form/inputs/boolean_input.rb +8 -5
- data/lib/simple_form/inputs/collection_input.rb +2 -4
- data/lib/simple_form/tags.rb +3 -4
- data/lib/simple_form/version.rb +1 -1
- data/lib/simple_form/wrappers/builder.rb +2 -2
- data/lib/simple_form/wrappers/many.rb +1 -0
- data/lib/simple_form.rb +21 -2
- data/test/action_view_extensions/builder_test.rb +34 -34
- data/test/action_view_extensions/form_helper_test.rb +33 -14
- data/test/components/label_test.rb +36 -36
- data/test/form_builder/association_test.rb +41 -41
- data/test/form_builder/button_test.rb +10 -10
- data/test/form_builder/error_test.rb +88 -29
- data/test/form_builder/general_test.rb +89 -64
- data/test/form_builder/hint_test.rb +18 -18
- data/test/form_builder/input_field_test.rb +59 -19
- data/test/form_builder/label_test.rb +23 -14
- data/test/form_builder/wrapper_test.rb +70 -21
- data/test/generators/simple_form_generator_test.rb +2 -2
- data/test/inputs/boolean_input_test.rb +17 -9
- data/test/inputs/collection_check_boxes_input_test.rb +46 -7
- data/test/inputs/collection_radio_buttons_input_test.rb +65 -26
- data/test/inputs/collection_select_input_test.rb +62 -62
- data/test/inputs/datetime_input_test.rb +24 -24
- data/test/inputs/disabled_test.rb +15 -15
- data/test/inputs/discovery_test.rb +44 -5
- data/test/inputs/file_input_test.rb +2 -2
- data/test/inputs/general_test.rb +20 -20
- data/test/inputs/grouped_collection_select_input_test.rb +10 -10
- data/test/inputs/hidden_input_test.rb +4 -4
- data/test/inputs/numeric_input_test.rb +43 -43
- data/test/inputs/priority_input_test.rb +13 -13
- data/test/inputs/readonly_test.rb +19 -19
- data/test/inputs/required_test.rb +13 -13
- data/test/inputs/string_input_test.rb +33 -33
- data/test/inputs/text_input_test.rb +7 -7
- data/test/support/discovery_inputs.rb +20 -0
- data/test/support/misc_helpers.rb +28 -0
- data/test/support/models.rb +13 -2
- data/test/test_helper.rb +5 -1
- metadata +4 -4
|
@@ -14,27 +14,27 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
test 'label
|
|
17
|
+
test 'label generates a default humanized description' do
|
|
18
18
|
with_label_for @user, :name, :string
|
|
19
19
|
assert_select 'label[for=user_name]', /Name/
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
test 'label
|
|
22
|
+
test 'label allows a customized description' do
|
|
23
23
|
with_label_for @user, :name, :string, label: 'My label!'
|
|
24
24
|
assert_select 'label[for=user_name]', /My label!/
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
test 'label
|
|
27
|
+
test 'label uses human attribute name from object when available' do
|
|
28
28
|
with_label_for @user, :description, :text
|
|
29
29
|
assert_select 'label[for=user_description]', /User Description!/
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
test 'label
|
|
32
|
+
test 'label uses human attribute name based on association name' do
|
|
33
33
|
with_label_for @user, :company_id, :string, setup_association: true
|
|
34
34
|
assert_select 'label', /Company Human Name!/
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
test 'label
|
|
37
|
+
test 'label uses i18n based on model, action, and attribute to lookup translation' do
|
|
38
38
|
@controller.action_name = "new"
|
|
39
39
|
store_translations(:en, simple_form: { labels: { user: {
|
|
40
40
|
new: { description: 'Nova descrição' }
|
|
@@ -44,7 +44,7 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
test 'label
|
|
47
|
+
test 'label fallbacks to new when action is create' do
|
|
48
48
|
@controller.action_name = "create"
|
|
49
49
|
store_translations(:en, simple_form: { labels: { user: {
|
|
50
50
|
new: { description: 'Nova descrição' }
|
|
@@ -54,7 +54,7 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
-
test 'label
|
|
57
|
+
test 'label does not explode while looking for i18n translation when action is not set' do
|
|
58
58
|
def @controller.action_name; nil; end
|
|
59
59
|
|
|
60
60
|
assert_nothing_raised do
|
|
@@ -63,7 +63,7 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
63
63
|
assert_select 'label[for=user_description]'
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
-
test 'label
|
|
66
|
+
test 'label uses i18n based on model and attribute to lookup translation' do
|
|
67
67
|
store_translations(:en, simple_form: { labels: { user: {
|
|
68
68
|
description: 'Descrição'
|
|
69
69
|
} } }) do
|
|
@@ -72,14 +72,14 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
|
|
75
|
-
test 'label
|
|
75
|
+
test 'label uses i18n under defaults to lookup translation' do
|
|
76
76
|
store_translations(:en, simple_form: { labels: { defaults: { age: 'Idade' } } }) do
|
|
77
77
|
with_label_for @user, :age, :integer
|
|
78
78
|
assert_select 'label[for=user_age]', /Idade/
|
|
79
79
|
end
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
-
test 'label
|
|
82
|
+
test 'label does not use i18n label if translate is false' do
|
|
83
83
|
swap SimpleForm, translate_labels: false do
|
|
84
84
|
store_translations(:en, simple_form: { labels: { defaults: { age: 'Idade' } } }) do
|
|
85
85
|
with_label_for @user, :age, :integer
|
|
@@ -107,7 +107,7 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
107
107
|
end
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
test 'label
|
|
110
|
+
test 'label does correct i18n lookup for nested models with nested translation' do
|
|
111
111
|
@user.company = Company.new(1, 'Empresa')
|
|
112
112
|
|
|
113
113
|
store_translations(:en, simple_form: { labels: {
|
|
@@ -125,7 +125,7 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
125
125
|
end
|
|
126
126
|
end
|
|
127
127
|
|
|
128
|
-
test 'label
|
|
128
|
+
test 'label does correct i18n lookup for nested models with no nested translation' do
|
|
129
129
|
@user.company = Company.new(1, 'Empresa')
|
|
130
130
|
|
|
131
131
|
store_translations(:en, simple_form: { labels: {
|
|
@@ -144,7 +144,7 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
144
144
|
end
|
|
145
145
|
end
|
|
146
146
|
|
|
147
|
-
test 'label
|
|
147
|
+
test 'label does correct i18n lookup for nested has_many models with no nested translation' do
|
|
148
148
|
@user.tags = [Tag.new(1, 'Empresa')]
|
|
149
149
|
|
|
150
150
|
store_translations(:en, simple_form: { labels: {
|
|
@@ -163,7 +163,7 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
163
163
|
end
|
|
164
164
|
end
|
|
165
165
|
|
|
166
|
-
test 'label
|
|
166
|
+
test 'label has css class from type' do
|
|
167
167
|
with_label_for @user, :name, :string
|
|
168
168
|
assert_select 'label.string'
|
|
169
169
|
with_label_for @user, :description, :text
|
|
@@ -176,7 +176,7 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
176
176
|
assert_select 'label.datetime'
|
|
177
177
|
end
|
|
178
178
|
|
|
179
|
-
test 'label
|
|
179
|
+
test 'label does not have css class from type when generate_additional_classes_for does not include :label' do
|
|
180
180
|
swap SimpleForm, generate_additional_classes_for: [:wrapper, :input] do
|
|
181
181
|
with_label_for @user, :name, :string
|
|
182
182
|
assert_no_select 'label.string'
|
|
@@ -191,21 +191,21 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
191
191
|
end
|
|
192
192
|
end
|
|
193
193
|
|
|
194
|
-
test 'label
|
|
194
|
+
test 'label does not generate empty css class' do
|
|
195
195
|
swap SimpleForm, generate_additional_classes_for: [:wrapper, :input] do
|
|
196
196
|
with_label_for @user, :name, :string
|
|
197
197
|
assert_no_select 'label[class]'
|
|
198
198
|
end
|
|
199
199
|
end
|
|
200
200
|
|
|
201
|
-
test 'label
|
|
201
|
+
test 'label obtains required from ActiveModel::Validations when it is included' do
|
|
202
202
|
with_label_for @validating_user, :name, :string
|
|
203
203
|
assert_select 'label.required'
|
|
204
204
|
with_label_for @validating_user, :status, :string
|
|
205
205
|
assert_select 'label.optional'
|
|
206
206
|
end
|
|
207
207
|
|
|
208
|
-
test 'label
|
|
208
|
+
test 'label does not obtain required from ActiveModel::Validations when generate_additional_classes_for does not include :label' do
|
|
209
209
|
swap SimpleForm, generate_additional_classes_for: [:wrapper, :input] do
|
|
210
210
|
with_label_for @validating_user, :name, :string
|
|
211
211
|
assert_no_select 'label.required'
|
|
@@ -214,48 +214,48 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
214
214
|
end
|
|
215
215
|
end
|
|
216
216
|
|
|
217
|
-
test 'label
|
|
217
|
+
test 'label allows overriding required when ActiveModel::Validations is included' do
|
|
218
218
|
with_label_for @validating_user, :name, :string, required: false
|
|
219
219
|
assert_select 'label.optional'
|
|
220
220
|
with_label_for @validating_user, :status, :string, required: true
|
|
221
221
|
assert_select 'label.required'
|
|
222
222
|
end
|
|
223
223
|
|
|
224
|
-
test 'label
|
|
224
|
+
test 'label is required by default when ActiveModel::Validations is not included' do
|
|
225
225
|
with_label_for @user, :name, :string
|
|
226
226
|
assert_select 'label.required'
|
|
227
227
|
end
|
|
228
228
|
|
|
229
|
-
test 'label
|
|
229
|
+
test 'label is able to disable required when ActiveModel::Validations is not included' do
|
|
230
230
|
with_label_for @user, :name, :string, required: false
|
|
231
231
|
assert_no_select 'label.required'
|
|
232
232
|
end
|
|
233
233
|
|
|
234
|
-
test 'label
|
|
234
|
+
test 'label adds required text when required' do
|
|
235
235
|
with_label_for @user, :name, :string
|
|
236
236
|
assert_select 'label.required abbr[title=required]', '*'
|
|
237
237
|
end
|
|
238
238
|
|
|
239
|
-
test 'label
|
|
239
|
+
test 'label does not have required text in no required inputs' do
|
|
240
240
|
with_label_for @user, :name, :string, required: false
|
|
241
241
|
assert_no_select 'form label abbr'
|
|
242
242
|
end
|
|
243
243
|
|
|
244
|
-
test 'label
|
|
244
|
+
test 'label uses i18n to find required text' do
|
|
245
245
|
store_translations(:en, simple_form: { required: { text: 'campo requerido' } }) do
|
|
246
246
|
with_label_for @user, :name, :string
|
|
247
|
-
assert_select 'form label abbr[title=campo requerido]', '*'
|
|
247
|
+
assert_select 'form label abbr[title="campo requerido"]', '*'
|
|
248
248
|
end
|
|
249
249
|
end
|
|
250
250
|
|
|
251
|
-
test 'label
|
|
251
|
+
test 'label uses i18n to find required mark' do
|
|
252
252
|
store_translations(:en, simple_form: { required: { mark: '*-*' } }) do
|
|
253
253
|
with_label_for @user, :name, :string
|
|
254
254
|
assert_select 'form label abbr', '*-*'
|
|
255
255
|
end
|
|
256
256
|
end
|
|
257
257
|
|
|
258
|
-
test 'label
|
|
258
|
+
test 'label uses i18n to find required string tag' do
|
|
259
259
|
store_translations(:en, simple_form: { required: { html: '<span class="required" title="requerido">*</span>' } }) do
|
|
260
260
|
with_label_for @user, :name, :string
|
|
261
261
|
assert_no_select 'form label abbr'
|
|
@@ -263,37 +263,37 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
263
263
|
end
|
|
264
264
|
end
|
|
265
265
|
|
|
266
|
-
test 'label
|
|
266
|
+
test 'label allows overwriting input id' do
|
|
267
267
|
with_label_for @user, :name, :string, input_html: { id: 'my_new_id' }
|
|
268
268
|
assert_select 'label[for=my_new_id]'
|
|
269
269
|
end
|
|
270
270
|
|
|
271
|
-
test 'label
|
|
271
|
+
test 'label allows overwriting of for attribute' do
|
|
272
272
|
with_label_for @user, :name, :string, label_html: { for: 'my_new_id' }
|
|
273
273
|
assert_select 'label[for=my_new_id]'
|
|
274
274
|
end
|
|
275
275
|
|
|
276
|
-
test 'label
|
|
276
|
+
test 'label allows overwriting of for attribute with input_html not containing id' do
|
|
277
277
|
with_label_for @user, :name, :string, label_html: { for: 'my_new_id' }, input_html: { class: 'foo' }
|
|
278
278
|
assert_select 'label[for=my_new_id]'
|
|
279
279
|
end
|
|
280
280
|
|
|
281
|
-
test 'label
|
|
281
|
+
test 'label uses default input id when it was not overridden' do
|
|
282
282
|
with_label_for @user, :name, :string, input_html: { class: 'my_new_id' }
|
|
283
283
|
assert_select 'label[for=user_name]'
|
|
284
284
|
end
|
|
285
285
|
|
|
286
|
-
test 'label
|
|
286
|
+
test 'label is generated properly when object is not present' do
|
|
287
287
|
with_label_for :project, :name, :string
|
|
288
288
|
assert_select 'label[for=project_name]', /Name/
|
|
289
289
|
end
|
|
290
290
|
|
|
291
|
-
test 'label
|
|
291
|
+
test 'label includes for attribute for select collection' do
|
|
292
292
|
with_label_for @user, :sex, :select, collection: [:male, :female]
|
|
293
293
|
assert_select 'label[for=user_sex]'
|
|
294
294
|
end
|
|
295
295
|
|
|
296
|
-
test 'label
|
|
296
|
+
test 'label uses i18n properly when object is not present' do
|
|
297
297
|
store_translations(:en, simple_form: { labels: {
|
|
298
298
|
project: { name: 'Nome' }
|
|
299
299
|
} }) do
|
|
@@ -302,14 +302,14 @@ class IsolatedLabelTest < ActionView::TestCase
|
|
|
302
302
|
end
|
|
303
303
|
end
|
|
304
304
|
|
|
305
|
-
test 'label
|
|
305
|
+
test 'label adds required by default when object is not present' do
|
|
306
306
|
with_label_for :project, :name, :string
|
|
307
307
|
assert_select 'label.required[for=project_name]'
|
|
308
308
|
with_label_for :project, :description, :string, required: false
|
|
309
309
|
assert_no_select 'label.required[for=project_description]'
|
|
310
310
|
end
|
|
311
311
|
|
|
312
|
-
test 'label
|
|
312
|
+
test 'label adds chosen label class' do
|
|
313
313
|
swap SimpleForm, label_class: :my_custom_class do
|
|
314
314
|
with_label_for @user, :name, :string
|
|
315
315
|
assert_select 'label.my_custom_class'
|
|
@@ -8,7 +8,7 @@ class AssociationTest < ActionView::TestCase
|
|
|
8
8
|
end
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
test 'builder
|
|
11
|
+
test 'builder does not allow creating an association input when no object exists' do
|
|
12
12
|
assert_raise ArgumentError do
|
|
13
13
|
with_association_for :post, :author
|
|
14
14
|
end
|
|
@@ -46,9 +46,9 @@ class AssociationTest < ActionView::TestCase
|
|
|
46
46
|
|
|
47
47
|
with_association_for @user, :tags
|
|
48
48
|
assert_select 'form select.select#user_tag_ids'
|
|
49
|
-
assert_select 'form select option[value=1]', 'Tag 1'
|
|
50
|
-
assert_select 'form select option[value=2]', 'Tag 2'
|
|
51
|
-
assert_select 'form select option[value=3]', 'Tag 3'
|
|
49
|
+
assert_select 'form select option[value="1"]', 'Tag 1'
|
|
50
|
+
assert_select 'form select option[value="2"]', 'Tag 2'
|
|
51
|
+
assert_select 'form select option[value="3"]', 'Tag 3'
|
|
52
52
|
|
|
53
53
|
value.verify
|
|
54
54
|
end
|
|
@@ -59,9 +59,9 @@ class AssociationTest < ActionView::TestCase
|
|
|
59
59
|
|
|
60
60
|
with_association_for @user, :tags, preload: false
|
|
61
61
|
assert_select 'form select.select#user_tag_ids'
|
|
62
|
-
assert_select 'form select option[value=1]', 'Tag 1'
|
|
63
|
-
assert_select 'form select option[value=2]', 'Tag 2'
|
|
64
|
-
assert_select 'form select option[value=3]', 'Tag 3'
|
|
62
|
+
assert_select 'form select option[value="1"]', 'Tag 1'
|
|
63
|
+
assert_select 'form select option[value="2"]', 'Tag 2'
|
|
64
|
+
assert_select 'form select option[value="3"]', 'Tag 3'
|
|
65
65
|
|
|
66
66
|
assert_raises MockExpectationError do
|
|
67
67
|
value.verify
|
|
@@ -74,9 +74,9 @@ class AssociationTest < ActionView::TestCase
|
|
|
74
74
|
|
|
75
75
|
with_association_for @user, :company
|
|
76
76
|
assert_select 'form select.select#user_company_id'
|
|
77
|
-
assert_select 'form select option[value=1]', 'Company 1'
|
|
78
|
-
assert_select 'form select option[value=2]', 'Company 2'
|
|
79
|
-
assert_select 'form select option[value=3]', 'Company 3'
|
|
77
|
+
assert_select 'form select option[value="1"]', 'Company 1'
|
|
78
|
+
assert_select 'form select option[value="2"]', 'Company 2'
|
|
79
|
+
assert_select 'form select option[value="3"]', 'Company 3'
|
|
80
80
|
|
|
81
81
|
assert_raises MockExpectationError do
|
|
82
82
|
value.verify
|
|
@@ -87,15 +87,15 @@ class AssociationTest < ActionView::TestCase
|
|
|
87
87
|
test 'builder creates a select for belongs_to associations' do
|
|
88
88
|
with_association_for @user, :company
|
|
89
89
|
assert_select 'form select.select#user_company_id'
|
|
90
|
-
assert_select 'form select option[value=1]', 'Company 1'
|
|
91
|
-
assert_select 'form select option[value=2]', 'Company 2'
|
|
92
|
-
assert_select 'form select option[value=3]', 'Company 3'
|
|
90
|
+
assert_select 'form select option[value="1"]', 'Company 1'
|
|
91
|
+
assert_select 'form select option[value="2"]', 'Company 2'
|
|
92
|
+
assert_select 'form select option[value="3"]', 'Company 3'
|
|
93
93
|
end
|
|
94
94
|
|
|
95
95
|
test 'builder creates blank select if collection is nil' do
|
|
96
96
|
with_association_for @user, :company, collection: nil
|
|
97
97
|
assert_select 'form select.select#user_company_id'
|
|
98
|
-
assert_no_select 'form select option[value=1]', 'Company 1'
|
|
98
|
+
assert_no_select 'form select option[value="1"]', 'Company 1'
|
|
99
99
|
end
|
|
100
100
|
|
|
101
101
|
test 'builder allows collection radio for belongs_to associations' do
|
|
@@ -108,17 +108,17 @@ class AssociationTest < ActionView::TestCase
|
|
|
108
108
|
test 'builder allows collection to have a proc as a condition' do
|
|
109
109
|
with_association_for @user, :extra_special_company
|
|
110
110
|
assert_select 'form select.select#user_extra_special_company_id'
|
|
111
|
-
assert_select 'form select option[value=1]'
|
|
112
|
-
assert_no_select 'form select option[value=2]'
|
|
113
|
-
assert_no_select 'form select option[value=3]'
|
|
111
|
+
assert_select 'form select option[value="1"]'
|
|
112
|
+
assert_no_select 'form select option[value="2"]'
|
|
113
|
+
assert_no_select 'form select option[value="3"]'
|
|
114
114
|
end
|
|
115
115
|
|
|
116
116
|
test 'builder allows collection to have a scope' do
|
|
117
117
|
with_association_for @user, :special_pictures
|
|
118
118
|
assert_select 'form select.select#user_special_picture_ids'
|
|
119
|
-
assert_select 'form select option[value=3]', '3'
|
|
120
|
-
assert_no_select 'form select option[value=1]'
|
|
121
|
-
assert_no_select 'form select option[value=2]'
|
|
119
|
+
assert_select 'form select option[value="3"]', '3'
|
|
120
|
+
assert_no_select 'form select option[value="1"]'
|
|
121
|
+
assert_no_select 'form select option[value="2"]'
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
test 'builder marks the record which already belongs to the user' do
|
|
@@ -130,20 +130,20 @@ class AssociationTest < ActionView::TestCase
|
|
|
130
130
|
end
|
|
131
131
|
|
|
132
132
|
# ASSOCIATIONS - FINDERS
|
|
133
|
-
test 'builder
|
|
133
|
+
test 'builder uses reflection conditions to find collection' do
|
|
134
134
|
with_association_for @user, :special_company
|
|
135
135
|
assert_select 'form select.select#user_special_company_id'
|
|
136
|
-
assert_select 'form select option[value=1]'
|
|
137
|
-
assert_no_select 'form select option[value=2]'
|
|
138
|
-
assert_no_select 'form select option[value=3]'
|
|
136
|
+
assert_select 'form select option[value="1"]'
|
|
137
|
+
assert_no_select 'form select option[value="2"]'
|
|
138
|
+
assert_no_select 'form select option[value="3"]'
|
|
139
139
|
end
|
|
140
140
|
|
|
141
|
-
test 'builder
|
|
141
|
+
test 'builder allows overriding collection to association input' do
|
|
142
142
|
with_association_for @user, :company, include_blank: false,
|
|
143
143
|
collection: [Company.new(999, 'Teste')]
|
|
144
144
|
assert_select 'form select.select#user_company_id'
|
|
145
|
-
assert_no_select 'form select option[value=1]'
|
|
146
|
-
assert_select 'form select option[value=999]', 'Teste'
|
|
145
|
+
assert_no_select 'form select option[value="1"]'
|
|
146
|
+
assert_select 'form select option[value="999"]', 'Teste'
|
|
147
147
|
assert_select 'form select option', count: 1
|
|
148
148
|
end
|
|
149
149
|
|
|
@@ -158,31 +158,31 @@ class AssociationTest < ActionView::TestCase
|
|
|
158
158
|
with_association_for @user, :pictures
|
|
159
159
|
assert_select 'form select.select#user_picture_ids'
|
|
160
160
|
assert_select 'form select[multiple=multiple]'
|
|
161
|
-
assert_select 'form select option[value=1]', 'Picture 1'
|
|
162
|
-
assert_select 'form select option[value=2]', 'Picture 2'
|
|
163
|
-
assert_select 'form select option[value=3]', 'Picture 3'
|
|
161
|
+
assert_select 'form select option[value="1"]', 'Picture 1'
|
|
162
|
+
assert_select 'form select option[value="2"]', 'Picture 2'
|
|
163
|
+
assert_select 'form select option[value="3"]', 'Picture 3'
|
|
164
164
|
end
|
|
165
165
|
|
|
166
166
|
test 'builder creates a select with multiple options for collection associations' do
|
|
167
167
|
with_association_for @user, :tags
|
|
168
168
|
assert_select 'form select.select#user_tag_ids'
|
|
169
169
|
assert_select 'form select[multiple=multiple]'
|
|
170
|
-
assert_select 'form select option[value=1]', 'Tag 1'
|
|
171
|
-
assert_select 'form select option[value=2]', 'Tag 2'
|
|
172
|
-
assert_select 'form select option[value=3]', 'Tag 3'
|
|
170
|
+
assert_select 'form select option[value="1"]', 'Tag 1'
|
|
171
|
+
assert_select 'form select option[value="2"]', 'Tag 2'
|
|
172
|
+
assert_select 'form select option[value="3"]', 'Tag 3'
|
|
173
173
|
end
|
|
174
174
|
|
|
175
175
|
test 'builder allows size to be overwritten for collection associations' do
|
|
176
176
|
with_association_for @user, :tags, input_html: { size: 10 }
|
|
177
|
-
assert_select 'form select[multiple=multiple][size=10]'
|
|
177
|
+
assert_select 'form select[multiple=multiple][size="10"]'
|
|
178
178
|
end
|
|
179
179
|
|
|
180
180
|
test 'builder marks all selected records which already belongs to user' do
|
|
181
181
|
@user.tag_ids = [1, 2]
|
|
182
182
|
with_association_for @user, :tags
|
|
183
|
-
assert_select 'form select option[value=1][selected=selected]'
|
|
184
|
-
assert_select 'form select option[value=2][selected=selected]'
|
|
185
|
-
assert_no_select 'form select option[value=3][selected=selected]'
|
|
183
|
+
assert_select 'form select option[value="1"][selected=selected]'
|
|
184
|
+
assert_select 'form select option[value="2"][selected=selected]'
|
|
185
|
+
assert_no_select 'form select option[value="3"][selected=selected]'
|
|
186
186
|
end
|
|
187
187
|
|
|
188
188
|
test 'builder allows a collection of check boxes for collection associations' do
|
|
@@ -196,9 +196,9 @@ class AssociationTest < ActionView::TestCase
|
|
|
196
196
|
test 'builder marks all selected records for collection boxes' do
|
|
197
197
|
@user.tag_ids = [1, 2]
|
|
198
198
|
with_association_for @user, :tags, as: :check_boxes
|
|
199
|
-
assert_select 'form input[type=checkbox][value=1][checked=checked]'
|
|
200
|
-
assert_select 'form input[type=checkbox][value=2][checked=checked]'
|
|
201
|
-
assert_no_select 'form input[type=checkbox][value=3][checked=checked]'
|
|
199
|
+
assert_select 'form input[type=checkbox][value="1"][checked=checked]'
|
|
200
|
+
assert_select 'form input[type=checkbox][value="2"][checked=checked]'
|
|
201
|
+
assert_no_select 'form input[type=checkbox][value="3"][checked=checked]'
|
|
202
202
|
end
|
|
203
203
|
|
|
204
204
|
test 'builder with collection support giving collection and item wrapper tags' do
|
|
@@ -209,7 +209,7 @@ class AssociationTest < ActionView::TestCase
|
|
|
209
209
|
assert_select 'form ul li', count: 3
|
|
210
210
|
end
|
|
211
211
|
|
|
212
|
-
test 'builder with collection support
|
|
212
|
+
test 'builder with collection support does not change the options hash' do
|
|
213
213
|
options = { as: :check_boxes, collection_wrapper_tag: :ul, item_wrapper_tag: :li}
|
|
214
214
|
with_association_for @user, :tags, options
|
|
215
215
|
|
|
@@ -8,33 +8,33 @@ class ButtonTest < ActionView::TestCase
|
|
|
8
8
|
end
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
test 'builder
|
|
11
|
+
test 'builder creates buttons' do
|
|
12
12
|
with_button_for :post, :submit
|
|
13
|
-
assert_select 'form input.button[type=submit][value=Save Post]'
|
|
13
|
+
assert_select 'form input.button[type=submit][value="Save Post"]'
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
test 'builder
|
|
16
|
+
test 'builder creates buttons with options' do
|
|
17
17
|
with_button_for :post, :submit, class: 'my_button'
|
|
18
|
-
assert_select 'form input.button.my_button[type=submit][value=Save Post]'
|
|
18
|
+
assert_select 'form input.button.my_button[type=submit][value="Save Post"]'
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
test 'builder
|
|
21
|
+
test 'builder does not modify the options hash' do
|
|
22
22
|
options = { class: 'my_button' }
|
|
23
23
|
with_button_for :post, :submit, options
|
|
24
|
-
assert_select 'form input.button.my_button[type=submit][value=Save Post]'
|
|
24
|
+
assert_select 'form input.button.my_button[type=submit][value="Save Post"]'
|
|
25
25
|
assert_equal({ class: 'my_button' }, options)
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
test 'builder
|
|
28
|
+
test 'builder creates buttons for records' do
|
|
29
29
|
@user.new_record!
|
|
30
30
|
with_button_for @user, :submit
|
|
31
|
-
assert_select 'form input.button[type=submit][value=Create User]'
|
|
31
|
+
assert_select 'form input.button[type=submit][value="Create User"]'
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
test "builder
|
|
34
|
+
test "builder uses the default class from the configuration" do
|
|
35
35
|
swap SimpleForm, button_class: 'btn' do
|
|
36
36
|
with_button_for :post, :submit
|
|
37
|
-
assert_select 'form input.btn[type=submit][value=Save Post]'
|
|
37
|
+
assert_select 'form input.btn[type=submit][value="Save Post"]'
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
40
|
|