simple_form 2.1.3 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of simple_form might be problematic. Click here for more details.

Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -51
  3. data/README.md +195 -161
  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 +16 -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/builder.rb.orig +247 -0
  11. data/lib/simple_form/action_view_extensions/form_helper.rb +2 -9
  12. data/lib/simple_form/components/errors.rb +1 -7
  13. data/lib/simple_form/components/hints.rb +2 -7
  14. data/lib/simple_form/components/html5.rb +5 -2
  15. data/lib/simple_form/components/labels.rb +4 -4
  16. data/lib/simple_form/components/maxlength.rb +1 -8
  17. data/lib/simple_form/components/pattern.rb +2 -2
  18. data/lib/simple_form/components.rb +1 -1
  19. data/lib/simple_form/error_notification.rb +2 -2
  20. data/lib/simple_form/form_builder.rb +154 -50
  21. data/lib/simple_form/form_builder.rb.orig +486 -0
  22. data/lib/simple_form/helpers.rb +1 -1
  23. data/lib/simple_form/inputs/base.rb +7 -10
  24. data/lib/simple_form/inputs/block_input.rb +1 -1
  25. data/lib/simple_form/inputs/boolean_input.rb +6 -5
  26. data/lib/simple_form/inputs/collection_input.rb +7 -7
  27. data/lib/simple_form/inputs/date_time_input.rb +1 -1
  28. data/lib/simple_form/inputs/numeric_input.rb +0 -6
  29. data/lib/simple_form/inputs/password_input.rb +0 -1
  30. data/lib/simple_form/inputs/string_input.rb +0 -1
  31. data/lib/simple_form/railtie.rb +7 -0
  32. data/lib/simple_form/tags.rb +62 -0
  33. data/lib/simple_form/version.rb +1 -1
  34. data/lib/simple_form/version.rb.orig +7 -0
  35. data/lib/simple_form/wrappers/builder.rb +5 -29
  36. data/lib/simple_form/wrappers/many.rb +1 -1
  37. data/lib/simple_form/wrappers/root.rb +1 -1
  38. data/lib/simple_form/wrappers.rb +1 -1
  39. data/lib/simple_form.rb +43 -47
  40. data/test/action_view_extensions/builder_test.rb +78 -99
  41. data/test/action_view_extensions/form_helper_test.rb +25 -16
  42. data/test/components/label_test.rb +46 -46
  43. data/test/form_builder/association_test.rb +47 -29
  44. data/test/form_builder/button_test.rb +4 -4
  45. data/test/form_builder/error_notification_test.rb +8 -8
  46. data/test/form_builder/error_test.rb +18 -65
  47. data/test/form_builder/general_test.rb +62 -63
  48. data/test/form_builder/hint_test.rb +23 -29
  49. data/test/form_builder/input_field_test.rb +29 -12
  50. data/test/form_builder/label_test.rb +7 -17
  51. data/test/form_builder/wrapper_test.rb +21 -21
  52. data/test/inputs/boolean_input_test.rb +24 -24
  53. data/test/inputs/collection_check_boxes_input_test.rb +66 -55
  54. data/test/inputs/collection_radio_buttons_input_test.rb +81 -79
  55. data/test/inputs/collection_select_input_test.rb +76 -51
  56. data/test/inputs/datetime_input_test.rb +17 -11
  57. data/test/inputs/disabled_test.rb +10 -10
  58. data/test/inputs/discovery_test.rb +4 -4
  59. data/test/inputs/file_input_test.rb +1 -1
  60. data/test/inputs/general_test.rb +28 -12
  61. data/test/inputs/grouped_collection_select_input_test.rb +33 -20
  62. data/test/inputs/hidden_input_test.rb +3 -2
  63. data/test/inputs/numeric_input_test.rb +3 -3
  64. data/test/inputs/priority_input_test.rb +9 -3
  65. data/test/inputs/readonly_test.rb +12 -12
  66. data/test/inputs/required_test.rb +5 -5
  67. data/test/inputs/string_input_test.rb +15 -25
  68. data/test/inputs/text_input_test.rb +1 -1
  69. data/test/support/misc_helpers.rb +46 -24
  70. data/test/support/mock_controller.rb +6 -6
  71. data/test/support/models.rb +77 -62
  72. data/test/test_helper.rb +17 -34
  73. metadata +39 -22
  74. data/lib/simple_form/core_ext/hash.rb +0 -16
@@ -49,8 +49,7 @@ class BuilderTest < ActionView::TestCase
49
49
  end
50
50
 
51
51
  test "collection radio checks the correct value to local variables" do
