simple_form 2.1.0 → 3.2.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.

Potentially problematic release.


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

Files changed (93) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +77 -33
  3. data/MIT-LICENSE +1 -1
  4. data/README.md +387 -187
  5. data/lib/generators/simple_form/install_generator.rb +4 -4
  6. data/lib/generators/simple_form/templates/README +3 -4
  7. data/lib/generators/simple_form/templates/config/initializers/simple_form.rb +45 -22
  8. data/lib/generators/simple_form/templates/config/initializers/simple_form_bootstrap.rb +128 -24
  9. data/lib/generators/simple_form/templates/config/initializers/simple_form_foundation.rb +87 -6
  10. data/lib/generators/simple_form/templates/config/locales/simple_form.en.yml +7 -2
  11. data/lib/simple_form/action_view_extensions/builder.rb +2 -319
  12. data/lib/simple_form/action_view_extensions/form_helper.rb +8 -11
  13. data/lib/simple_form/components/errors.rb +28 -2
  14. data/lib/simple_form/components/hints.rb +8 -3
  15. data/lib/simple_form/components/html5.rb +6 -3
  16. data/lib/simple_form/components/label_input.rb +20 -2
  17. data/lib/simple_form/components/labels.rb +14 -10
  18. data/lib/simple_form/components/maxlength.rb +2 -9
  19. data/lib/simple_form/components/min_max.rb +1 -1
  20. data/lib/simple_form/components/pattern.rb +3 -3
  21. data/lib/simple_form/components/placeholders.rb +2 -2
  22. data/lib/simple_form/components/readonly.rb +1 -1
  23. data/lib/simple_form/components.rb +1 -1
  24. data/lib/simple_form/error_notification.rb +2 -2
  25. data/lib/simple_form/form_builder.rb +262 -107
  26. data/lib/simple_form/helpers.rb +6 -6
  27. data/lib/simple_form/inputs/base.rb +37 -16
  28. data/lib/simple_form/inputs/block_input.rb +2 -2
  29. data/lib/simple_form/inputs/boolean_input.rb +33 -18
  30. data/lib/simple_form/inputs/collection_input.rb +34 -13
  31. data/lib/simple_form/inputs/collection_radio_buttons_input.rb +7 -12
  32. data/lib/simple_form/inputs/collection_select_input.rb +4 -2
  33. data/lib/simple_form/inputs/date_time_input.rb +23 -9
  34. data/lib/simple_form/inputs/file_input.rb +4 -2
  35. data/lib/simple_form/inputs/grouped_collection_select_input.rb +15 -3
  36. data/lib/simple_form/inputs/hidden_input.rb +4 -2
  37. data/lib/simple_form/inputs/numeric_input.rb +3 -8
  38. data/lib/simple_form/inputs/password_input.rb +4 -3
  39. data/lib/simple_form/inputs/priority_input.rb +4 -2
  40. data/lib/simple_form/inputs/range_input.rb +1 -1
  41. data/lib/simple_form/inputs/string_input.rb +4 -3
  42. data/lib/simple_form/inputs/text_input.rb +4 -2
  43. data/lib/simple_form/railtie.rb +14 -0
  44. data/lib/simple_form/tags.rb +68 -0
  45. data/lib/simple_form/version.rb +1 -1
  46. data/lib/simple_form/wrappers/builder.rb +11 -35
  47. data/lib/simple_form/wrappers/leaf.rb +28 -0
  48. data/lib/simple_form/wrappers/many.rb +7 -7
  49. data/lib/simple_form/wrappers/root.rb +2 -2
  50. data/lib/simple_form/wrappers/single.rb +5 -3
  51. data/lib/simple_form/wrappers.rb +2 -1
  52. data/lib/simple_form.rb +99 -52
  53. data/test/action_view_extensions/builder_test.rb +113 -127
  54. data/test/action_view_extensions/form_helper_test.rb +58 -30
  55. data/test/components/label_test.rb +83 -83
  56. data/test/form_builder/association_test.rb +96 -61
  57. data/test/form_builder/button_test.rb +14 -14
  58. data/test/form_builder/error_notification_test.rb +9 -9
  59. data/test/form_builder/error_test.rb +159 -34
  60. data/test/form_builder/general_test.rb +176 -121
  61. data/test/form_builder/hint_test.rb +43 -37
  62. data/test/form_builder/input_field_test.rb +99 -52
  63. data/test/form_builder/label_test.rb +67 -15
  64. data/test/form_builder/wrapper_test.rb +157 -41
  65. data/test/generators/simple_form_generator_test.rb +4 -4
  66. data/test/inputs/boolean_input_test.rb +92 -24
  67. data/test/inputs/collection_check_boxes_input_test.rb +150 -71
  68. data/test/inputs/collection_radio_buttons_input_test.rb +213 -113
  69. data/test/inputs/collection_select_input_test.rb +221 -85
  70. data/test/inputs/datetime_input_test.rb +125 -47
  71. data/test/inputs/disabled_test.rb +25 -25
  72. data/test/inputs/discovery_test.rb +60 -10
  73. data/test/inputs/file_input_test.rb +3 -3
  74. data/test/inputs/general_test.rb +48 -32
  75. data/test/inputs/grouped_collection_select_input_test.rb +76 -27
  76. data/test/inputs/hidden_input_test.rb +6 -5
  77. data/test/inputs/numeric_input_test.rb +46 -46
  78. data/test/inputs/priority_input_test.rb +21 -15
  79. data/test/inputs/readonly_test.rb +31 -31
  80. data/test/inputs/required_test.rb +30 -18
  81. data/test/inputs/string_input_test.rb +53 -52
  82. data/test/inputs/text_input_test.rb +15 -8
  83. data/test/simple_form_test.rb +8 -0
  84. data/test/support/discovery_inputs.rb +32 -2
  85. data/test/support/misc_helpers.rb +130 -29
  86. data/test/support/mock_controller.rb +6 -6
  87. data/test/support/models.rb +125 -71
  88. data/test/test_helper.rb +28 -35
  89. metadata +17 -29
  90. data/lib/simple_form/action_view_extensions/builder.rb.orig +0 -247
  91. data/lib/simple_form/core_ext/hash.rb +0 -16
  92. data/lib/simple_form/form_builder.rb.orig +0 -486
  93. data/lib/simple_form/version.rb.orig +0 -7