52
- user = User.new
53
- user.active = false
52
+ user = User.build(active: false)
54
53
  with_collection_radio_buttons user, :active, [true, false], :to_s, :to_s
55
54
 
56
55
  assert_select 'form input[type=radio][value=true]'
@@ -58,21 +57,21 @@ class BuilderTest < ActionView::TestCase
58
57
  end
59
58
 
60
59
  test "collection radio accepts checked item" do
61
- with_collection_radio_buttons @user, :active, [[1, true], [0, false]], :last, :first, :checked => true
60
+ with_collection_radio_buttons @user, :active, [[1, true], [0, false]], :last, :first, checked: true
62
61
 
63
62
  assert_select 'form input[type=radio][value=true][checked=checked]'
64
63
  assert_no_select 'form input[type=radio][value=false][checked=checked]'
65
64
  end
66
65
 
67
66
  test "collection radio accepts checked item which has a value of false" do
68
- with_collection_radio_buttons @user, :active, [[1, true], [0, false]], :last, :first, :checked => false
67
+ with_collection_radio_buttons @user, :active, [[1, true], [0, false]], :last, :first, checked: false
69
68
  assert_no_select 'form input[type=radio][value=true][checked=checked]'
70
69
  assert_select 'form input[type=radio][value=false][checked=checked]'
71
70
  end
72
71
 
73
72
  test "collection radio accepts multiple disabled items" do
74
73
  collection = [[1, true], [0, false], [2, 'other']]
75
- with_collection_radio_buttons @user, :active, collection, :last, :first, :disabled => [true, false]
74
+ with_collection_radio_buttons @user, :active, collection, :last, :first, disabled: [true, false]
76
75
 
77
76
  assert_select 'form input[type=radio][value=true][disabled=disabled]'
78
77
  assert_select 'form input[type=radio][value=false][disabled=disabled]'
@@ -81,7 +80,7 @@ class BuilderTest < ActionView::TestCase
81
80
 
82
81
  test "collection radio accepts single disable item" do
83
82
  collection = [[1, true], [0, false]]
84
- with_collection_radio_buttons @user, :active, collection, :last, :first, :disabled => true
83
+ with_collection_radio_buttons @user, :active, collection, :last, :first, disabled: true
85
84
 
86
85
  assert_select 'form input[type=radio][value=true][disabled=disabled]'
87
86
  assert_no_select 'form input[type=radio][value=false][disabled=disabled]'
@@ -89,50 +88,50 @@ class BuilderTest < ActionView::TestCase
89
88
 
90
89
  test "collection radio accepts html options as input" do
91
90
  collection = [[1, true], [0, false]]
92
- with_collection_radio_buttons @user, :active, collection, :last, :first, {}, :class => 'special-radio'
91
+ with_collection_radio_buttons @user, :active, collection, :last, :first, {}, class: 'special-radio'
93
92
 
94
93
  assert_select 'form input[type=radio][value=true].special-radio#user_active_true'
95
94
  assert_select 'form input[type=radio][value=false].special-radio#user_active_false'
96
95
  end
97
96
 
98
97
  test "collection radio wraps the collection in the given collection wrapper tag" do
99
- with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s, :collection_wrapper_tag => :ul
98
+ with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s, collection_wrapper_tag: :ul
100
99
 
101
- assert_select 'form ul input[type=radio]', :count => 2
100
+ assert_select 'form ul input[type=radio]', count: 2
102
101
  end
103
102
 
104
103
  test "collection radio does not render any wrapper tag by default" do
105
104
  with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s
106
105
 
107
- assert_select 'form input[type=radio]', :count => 2
106
+ assert_select 'form input[type=radio]', count: 2
108
107
  assert_no_select 'form ul'
109
108
  end
110
109
 
111
110
  test "collection radio does not wrap the collection when given falsy values" do
112
- with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s, :collection_wrapper_tag => false
111
+ with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s, collection_wrapper_tag: false
113
112
 
114
- assert_select 'form input[type=radio]', :count => 2
113
+ assert_select 'form input[type=radio]', count: 2
115
114
  assert_no_select 'form ul'
116
115
  end
117
116
 
118
117
  test "collection radio uses the given class for collection wrapper tag" do
119
118
  with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s,
120
- :collection_wrapper_tag => :ul, :collection_wrapper_class => "items-list"
119
+ collection_wrapper_tag: :ul, collection_wrapper_class: "items-list"
121
120
 
122
- assert_select 'form ul.items-list input[type=radio]', :count => 2
121
+ assert_select 'form ul.items-list input[type=radio]', count: 2
123
122
  end
124
123
 
125
124
  test "collection radio uses no class for collection wrapper tag when no wrapper tag is given" do
126
125
  with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s,
127
- :collection_wrapper_class => "items-list"
126
+ collection_wrapper_class: "items-list"
128
127
 
129
- assert_select 'form input[type=radio]', :count => 2
128
+ assert_select 'form input[type=radio]', count: 2
130
129
  assert_no_select 'form ul'
131
130
  assert_no_select '.items-list'
132
131
  end
133
132
 
134
133
  test "collection radio uses no class for collection wrapper tag by default" do
135
- with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s, :collection_wrapper_tag => :ul
134
+ with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s, collection_wrapper_tag: :ul
136
135
 
137
136
  assert_select 'form ul'
138
137
  assert_no_select 'form ul[class]'
@@ -146,13 +145,13 @@ class BuilderTest < ActionView::TestCase
146
145
  end
147
146
 
148
147
  test "collection radio wraps each item in the given item wrapper tag" do
149
- with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s, :item_wrapper_tag => :li
148
+ with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s, item_wrapper_tag: :li
150
149
 
151
- assert_select 'form li input[type=radio]', :count => 2
150
+ assert_select 'form li input[type=radio]', count: 2
152
151
  end
153
152
 
154
153
  test "collection radio does not wrap each item when given explicitly falsy value" do
155
- with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s, :item_wrapper_tag => false
154
+ with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s, item_wrapper_tag: false
156
155
 
157
156
  assert_select 'form input[type=radio]'
158
157
  assert_no_select 'form span input[type=radio]'
@@ -160,25 +159,25 @@ class BuilderTest < ActionView::TestCase
160
159
 
161
160
  test "collection radio uses the given class for item wrapper tag" do
162
161
  with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s,
163
- :item_wrapper_tag => :li, :item_wrapper_class => "inline"
162
+ item_wrapper_tag: :li, item_wrapper_class: "inline"
164
163
 
165
- assert_select "form li.inline input[type=radio]", :count => 2
164
+ assert_select "form li.inline input[type=radio]", count: 2
166
165
  end
167
166
 
168
167
  test "collection radio uses no class for item wrapper tag when no wrapper tag is given" do
169
168
  with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s,
170
- :item_wrapper_tag => nil, :item_wrapper_class => "inline"
169
+ item_wrapper_tag: nil, item_wrapper_class: "inline"
171
170
 
172
- assert_select 'form input[type=radio]', :count => 2
171
+ assert_select 'form input[type=radio]', count: 2
173
172
  assert_no_select 'form li'
174
173
  assert_no_select '.inline'
175
174
  end
176
175
 
177
176
  test "collection radio uses no class for item wrapper tag by default" do
178
177
  with_collection_radio_buttons @user, :active, [true, false], :to_s, :to_s,
179
- :item_wrapper_tag => :li
178
+ item_wrapper_tag: :li
180
179
 
181
- assert_select "form li", :count => 2
180
+ assert_select "form li", count: 2
182
181
  assert_no_select "form li[class]"
183
182
  end
184
183
 
@@ -209,7 +208,7 @@ class BuilderTest < ActionView::TestCase
209
208
 
210
209
  test "collection radio with block helpers accept extra html options" do
211
210
  with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s do |b|
212
- b.label(:class => "radio_button") + b.radio_button(:class => "radio_button")
211
+ b.label(class: "radio_button") + b.radio_button(class: "radio_button")
213
212
  end
214
213
 
215
214
  assert_select 'label.radio_button[for=user_active_true] + input#user_active_true.radio_button[type=radio]'
@@ -231,7 +230,7 @@ class BuilderTest < ActionView::TestCase
231
230
 
232
231
  test "collection radio with block helpers allows access to the current object item in the collection to access extra properties" do
233
232
  with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s do |b|
234
- b.label(:class => b.object) { b.radio_button + b.text }
233
+ b.label(class: b.object) { b.radio_button + b.text }
235
234
  end
236
235
 
237
236
  assert_select 'label.true[for=user_active_true]', 'true' do
@@ -245,33 +244,20 @@ class BuilderTest < ActionView::TestCase
245
244
  test "collection radio with block helpers does not leak the template" do
246
245
  with_concat_form_for(@user) do |f|
247
246
  collection_input = f.collection_radio_buttons :active, [true, false], :to_s, :to_s do |b|
248
- b.label(:class => b.object) { b.radio_button + b.text }
247
+ b.label(class: b.object) { b.radio_button + b.text }
249
248
  end
250
249
  concat collection_input
251
250
 
252
251
  concat f.hidden_field :name
253
252
  end
254
253
 