@@ -8,95 +8,114 @@ class FormHelperTest < ActionView::TestCase
8
8
  end
9
9
  end
10
10
 
11
- test 'SimpleForm should add default class to form' do
11
+ test 'SimpleForm adds default class to form' do
12
12
  with_concat_form_for(:user)
13
13
  assert_select 'form.simple_form'
14
14
  end
15
15
 
16
- test 'SimpleForm should use default browser validations by default' do
16
+ test 'SimpleForm allows overriding default form class' do
17
+ swap SimpleForm, default_form_class: "my_custom_class" do
18
+ with_concat_form_for :user, html: { class: "override_class" }
19
+ assert_no_select 'form.my_custom_class'
20
+ assert_select 'form.override_class'
21
+ end
22
+ end
23
+
24
+ # Remove this test when SimpleForm.form_class is removed in 4.x
25
+ test 'SimpleForm allows overriding default form class, but not form class' do
26
+ ActiveSupport::Deprecation.silence do
27
+ swap SimpleForm, form_class: "fixed_class", default_form_class: "my_custom_class" do
28
+ with_concat_form_for :user, html: { class: "override_class" }
29
+ assert_no_select 'form.my_custom_class'
30
+ assert_select 'form.fixed_class.override_class'
31
+ end
32
+ end
33
+ end
34
+
35
+ test 'SimpleForm uses default browser validations by default' do
17
36
  with_concat_form_for(:user)
18
37
  assert_no_select 'form[novalidate]'
19
38
  end
20
39
 
21
- test 'SimpleForm should not use default browser validations if specified in the configuration options' do
22
- swap SimpleForm, :browser_validations => false do
40
+ test 'SimpleForm does not use default browser validations if specified in the configuration options' do
41
+ swap SimpleForm, browser_validations: false do
23
42
  with_concat_form_for(:user)
24
43
  assert_select 'form[novalidate="novalidate"]'
25
44
  end
26
45
  end
27
46
 
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 })
47
+ test 'disabled browser validations overrides default configuration' do
48
+ with_concat_form_for(:user, html: { novalidate: true })
30
49
  assert_select 'form[novalidate="novalidate"]'
31
50
  end
32
51
 
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 })
52
+ test 'enabled browser validations overrides disabled configuration' do
53
+ swap SimpleForm, browser_validations: false do
54
+ with_concat_form_for(:user, html: { novalidate: false })
36
55
  assert_no_select 'form[novalidate]'