255
- assert_select 'label.true[for=user_active_true]', :text => 'true', :count => 1 do
254
+ assert_select 'label.true[for=user_active_true]', text: 'true', count: 1 do
256
255
  assert_select 'input#user_active_true[type=radio]'
257
256
  end
258
- assert_select 'label.false[for=user_active_false]', :text => 'false', :count => 1 do
257
+ assert_select 'label.false[for=user_active_false]', text: 'false', count: 1 do
259
258
  assert_select 'input#user_active_false[type=radio]'
260
259
  end
261
260
  end
262
-
263
- test "collection_radio helper is deprecated in favor of collection_radio_buttons" do
264
- assert_deprecated "[SIMPLE_FORM] The `collection_radio` helper is deprecated, " \
265
- "please use `collection_radio_buttons` instead" do
266
- with_concat_form_for(@user) do |f|
267
- f.collection_radio :active, [true, false], :to_s, :to_s
268
- end
269
- end
270
-
271
- assert_select 'input[type=radio][value=true]'
272
- assert_select 'input[type=radio][value=false]'
273
- end
274
-
275
261
  # COLLECTION CHECK BOX
276
262
  test "collection check box accepts a collection and generate a serie of checkboxes for value method" do
277
263
  collection = [Tag.new(1, 'Tag 1'), Tag.new(2, 'Tag 2')]
@@ -285,14 +271,7 @@ class BuilderTest < ActionView::TestCase
285
271
  collection = [Tag.new(1, 'Tag 1'), Tag.new(2, 'Tag 2')]
286
272
  with_collection_check_boxes @user, :tag_ids, collection, :id, :name
287
273
 
288
- assert_select "form input[type=hidden][name='user[tag_ids][]'][value=]", :count => 1
289
- end
290
-
291
- test "collection check box generates a hidden field using the given :name in :input_html" do
292
- collection = [Tag.new(1, 'Tag 1'), Tag.new(2, 'Tag 2')]
293
- with_collection_check_boxes @user, :tag_ids, collection, :id, :name, {}, {:name => "user[other_tag_ids][]"}
294
-
295
- assert_select "form input[type=hidden][name='user[other_tag_ids][]'][value=]", :count => 1
274
+ assert_select "form input[type=hidden][name='user[tag_ids][]'][value=]", count: 1
296
275
  end
297
276
 
298
277
  test "collection check box accepts a collection and generate a serie of checkboxes with labels for label method" do
@@ -317,9 +296,9 @@ class BuilderTest < ActionView::TestCase
317
296
  end
318
297
 
319
298
  test "collection check box checks the correct value to local variables" do
320
- user = User.new
321
- user.tag_ids = [1, 3]
322
- collection = (1..3).map{|i| [i, "Tag #{i}"] }
299
+ user = User.build(tag_ids: [1, 3])
300
+ collection = (1..3).map { |i| [i, "Tag #{i}"] }
301
+
323
302
  with_collection_check_boxes user, :tag_ids, collection, :first, :last
324
303
 
325
304
  assert_select 'form input[type=checkbox][value=1][checked=checked]'
@@ -328,8 +307,8 @@ class BuilderTest < ActionView::TestCase
328
307
  end
329
308
 
330
309
  test "collection check box accepts selected values as :checked option" do
331
- collection = (1..3).map{|i| [i, "Tag #{i}"] }
332
- with_collection_check_boxes @user, :tag_ids, collection, :first, :last, :checked => [1, 3]
310
+ collection = (1..3).map { |i| [i, "Tag #{i}"] }
311
+ with_collection_check_boxes @user, :tag_ids, collection, :first, :last, checked: [1, 3]
333
312
 
334
313
  assert_select 'form input[type=checkbox][value=1][checked=checked]'
335
314
  assert_select 'form input[type=checkbox][value=3][checked=checked]'
@@ -337,8 +316,8 @@ class BuilderTest < ActionView::TestCase
337
316
  end
338
317
 
339
318
  test "collection check boxes accepts selected string values as :checked option" do
340
- collection = (1..3).map{|i| [i, "Category #{i}"] }
341
- with_collection_check_boxes :user, :category_ids, collection, :first, :last, :checked => ['1', '3']
319
+ collection = (1..3).map { |i| [i, "Category #{i}"] }
320
+ with_collection_check_boxes :user, :category_ids, collection, :first, :last, checked: ['1', '3']
342
321
 
343
322
  assert_select 'input[type=checkbox][value=1][checked=checked]'
344
323
  assert_select 'input[type=checkbox][value=3][checked=checked]'
@@ -346,8 +325,8 @@ class BuilderTest < ActionView::TestCase
346
325
  end
347
326
 
348
327
  test "collection check box accepts a single checked value" do
349
- collection = (1..3).map{|i| [i, "Tag #{i}"] }
350
- with_collection_check_boxes @user, :tag_ids, collection, :first, :last, :checked => 3
328
+ collection = (1..3).map { |i| [i, "Tag #{i}"] }
329
+ with_collection_check_boxes @user, :tag_ids, collection, :first, :last, checked: 3
351
330
 
352
331
  assert_select 'form input[type=checkbox][value=3][checked=checked]'
353
332
  assert_no_select 'form input[type=checkbox][value=1][checked=checked]'
@@ -355,9 +334,9 @@ class BuilderTest < ActionView::TestCase
355
334
  end
356
335
 
357
336
  test "collection check box accepts selected values as :checked option and override the model values" do
358
- collection = (1..3).map{|i| [i, "Tag #{i}"] }
337
+ collection = (1..3).map { |i| [i, "Tag #{i}"] }
359
338
  @user.tag_ids = [2]
360
- with_collection_check_boxes @user, :tag_ids, collection, :first, :last, :checked => [1, 3]
339
+ with_collection_check_boxes @user, :tag_ids, collection, :first, :last, checked: [1, 3]
361
340
 
362
341
  assert_select 'form input[type=checkbox][value=1][checked=checked]'
363
342
  assert_select 'form input[type=checkbox][value=3][checked=checked]'
@@ -365,8 +344,8 @@ class BuilderTest < ActionView::TestCase
365
344
  end
366
345
 
367
346
  test "collection check box accepts multiple disabled items" do
368
- collection = (1..3).map{|i| [i, "Tag #{i}"] }
369
- with_collection_check_boxes @user, :tag_ids, collection, :first, :last, :disabled => [1, 3]
347
+ collection = (1..3).map { |i| [i, "Tag #{i}"] }
348
+ with_collection_check_boxes @user, :tag_ids, collection, :first, :last, disabled: [1, 3]
370
349
 
371
350
  assert_select 'form input[type=checkbox][value=1][disabled=disabled]'
372
351
  assert_select 'form input[type=checkbox][value=3][disabled=disabled]'
@@ -374,8 +353,8 @@ class BuilderTest < ActionView::TestCase
374
353
  end
375
354
 
376
355
  test "collection check box accepts single disable item" do
377
- collection = (1..3).map{|i| [i, "Tag #{i}"] }
378
- with_collection_check_boxes @user, :tag_ids, collection, :first, :last, :disabled => 1
356
+ collection = (1..3).map { |i| [i, "Tag #{i}"] }
357
+ with_collection_check_boxes @user, :tag_ids, collection, :first, :last, disabled: 1
379
358
 
380
359
  assert_select 'form input[type=checkbox][value=1][disabled=disabled]'
381
360
  assert_no_select 'form input[type=checkbox][value=3][disabled=disabled]'
@@ -383,8 +362,8 @@ class BuilderTest < ActionView::TestCase
383
362
  end
384
363
 
385
364
  test "collection check box accepts a proc to disabled items" do
386
- collection = (1..3).map{|i| [i, "Tag #{i}"] }
387
- with_collection_check_boxes @user, :tag_ids, collection, :first, :last, :disabled => proc { |i| i.first == 1 }
365
+ collection = (1..3).map { |i| [i, "Tag #{i}"] }
366
+ with_collection_check_boxes @user, :tag_ids, collection, :first, :last, disabled: proc { |i| i.first == 1 }
388
367
 
389
368
  assert_select 'form input[type=checkbox][value=1][disabled=disabled]'
390
369
  assert_no_select 'form input[type=checkbox][value=3][disabled=disabled]'
@@ -393,7 +372,7 @@ class BuilderTest < ActionView::TestCase
393
372
 
394
373
  test "collection check box accepts html options" do
395
374
  collection = [[1, 'Tag 1'], [2, 'Tag 2']]
396
- with_collection_check_boxes @user, :tag_ids, collection, :first, :last, {}, :class => 'check'
375
+ with_collection_check_boxes @user, :tag_ids, collection, :first, :last, {}, class: 'check'
397
376
 
398
377
  assert_select 'form input.check[type=checkbox][value=1]'
399
378
  assert_select 'form input.check[type=checkbox][value=2]'
@@ -415,43 +394,43 @@ class BuilderTest < ActionView::TestCase
415
394
  end
416
395
 
417
396
  test "collection check boxes wraps the collection in the given collection wrapper tag" do
418
- with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s, :collection_wrapper_tag => :ul
397
+ with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s, collection_wrapper_tag: :ul
419
398
 