37
56
  end
38
57
  end
39
58
 
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 })
59
+ test 'SimpleForm adds object name as css class to form when object is not present' do
60
+ with_concat_form_for(:user, html: { novalidate: true })
42
61
  assert_select 'form.simple_form.user'
43
62
  end
44
63
 
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')
64
+ test 'SimpleForm adds :as option as css class to form when object is not present' do
65
+ with_concat_form_for(:user, as: 'superuser')
47
66
  assert_select 'form.simple_form.superuser'
48
67
  end
49
68
 
50
- test 'SimpleForm should add object class name with new prefix as css class to form if record is not persisted' do
69
+ test 'SimpleForm adds object class name with new prefix as css class to form if record is not persisted' do
51
70
  @user.new_record!
52
71
  with_concat_form_for(@user)
53
72
  assert_select 'form.simple_form.new_user'
54
73
  end
55
74
 
56
- test 'SimpleForm should add :as option with new prefix as css class to form if record is not persisted' do
75
+ test 'SimpleForm adds :as option with new prefix as css class to form if record is not persisted' do
57
76
  @user.new_record!
58
- with_concat_form_for(@user, :as => 'superuser')
77
+ with_concat_form_for(@user, as: 'superuser')
59
78
  assert_select 'form.simple_form.new_superuser'
60
79
  end
61
80
 
62
- test 'SimpleForm should add edit class prefix as css class to form if record is persisted' do
81
+ test 'SimpleForm adds edit class prefix as css class to form if record is persisted' do
63
82
  with_concat_form_for(@user)
64
83
  assert_select 'form.simple_form.edit_user'
65
84
  end
66
85
 
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')
86
+ test 'SimpleForm adds :as options with edit prefix as css class to form if record is persisted' do
87
+ with_concat_form_for(@user, as: 'superuser')
69
88
  assert_select 'form.simple_form.edit_superuser'
70
89
  end
71
90
 
72
- test 'SimpleForm should add last object name as css class to form when there is array of objects' do
91
+ test 'SimpleForm adds last object name as css class to form when there is array of objects' do
73
92
  with_concat_form_for([Company.new, @user])
74
93
  assert_select 'form.simple_form.edit_user'
75
94
  end
76
95
 
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})
96
+ test 'SimpleForm does not add object class to form if css_class is specified' do
97
+ with_concat_form_for(:user, html: { class: nil })
79
98
  assert_no_select 'form.user'
80
99
  end
81
100
 
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'})
101
+ test 'SimpleForm adds custom class to form if css_class is specified' do
102
+ with_concat_form_for(:user, html: { class: 'my_class' })
84
103
  assert_select 'form.my_class'
85
104
  end
86
105
 
87
- test 'pass options to SimpleForm' do
88
- with_concat_form_for(:user, :url => '/account', :html => { :id => 'my_form' })
106
+ test 'passes options to SimpleForm' do
107
+ with_concat_form_for(:user, url: '/account', html: { id: 'my_form' })
89
108
  assert_select 'form#my_form'
90
- assert_select 'form[action=/account]'
109
+ assert_select 'form[action="/account"]'
91
110
  end
92
111
 
93
- test 'fields for yields an instance of FormBuilder' do
112
+ test 'form_for yields an instance of FormBuilder' do
94
113
  with_concat_form_for(:user) do |f|
95
114
  assert f.instance_of?(SimpleForm::FormBuilder)
96
115
  end
97
116
  end
98
117
 
99
- test 'fields for with a hash like model yeilds an instance of FormBuilder' do
118
+ test 'fields_for with a hash like model yields an instance of FormBuilder' do
100
119
  with_concat_fields_for(:author, HashBackedAuthor.new) do |f|
101
120
  assert f.instance_of?(SimpleForm::FormBuilder)
102
121
  f.input :name
@@ -131,10 +150,19 @@ class FormHelperTest < ActionView::TestCase
131
150
  end
132
151
  end
133
152
 
153
+ test 'SimpleForm for swaps default action view field_error_proc' do
154
+ expected_error_proc = lambda {}
155
+ swap SimpleForm, field_error_proc: expected_error_proc do
156
+ simple_form_for :user do |f|
157
+ assert_equal expected_error_proc, ::ActionView::Base.field_error_proc
158
+ end
159
+ end
160
+ end
161
+
134
162
  private