420
- assert_select 'form ul input[type=checkbox]', :count => 2
399
+ assert_select 'form ul input[type=checkbox]', count: 2
421
400
  end
422
401
 
423
402
  test "collection check boxes does not render any wrapper tag by default" do
424
403
  with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s
425
404
 
426
- assert_select 'form input[type=checkbox]', :count => 2
405
+ assert_select 'form input[type=checkbox]', count: 2
427
406
  assert_no_select 'form ul'
428
407
  end
429
408
 
430
409
  test "collection check boxes does not wrap the collection when given falsy values" do
431
- with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s, :collection_wrapper_tag => false
410
+ with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s, collection_wrapper_tag: false
432
411
 
433
- assert_select 'form input[type=checkbox]', :count => 2
412
+ assert_select 'form input[type=checkbox]', count: 2
434
413
  assert_no_select 'form ul'
435
414
  end
436
415
 
437
416
  test "collection check boxes uses the given class for collection wrapper tag" do
438
417
  with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s,
439
- :collection_wrapper_tag => :ul, :collection_wrapper_class => "items-list"
418
+ collection_wrapper_tag: :ul, collection_wrapper_class: "items-list"
440
419
 
441
- assert_select 'form ul.items-list input[type=checkbox]', :count => 2
420
+ assert_select 'form ul.items-list input[type=checkbox]', count: 2
442
421
  end
443
422
 
444
423
  test "collection check boxes uses no class for collection wrapper tag when no wrapper tag is given" do
445
424
  with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s,
446
- :collection_wrapper_class => "items-list"
425
+ collection_wrapper_class: "items-list"
447
426
 
448
- assert_select 'form input[type=checkbox]', :count => 2
427
+ assert_select 'form input[type=checkbox]', count: 2
449
428
  assert_no_select 'form ul'
450
429
  assert_no_select '.items-list'
451
430
  end
452
431
 
453
432
  test "collection check boxes uses no class for collection wrapper tag by default" do
454
- with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s, :collection_wrapper_tag => :ul
433
+ with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s, collection_wrapper_tag: :ul
455
434
 
456
435
  assert_select 'form ul'
457
436
  assert_no_select 'form ul[class]'
@@ -460,17 +439,17 @@ class BuilderTest < ActionView::TestCase
460
439
  test "collection check boxes wrap items in a span tag by default" do
461
440
  with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s
462
441
 
463
- assert_select 'form span input[type=checkbox]', :count => 2
442
+ assert_select 'form span input[type=checkbox]', count: 2
464
443
  end
465
444
 
466
445
  test "collection check boxes wraps each item in the given item wrapper tag" do
467
- with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s, :item_wrapper_tag => :li
446
+ with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s, item_wrapper_tag: :li
468
447
 
469
- assert_select 'form li input[type=checkbox]', :count => 2
448
+ assert_select 'form li input[type=checkbox]', count: 2
470
449
  end
471
450
 
472
451
  test "collection check boxes does not wrap each item when given explicitly falsy value" do
473
- with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s, :item_wrapper_tag => false
452
+ with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s, item_wrapper_tag: false
474
453
 
475
454
  assert_select 'form input[type=checkbox]'
476
455
  assert_no_select 'form span input[type=checkbox]'
@@ -478,25 +457,25 @@ class BuilderTest < ActionView::TestCase
478
457
 
479
458
  test "collection check boxes uses the given class for item wrapper tag" do
480
459
  with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s,
481
- :item_wrapper_tag => :li, :item_wrapper_class => "inline"
460
+ item_wrapper_tag: :li, item_wrapper_class: "inline"
482
461
 
483
- assert_select "form li.inline input[type=checkbox]", :count => 2
462
+ assert_select "form li.inline input[type=checkbox]", count: 2
484
463
  end
485
464
 
486
465
  test "collection check boxes uses no class for item wrapper tag when no wrapper tag is given" do
487
466
  with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s,
488
- :item_wrapper_tag => nil, :item_wrapper_class => "inline"
467
+ item_wrapper_tag: nil, item_wrapper_class: "inline"
489
468
 
490
- assert_select 'form input[type=checkbox]', :count => 2
469
+ assert_select 'form input[type=checkbox]', count: 2
491
470
  assert_no_select 'form li'
492
471
  assert_no_select '.inline'
493
472
  end
494
473
 
495
474
  test "collection check boxes uses no class for item wrapper tag by default" do
496
475
  with_collection_check_boxes @user, :active, [true, false], :to_s, :to_s,
497
- :item_wrapper_tag => :li
476
+ item_wrapper_tag: :li
498
477
 
499
- assert_select "form li", :count => 2
478
+ assert_select "form li", count: 2
500
479
  assert_no_select "form li[class]"