135
163
 
136
164
  def swap_field_error_proc(expected_error_proc = lambda {})
137
- swap ActionView::Base, :field_error_proc => expected_error_proc do
165
+ swap ActionView::Base, field_error_proc: expected_error_proc do
138
166
  yield
139
167
 
140
168
  assert_equal expected_error_proc, ActionView::Base.field_error_proc
@@ -7,54 +7,54 @@ class IsolatedLabelTest < ActionView::TestCase
7
7
  SimpleForm::Inputs::Base.reset_i18n_cache :translate_required_html
8
8
  end
9
9
 
10
- def with_label_for(object, attribute_name, type, options={})
10
+ def with_label_for(object, attribute_name, type, options = {})
11
11
  with_concat_form_for(object) do |f|
12
12
  options[:reflection] = Association.new(Company, :company, {}) if options.delete(:setup_association)
13
13
  SimpleForm::Inputs::Base.new(f, attribute_name, nil, type, options).label
14
14
  end
15
15
  end
16
16
 
17
- test 'label should generate a default humanized description' do
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 should allow a customized description' do
23
- with_label_for @user, :name, :string, :label => 'My label!'
22
+ test 'label allows a customized description' do
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 should use human attribute name from object when available' do
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 should use human attribute name based on association name' do
33
- with_label_for @user, :company_id, :string, :setup_association => true
32
+ test 'label uses human attribute name based on association name' do
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 should use i18n based on model, action, and attribute to lookup translation' do
37
+ test 'label uses i18n based on model, action, and attribute to lookup translation' do
38
38
  @controller.action_name = "new"