501
480
  end
502
481
 
@@ -527,7 +506,7 @@ class BuilderTest < ActionView::TestCase
527
506
 
528
507
  test "collection check boxes with block helpers accept extra html options" do
529
508
  with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s do |b|
530
- b.label(:class => "check_box") + b.check_box(:class => "check_box")
509
+ b.label(class: "check_box") + b.check_box(class: "check_box")
531
510
  end
532
511
 
533
512
  assert_select 'label.check_box[for=user_active_true] + input#user_active_true.check_box[type=checkbox]'
@@ -549,7 +528,7 @@ class BuilderTest < ActionView::TestCase
549
528
 
550
529
  test "collection check boxes with block helpers allows access to the current object item in the collection to access extra properties" do
551
530
  with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s do |b|
552
- b.label(:class => b.object) { b.check_box + b.text }
531
+ b.label(class: b.object) { b.check_box + b.text }
553
532
  end
554
533
 
555
534
  assert_select 'label.true[for=user_active_true]', 'true' do
@@ -563,17 +542,17 @@ class BuilderTest < ActionView::TestCase
563
542
  test "collection check boxes with block helpers does not leak the template" do
564
543
  with_concat_form_for(@user) do |f|
565
544
  collection_input = f.collection_check_boxes :active, [true, false], :to_s, :to_s do |b|
566
- b.label(:class => b.object) { b.check_box + b.text }
545
+ b.label(class: b.object) { b.check_box + b.text }
567
546
  end
568
547
  concat collection_input
569
548
 
570
549
  concat f.hidden_field :name
571
550
  end
572
551
 
573
- assert_select 'label.true[for=user_active_true]', :text => 'true', :count => 1 do
552
+ assert_select 'label.true[for=user_active_true]', text: 'true', count: 1 do
574
553
  assert_select 'input#user_active_true[type=checkbox]'
575
554
  end
576
- assert_select 'label.false[for=user_active_false]', :text => 'false', :count => 1 do
555
+ assert_select 'label.false[for=user_active_false]', text: 'false', count: 1 do
577
556
  assert_select 'input#user_active_false[type=checkbox]'
578
557
  end
579
558
  end
@@ -608,7 +587,7 @@ class BuilderTest < ActionView::TestCase
608
587
 
609
588
  test "fields for yields an instance of FormBuilder if it was set in options" do
610
589
  with_custom_form_for(:user) do |f|
611
- f.simple_fields_for(:company, :builder => SimpleForm::FormBuilder) do |company|
590
+ f.simple_fields_for(:company, builder: SimpleForm::FormBuilder) do |company|
612
591
  assert company.instance_of?(SimpleForm::FormBuilder)
613
592
  end
614
593
  end
@@ -616,7 +595,7 @@ class BuilderTest < ActionView::TestCase
616
595
 
617
596
  test "fields inherites wrapper option from the parent form" do
618
597
  swap_wrapper :another do
619
- simple_form_for(:user, :wrapper => :another) do |f|
598
+ simple_form_for(:user, wrapper: :another) do |f|
620
599
  f.simple_fields_for(:company) do |company|
621
600
  assert_equal :another, company.options[:wrapper]
622
601
  end
@@ -626,8 +605,8 @@ class BuilderTest < ActionView::TestCase
626
605
 
627
606
  test "fields overrides wrapper option from the parent form" do
628
607
  swap_wrapper :another do
629
- simple_form_for(:user, :wrapper => :another) do |f|
630
- f.simple_fields_for(:company, :wrapper => false) do |company|
608
+ simple_form_for(:user, wrapper: :another) do |f|
609
+ f.simple_fields_for(:company, wrapper: false) do |company|
631
610
  assert_equal false, company.options[:wrapper]
632
611
  end
633
612
  end
@@ -19,31 +19,31 @@ class FormHelperTest < ActionView::TestCase
19
19
  end
20
20
 
21
21
  test 'SimpleForm should not use default browser validations if specified in the configuration options' do
22
- swap SimpleForm, :browser_validations => false do
22
+ swap SimpleForm, browser_validations: false do
23
23
  with_concat_form_for(:user)
24
24
  assert_select 'form[novalidate="novalidate"]'
25
25
  end
26
26
  end
27
27
 
28
- test 'a form specific disabled validation option should override the default enabled browser validation configuration option' do
29
- with_concat_form_for(:user, :html => { :novalidate => true })
28
+ test 'disabled browser validations overrides default configuration' do
29
+ with_concat_form_for(:user, html: { novalidate: true })
30
30
  assert_select 'form[novalidate="novalidate"]'
31
31
  end
32
32
 
33
- test 'a form specific enabled validation option should override the disabled browser validation configuration option' do
34
- swap SimpleForm, :browser_validations => false do
35
- with_concat_form_for(:user, :html => { :novalidate => false })
33
+ test 'enabled browser validations overrides disabled configuration' do
34
+ swap SimpleForm, browser_validations: false do
35
+ with_concat_form_for(:user, html: { novalidate: false })
36
36
  assert_no_select 'form[novalidate]'
37
37
  end
38
38
  end
39
39
 
40
40
  test 'SimpleForm should add object name as css class to form when object is not present' do
41
- with_concat_form_for(:user, :html => { :novalidate => true })
41
+ with_concat_form_for(:user, html: { novalidate: true })
42
42
  assert_select 'form.simple_form.user'
43
43
  end
44
44
 
45
45
  test 'SimpleForm should add :as option as css class to form when object is not present' do
46
- with_concat_form_for(:user, :as => 'superuser')
46
+ with_concat_form_for(:user, as: 'superuser')
47
47
  assert_select 'form.simple_form.superuser'
48
48
  end
49
49
 
@@ -55,7 +55,7 @@ class FormHelperTest < ActionView::TestCase
55
55
 
56
56
  test 'SimpleForm should add :as option with new prefix as css class to form if record is not persisted' do
57
57
  @user.new_record!
58
- with_concat_form_for(@user, :as => 'superuser')
58
+ with_concat_form_for(@user, as: 'superuser')
59
59
  assert_select 'form.simple_form.new_superuser'
60
60
  end
61
61
 
@@ -65,7 +65,7 @@ class FormHelperTest < ActionView::TestCase
65
65
  end
66
66
 
67
67
  test 'SimpleForm should add :as options with edit prefix as css class to form if record is persisted' do
68
- with_concat_form_for(@user, :as => 'superuser')
68
+ with_concat_form_for(@user, as: 'superuser')
69
69
  assert_select 'form.simple_form.edit_superuser'
70
70
  end
71
71
 
@@ -75,28 +75,28 @@ class FormHelperTest < ActionView::TestCase
75
75
  end
76
76
 
77
77
  test 'SimpleForm should not add object class to form if css_class is specified' do
78
- with_concat_form_for(:user, :html => {:class => nil})
78
+ with_concat_form_for(:user, html: { class: nil })
79
79
  assert_no_select 'form.user'
80
80
  end
81
81
 
82
82
  test 'SimpleForm should add custom class to form if css_class is specified' do
83
- with_concat_form_for(:user, :html => {:class => 'my_class'})
83
+ with_concat_form_for(:user, html: { class: 'my_class' })
84
84
  assert_select 'form.my_class'
85
85
  end
86
86
 
87
87
  test 'pass options to SimpleForm' do
88
- with_concat_form_for(:user, :url => '/account', :html => { :id => 'my_form' })
88
+ with_concat_form_for(:user, url: '/account', html: { id: 'my_form' })
89
89
  assert_select 'form#my_form'
90
90
  assert_select 'form[action=/account]'
91
91
  end
92
92
 
93
- test 'fields for yields an instance of FormBuilder' do
93
+ test 'form_for yields an instance of FormBuilder' do
94
94
  with_concat_form_for(:user) do |f|
95
95
  assert f.instance_of?(SimpleForm::FormBuilder)
96
96
  end
97
97
  end
98
98
 
99
- test 'fields for with a hash like model yeilds an instance of FormBuilder' do
99
+ test 'fields_for with a hash like model yields an instance of FormBuilder' do
100
100
  with_concat_fields_for(:author, HashBackedAuthor.new) do |f|
101
101
  assert f.instance_of?(SimpleForm::FormBuilder)
102
102
  f.input :name
@@ -131,10 +131,19 @@ class FormHelperTest < ActionView::TestCase
131
131
  end
132
132
  end
133
133
 
134
+ test 'SimpleForm for swaps default action view field_error_proc' do
135
+ expected_error_proc = lambda {}
136
+ swap SimpleForm, field_error_proc: expected_error_proc do
137
+ simple_form_for :user do |f|
138
+ assert_equal expected_error_proc, ::ActionView::Base.field_error_proc
139
+ end
140
+ end
141
+ end
142
+
134
143
  private
135
144
 
136
145
  def swap_field_error_proc(expected_error_proc = lambda {})
137
- swap ActionView::Base, :field_error_proc => expected_error_proc do
146
+ swap ActionView::Base, field_error_proc: expected_error_proc do
138
147
  yield
139
148
 
140
149
  assert_equal expected_error_proc, ActionView::Base.field_error_proc