39
- store_translations(:en, :simple_form => { :labels => { :user => {
40
- :new => { :description => 'Nova descrição' }
39
+ store_translations(:en, simple_form: { labels: { user: {
40
+ new: { description: 'Nova descrição' }
41
41
  } } }) do
42
42
  with_label_for @user, :description, :text
43
43
  assert_select 'label[for=user_description]', /Nova descrição/
44
44
  end
45
45
  end
46
46
 
47
- test 'label should fallback to new when action is create' do
47
+ test 'label fallbacks to new when action is create' do
48
48
  @controller.action_name = "create"
49
- store_translations(:en, :simple_form => { :labels => { :user => {
50
- :new => { :description => 'Nova descrição' }
49
+ store_translations(:en, simple_form: { labels: { user: {
50
+ new: { description: 'Nova descrição' }
51
51
  } } }) do
52
52
  with_label_for @user, :description, :text
53
53
  assert_select 'label[for=user_description]', /Nova descrição/
54
54
  end
55
55
  end
56
56
 
57
- test 'label should not explode while looking for i18n translation when action is not set' do
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,25 +63,25 @@ class IsolatedLabelTest < ActionView::TestCase
63
63
  assert_select 'label[for=user_description]'
64
64
  end
65
65
 
66
- test 'label should use i18n based on model and attribute to lookup translation' do
67
- store_translations(:en, :simple_form => { :labels => { :user => {
68
- :description => 'Descrição'
66
+ test 'label uses i18n based on model and attribute to lookup translation' do
67
+ store_translations(:en, simple_form: { labels: { user: {
68
+ description: 'Descrição'
69
69
  } } }) do
70
70
  with_label_for @user, :description, :text
71
71
  assert_select 'label[for=user_description]', /Descrição/
72
72
  end
73
73
  end
74
74
 
75
- test 'label should use i18n under defaults to lookup translation' do
76
- store_translations(:en, :simple_form => { :labels => { :defaults => { :age => 'Idade' } } }) do
75
+ test 'label uses i18n under defaults to lookup translation' do
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 should not use i18n label if translate is false' do
83
- swap SimpleForm, :translate_labels => false do
84
- store_translations(:en, :simple_form => { :labels => { :defaults => { :age => 'Idade' } } }) do
82
+ test 'label does not use i18n label if translate is false' do
83
+ swap SimpleForm, translate_labels: false do
84
+ store_translations(:en, simple_form: { labels: { defaults: { age: 'Idade' } } }) do
85
85
  with_label_for @user, :age, :integer
86
86
  assert_select 'label[for=user_age]', /Age/
87
87
  end
@@ -89,29 +89,29 @@ class IsolatedLabelTest < ActionView::TestCase
89
89
  end
90
90
 
91
91
  test 'label uses i18n with lookup for association name' do
92
- store_translations(:en, :simple_form => { :labels => {
93
- :user => { :company => 'My company!' }
92
+ store_translations(:en, simple_form: { labels: {
93
+ user: { company: 'My company!' }
94
94
  } }) do
95
- with_label_for @user, :company_id, :string, :setup_association => true
95
+ with_label_for @user, :company_id, :string, setup_association: true
96
96
  assert_select 'label[for=user_company_id]', /My company!/
97
97
  end
98
98
  end
99
99
 
100
100
  test 'label uses i18n under defaults namespace to lookup for association name' do
101
- store_translations(:en, :simple_form => { :labels => {
102
- :defaults => { :company => 'Plataformatec' }
101
+ store_translations(:en, simple_form: { labels: {
102
+ defaults: { company: 'Plataformatec' }
103
103
  } }) do
104
- with_label_for @user, :company, :string, :setup_association => true
104
+ with_label_for @user, :company, :string, setup_association: true
105
105
 
106
106
  assert_select 'form label', /Plataformatec/
107
107
  end
108
108
  end
109
109
 
110
- test 'label should do correct i18n lookup for nested models with nested translation' do
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
- store_translations(:en, :simple_form => { :labels => {
114
- :user => { :name => 'Usuario', :company => { :name => 'Nome da empresa' } }
113
+ store_translations(:en, simple_form: { labels: {
114
+ user: { name: 'Usuario', company: { name: 'Nome da empresa' } }
115
115
  } }) do
116
116
  with_concat_form_for @user do |f|
117
117
  concat f.input :name
@@ -125,12 +125,12 @@ class IsolatedLabelTest < ActionView::TestCase
125
125
  end
126
126
  end
127
127
 
128
- test 'label should do correct i18n lookup for nested models with no nested translation' do
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
- store_translations(:en, :simple_form => { :labels => {
132
- :user => { :name => 'Usuario' },
133
- :company => { :name => 'Nome da empresa' }
131
+ store_translations(:en, simple_form: { labels: {
132
+ user: { name: 'Usuario' },
133
+ company: { name: 'Nome da empresa' }
134
134
  } }) do
135
135
  with_concat_form_for @user do |f|
136
136
  concat f.input :name
@@ -144,16 +144,16 @@ class IsolatedLabelTest < ActionView::TestCase
144
144
  end
145
145
  end
146
146
 
147
- test 'label should do correct i18n lookup for nested has_many models with no nested translation' do
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
- store_translations(:en, :simple_form => { :labels => {
151
- :user => { :name => 'Usuario' },
152
- :tags => { :name => 'Nome da empresa' }
150
+ store_translations(:en, simple_form: { labels: {
151
+ user: { name: 'Usuario' },
152
+ tags: { name: 'Nome da empresa' }
153
153
  } }) do
154
154
  with_concat_form_for @user do |f|
155
155
  concat f.input :name
156
- concat(f.simple_fields_for(:tags, :child_index => "new_index") do |tags_form|
156
+ concat(f.simple_fields_for(:tags, child_index: "new_index") do |tags_form|
157
157
  concat(tags_form.input :name)
158
158
  end)
159
159
  end
@@ -163,7 +163,7 @@ class IsolatedLabelTest < ActionView::TestCase
163
163
  end
164
164
  end
165
165
 
166
- test 'label should have css class from type' do
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,8 +176,8 @@ class IsolatedLabelTest < ActionView::TestCase
176
176
  assert_select 'label.datetime'
177
177
  end
178
178
 
179
- test 'label should not have css class from type when generate_additional_classes_for does not include :label' do
180
- swap SimpleForm, :generate_additional_classes_for => [:wrapper, :input] do
179
+ test 'label does not have css class from type when generate_additional_classes_for does not include :label' do
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'
183
183
  with_label_for @user, :description, :text
@@ -191,22 +191,22 @@ class IsolatedLabelTest < ActionView::TestCase
191
191
  end
192
192
  end
193
193
 
194
- test 'label should not generate empty css class' do
195
- swap SimpleForm, :generate_additional_classes_for => [:wrapper, :input] do
194
+ test 'label does not generate empty css class' do
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 should obtain required from ActiveModel::Validations when it is included' do
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 should not obtain required from ActiveModel::Validations when generate_additional_classes_for does not include :label' do
209
- swap SimpleForm, :generate_additional_classes_for => [:wrapper, :input] do
208
+ test 'label does not obtain required from ActiveModel::Validations when generate_additional_classes_for does not include :label' do
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'
212
212
  with_label_for @validating_user, :status, :string
@@ -214,110 +214,110 @@ class IsolatedLabelTest < ActionView::TestCase
214
214
  end
215
215
  end
216
216
 
217
- test 'label should allow overriding required when ActiveModel::Validations is included' do
218
- with_label_for @validating_user, :name, :string, :required => false
217
+ test 'label allows overriding required when ActiveModel::Validations is included' do
218
+ with_label_for @validating_user, :name, :string, required: false
219
219
  assert_select 'label.optional'
220
- with_label_for @validating_user, :status, :string, :required => true
220
+ with_label_for @validating_user, :status, :string, required: true
221
221
  assert_select 'label.required'
222
222
  end
223
223
 
224
- test 'label should be required by default when ActiveModel::Validations is not included' do
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 should be able to disable required when ActiveModel::Validations is not included' do
230
- with_label_for @user, :name, :string, :required => false
229
+ test 'label is able to disable required when ActiveModel::Validations is not included' do
230
+ with_label_for @user, :name, :string, required: false
231
231
  assert_no_select 'label.required'
232
232
  end
233
233
 
234
- test 'label should add required text when required' do
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 should not have required text in no required inputs' do
240
- with_label_for @user, :name, :string, :required => false
239
+ test 'label does not have required text in no required inputs' do
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 should use i18n to find required text' do
245
- store_translations(:en, :simple_form => { :required => { :text => 'campo requerido' } }) do
244
+ test 'label uses i18n to find required text' do
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 should use i18n to find required mark' do
252
- store_translations(:en, :simple_form => { :required => { :mark => '*-*' } }) do
251
+ test 'label uses i18n to find required mark' do
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 should use i18n to find required string tag' do
259
- store_translations(:en, :simple_form => { :required => { :html => '<span class="required" title="requerido">*</span>' } }) do
258
+ test 'label uses i18n to find required string tag' do
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'
262
262
  assert_select 'form label span.required[title=requerido]', '*'
263
263
  end
264
264
  end
265
265
 
266
- test 'label should allow overwriting input id' do
267
- with_label_for @user, :name, :string, :input_html => { :id => 'my_new_id' }
266
+ test 'label allows overwriting input id' do
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 should allow overwriting of for attribute' do
272
- with_label_for @user, :name, :string, :label_html => { :for => 'my_new_id' }
271
+ test 'label allows overwriting of for attribute' do
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 should allow overwriting of for attribute with input_html not containing id' do
277
- with_label_for @user, :name, :string, :label_html => { :for => 'my_new_id' }, :input_html => { :class => 'foo' }
276
+ test 'label allows overwriting of for attribute with input_html not containing id' do
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 should use default input id when it was not overridden' do
282
- with_label_for @user, :name, :string, :input_html => { :class => 'my_new_id' }
281
+ test 'label uses default input id when it was not overridden' do
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 should be generated properly when object is not present' do
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 should include for attribute for select collection' do
292
- with_label_for @user, :sex, :select, :collection => [:male, :female]
291
+ test 'label includes for attribute for select collection' do
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 should use i18n properly when object is not present' do
297
- store_translations(:en, :simple_form => { :labels => {
298
- :project => { :name => 'Nome' }
296
+ test 'label uses i18n properly when object is not present' do
297
+ store_translations(:en, simple_form: { labels: {
298
+ project: { name: 'Nome' }
299
299
  } }) do
300
300
  with_label_for :project, :name, :string
301
301
  assert_select 'label[for=project_name]', /Nome/
302
302
  end
303
303
  end
304
304
 
305
- test 'label should add required by default when object is not present' do
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
- with_label_for :project, :description, :string, :required => false
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 should add chosen label class' do
313
- swap SimpleForm, :label_class => :my_custom_class do
312
+ test 'label adds chosen label class' do
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'
316
316
  end
317
317
  end
318
318
 
319
319
  test 'label strips extra classes even when label_class is nil' do
320
- swap SimpleForm, :label_class => nil do
320
+ swap SimpleForm, label_class: nil do
321
321
  with_label_for @user, :name, :string
322
322
  assert_select "label[class='string required']"
323
323
  assert_no_select "label[class='string required ']"