simple_form 3.4.0 → 4.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.

Potentially problematic release.


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

Files changed (103) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +62 -0
  3. data/README.md +208 -36
  4. data/lib/generators/simple_form/install_generator.rb +1 -0
  5. data/lib/generators/simple_form/templates/README +3 -3
  6. data/lib/generators/simple_form/templates/_form.html.erb +2 -0
  7. data/lib/generators/simple_form/templates/_form.html.haml +2 -0
  8. data/lib/generators/simple_form/templates/_form.html.slim +1 -0
  9. data/lib/generators/simple_form/templates/config/initializers/simple_form.rb +15 -5
  10. data/lib/generators/simple_form/templates/config/initializers/simple_form_bootstrap.rb +358 -73
  11. data/lib/generators/simple_form/templates/config/initializers/simple_form_foundation.rb +20 -8
  12. data/lib/simple_form/action_view_extensions/builder.rb +1 -0
  13. data/lib/simple_form/action_view_extensions/form_helper.rb +1 -0
  14. data/lib/simple_form/components/errors.rb +15 -2
  15. data/lib/simple_form/components/hints.rb +1 -0
  16. data/lib/simple_form/components/html5.rb +1 -0
  17. data/lib/simple_form/components/label_input.rb +2 -1
  18. data/lib/simple_form/components/labels.rb +11 -4
  19. data/lib/simple_form/components/maxlength.rb +4 -13
  20. data/lib/simple_form/components/min_max.rb +1 -0
  21. data/lib/simple_form/components/minlength.rb +5 -14
  22. data/lib/simple_form/components/pattern.rb +1 -0
  23. data/lib/simple_form/components/placeholders.rb +2 -1
  24. data/lib/simple_form/components/readonly.rb +1 -0
  25. data/lib/simple_form/components.rb +1 -0
  26. data/lib/simple_form/error_notification.rb +1 -0
  27. data/lib/simple_form/form_builder.rb +81 -26
  28. data/lib/simple_form/helpers/autofocus.rb +1 -0
  29. data/lib/simple_form/helpers/disabled.rb +1 -0
  30. data/lib/simple_form/helpers/readonly.rb +1 -0
  31. data/lib/simple_form/helpers/required.rb +1 -0
  32. data/lib/simple_form/helpers/validators.rb +2 -1
  33. data/lib/simple_form/helpers.rb +1 -0
  34. data/lib/simple_form/i18n_cache.rb +1 -0
  35. data/lib/simple_form/inputs/base.rb +24 -2
  36. data/lib/simple_form/inputs/block_input.rb +1 -0
  37. data/lib/simple_form/inputs/boolean_input.rb +4 -2
  38. data/lib/simple_form/inputs/collection_check_boxes_input.rb +2 -1
  39. data/lib/simple_form/inputs/collection_input.rb +3 -2
  40. data/lib/simple_form/inputs/collection_radio_buttons_input.rb +2 -1
  41. data/lib/simple_form/inputs/collection_select_input.rb +1 -0
  42. data/lib/simple_form/inputs/color_input.rb +14 -0
  43. data/lib/simple_form/inputs/date_time_input.rb +1 -0
  44. data/lib/simple_form/inputs/file_input.rb +1 -0
  45. data/lib/simple_form/inputs/grouped_collection_select_input.rb +1 -0
  46. data/lib/simple_form/inputs/hidden_input.rb +1 -0
  47. data/lib/simple_form/inputs/numeric_input.rb +1 -0
  48. data/lib/simple_form/inputs/password_input.rb +1 -0
  49. data/lib/simple_form/inputs/priority_input.rb +1 -0
  50. data/lib/simple_form/inputs/range_input.rb +1 -0
  51. data/lib/simple_form/inputs/string_input.rb +2 -1
  52. data/lib/simple_form/inputs/text_input.rb +1 -0
  53. data/lib/simple_form/inputs.rb +2 -0
  54. data/lib/simple_form/map_type.rb +1 -0
  55. data/lib/simple_form/railtie.rb +1 -0
  56. data/lib/simple_form/tags.rb +1 -0
  57. data/lib/simple_form/version.rb +2 -1
  58. data/lib/simple_form/wrappers/builder.rb +1 -0
  59. data/lib/simple_form/wrappers/leaf.rb +2 -1
  60. data/lib/simple_form/wrappers/many.rb +1 -0
  61. data/lib/simple_form/wrappers/root.rb +2 -0
  62. data/lib/simple_form/wrappers/single.rb +2 -1
  63. data/lib/simple_form/wrappers.rb +1 -0
  64. data/lib/simple_form.rb +58 -7
  65. data/test/action_view_extensions/builder_test.rb +6 -5
  66. data/test/action_view_extensions/form_helper_test.rb +3 -2
  67. data/test/components/custom_components_test.rb +62 -0
  68. data/test/components/label_test.rb +33 -4
  69. data/test/form_builder/association_test.rb +27 -2
  70. data/test/form_builder/button_test.rb +1 -0
  71. data/test/form_builder/error_notification_test.rb +1 -0
  72. data/test/form_builder/error_test.rb +12 -0
  73. data/test/form_builder/general_test.rb +67 -3
  74. data/test/form_builder/hint_test.rb +6 -0
  75. data/test/form_builder/input_field_test.rb +30 -10
  76. data/test/form_builder/label_test.rb +9 -3
  77. data/test/form_builder/wrapper_test.rb +24 -4
  78. data/test/generators/simple_form_generator_test.rb +4 -3
  79. data/test/inputs/boolean_input_test.rb +17 -0
  80. data/test/inputs/collection_check_boxes_input_test.rb +30 -14
  81. data/test/inputs/collection_radio_buttons_input_test.rb +40 -24
  82. data/test/inputs/collection_select_input_test.rb +40 -39
  83. data/test/inputs/color_input_test.rb +10 -0
  84. data/test/inputs/datetime_input_test.rb +7 -16
  85. data/test/inputs/disabled_test.rb +14 -0
  86. data/test/inputs/discovery_test.rb +22 -0
  87. data/test/inputs/file_input_test.rb +1 -0
  88. data/test/inputs/general_test.rb +3 -2
  89. data/test/inputs/grouped_collection_select_input_test.rb +11 -10
  90. data/test/inputs/hidden_input_test.rb +1 -0
  91. data/test/inputs/numeric_input_test.rb +2 -1
  92. data/test/inputs/priority_input_test.rb +3 -10
  93. data/test/inputs/readonly_test.rb +1 -0
  94. data/test/inputs/required_test.rb +1 -0
  95. data/test/inputs/string_input_test.rb +10 -16
  96. data/test/inputs/text_input_test.rb +1 -0
  97. data/test/simple_form_test.rb +1 -0
  98. data/test/support/discovery_inputs.rb +8 -0
  99. data/test/support/misc_helpers.rb +22 -1
  100. data/test/support/mock_controller.rb +7 -1
  101. data/test/support/models.rb +52 -16
  102. data/test/test_helper.rb +2 -0
  103. metadata +40 -47
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  class StringInput < SimpleForm::Inputs::StringInput
2
3
  def input(wrapper_options = nil)
3
4
  "<section>#{super}</section>".html_safe
@@ -36,6 +37,13 @@ class CollectionSelectInput < SimpleForm::Inputs::CollectionSelectInput
36
37
  end
37
38
  end
38
39
 
40
+ class FileInput < SimpleForm::Inputs::FileInput
41
+ def input_html_classes
42
+ super.delete_if { |html_class| html_class == :file }
43
+ super.push('file-upload')
44
+ end
45
+ end
46
+
39
47
  module CustomInputs
40
48
  class CustomizedInput < SimpleForm::Inputs::StringInput
41
49
  def input_html_classes
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module MiscHelpers
2
3
  def store_translations(locale, translations, &block)
3
4
  I18n.backend.store_translations locale, translations
@@ -181,7 +182,7 @@ module MiscHelpers
181
182
  end
182
183
 
183
184
  def custom_wrapper_with_label_text
184
- SimpleForm.build :label_text => proc { |label, required| "**#{label}**" } do |b|
185
+ SimpleForm.build label_text: proc { |label, required| "**#{label}**" } do |b|
185
186
  b.use :label_input
186
187
  end
187
188
  end
@@ -205,6 +206,20 @@ module MiscHelpers
205
206
  end
206
207
  end
207
208
 
209
+ def custom_wrapper_with_input_error_class
210
+ SimpleForm.build tag: :div, class: "custom_wrapper", error_class: :field_with_errors do |b|
211
+ b.use :label
212
+ b.use :input, class: 'inline-class', error_class: 'is-invalid'
213
+ end
214
+ end
215
+
216
+ def custom_wrapper_with_input_valid_class
217
+ SimpleForm.build tag: :div, class: "custom_wrapper", valid_class: :field_without_errors do |b|
218
+ b.use :label
219
+ b.use :input, class: 'inline-class', valid_class: 'is-valid'
220
+ end
221
+ end
222
+
208
223
  def custom_form_for(object, *args, &block)
209
224
  simple_form_for(object, *args, { builder: CustomFormBuilder }, &block)
210
225
  end
@@ -240,6 +255,12 @@ module MiscHelpers
240
255
  f.input(attribute_name, options.merge(as: type))
241
256
  end
242
257
  end
258
+
259
+ def with_input_field_for(object, *args)
260
+ with_concat_form_for(object) do |f|
261
+ f.input_field(*args)
262
+ end
263
+ end
243
264
  end
244
265
 
245
266
  class CustomFormBuilder < SimpleForm::FormBuilder
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  class MockController
2
3
  attr_writer :action_name
3
4
 
@@ -9,7 +10,7 @@ class MockController
9
10
  defined?(@action_name) ? @action_name : "edit"
10
11
  end
11
12
 
12
- def url_for(*args)
13
+ def url_for(*)
13
14
  "http://example.com"
14
15
  end
15
16
 
@@ -17,8 +18,13 @@ class MockController
17
18
  {}
18
19
  end
19
20
 
21
+ def polymorphic_mappings(*); {}; end
22
+
20
23
  def hash_for_user_path(*); end
24
+
21
25
  def hash_for_validating_user_path(*); end
26
+
22
27
  def hash_for_other_validating_user_path(*); end
28
+
23
29
  def hash_for_users_path(*); end
24
30
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  Association = Struct.new(:klass, :name, :macro, :scope, :options)
2
3
 
3
4
  Column = Struct.new(:name, :type, :limit) do
@@ -7,7 +8,7 @@ Relation = Struct.new(:records) do
7
8
  delegate :each, to: :records
8
9
 
9
10
  def where(conditions = nil)
10
- self.class.new conditions ? records.first : records
11
+ self.class.new conditions ? [records.first] : records
11
12
  end
12
13
 
13
14
  def order(conditions = nil)
@@ -18,6 +19,12 @@ Relation = Struct.new(:records) do
18
19
  alias_method :to_ary, :records
19
20
  end
20
21
 
22
+ Decorator = Struct.new(:object) do
23
+ def to_model
24
+ object
25
+ end
26
+ end
27
+
21
28
  Picture = Struct.new(:id, :name) do
22
29
  extend ActiveModel::Naming
23
30
  include ActiveModel::Conversion
@@ -56,6 +63,19 @@ Company = Struct.new(:id, :name) do
56
63
  end
57
64
  end
58
65
 
66
+ Friend = Struct.new(:id, :name) do
67
+ extend ActiveModel::Naming
68
+ include ActiveModel::Conversion
69
+
70
+ def self.all
71
+ (1..3).map { |i| new(i, "#{name} #{i}") }
72
+ end
73
+
74
+ def persisted?
75
+ true
76
+ end
77
+ end
78
+
59
79
  class Tag < Company; end
60
80
 
61
81
  TagGroup = Struct.new(:id, :name, :tags)
@@ -70,7 +90,8 @@ class User
70
90
  :avatar, :home_picture, :email, :status, :residence_country, :phone_number,
71
91
  :post_count, :lock_version, :amount, :attempts, :action, :credit_card, :gender,
72
92
  :extra_special_company_id, :pictures, :picture_ids, :special_pictures,
73
- :special_picture_ids, :uuid
93
+ :special_picture_ids, :uuid, :friends, :friend_ids, :special_tags, :special_tag_ids,
94
+ :citext, :hstore, :json, :jsonb, :hourly, :favorite_color
74
95
 
75
96
  def self.build(extra_attributes = {})
76
97
  attributes = {
@@ -121,13 +142,22 @@ class User
121
142
  when :attempts then :integer
122
143
  when :action then :string
123
144
  when :credit_card then :string
124
- when :uuid then :uuid
145
+ else attribute.to_sym
125
146
  end
126
147
  Column.new(attribute, column_type, limit)
127
148
  end
128
149
 
129
150
  begin
130
151
  require 'active_model/type'
152
+ begin
153
+ ActiveModel::Type.lookup(:text)
154
+ rescue ArgumentError # :text is no longer an ActiveModel::Type
155
+ # But we don't want our tests to depend on ActiveRecord
156
+ class ::ActiveModel::Type::Text < ActiveModel::Type::String
157
+ def type; :text; end
158
+ end
159
+ ActiveModel::Type.register(:text, ActiveModel::Type::Text)
160
+ end
131
161
  def type_for_attribute(attribute)
132
162
  column_type, limit = case attribute
133
163
  when 'name', 'status', 'password' then [:string, 100]
@@ -146,6 +176,10 @@ class User
146
176
  when 'action' then :string
147
177
  when 'credit_card' then :string
148
178
  when 'uuid' then :string
179
+ when 'citext' then :string
180
+ when 'hstore' then [:text, 200]
181
+ when 'json' then [:text, 200]
182
+ when 'jsonb' then [:text, 200]
149
183
  end
150
184
 
151
185
  ActiveModel::Type.lookup(column_type, limit: limit)
@@ -158,7 +192,8 @@ class User
158
192
  when :name, :status, :password, :description, :age,
159
193
  :credit_limit, :active, :born_at, :delivery_time,
160
194
  :created_at, :updated_at, :lock_version, :home_picture,
161
- :amount, :attempts, :action, :credit_card, :uuid then true
195
+ :amount, :attempts, :action, :credit_card, :uuid,
196
+ :citext, :hstore, :json, :jsonb then true
162
197
  else false
163
198
  end
164
199
  end
@@ -182,16 +217,20 @@ class User
182
217
  Association.new(Company, association, :belongs_to, nil, {})
183
218
  when :tags
184
219
  Association.new(Tag, association, :has_many, nil, {})
220
+ when :special_tags
221
+ Association.new(Tag, association, :has_many, ->(user) { where(id: user.id) }, {})
185
222
  when :first_company
186
223
  Association.new(Company, association, :has_one, nil, {})
187
224
  when :special_company
188
- Association.new(Company, association, :belongs_to, nil, { conditions: { id: 1 } })
225
+ Association.new(Company, association, :belongs_to, nil, conditions: { id: 1 })
189
226
  when :extra_special_company
190
- Association.new(Company, association, :belongs_to, nil, { conditions: proc { { id: self.id } } })
227
+ Association.new(Company, association, :belongs_to, nil, conditions: proc { { id: self.id } })
191
228
  when :pictures
192
229
  Association.new(Picture, association, :has_many, nil, {})
193
230
  when :special_pictures
194
231
  Association.new(Picture, association, :has_many, proc { where(name: self.name) }, {})
232
+ when :friends
233
+ Association.new(Friend, association, :has_many, nil, {})
195
234
  end
196
235
  end
197
236
 
@@ -217,8 +256,8 @@ class ValidatingUser < User
217
256
  include ActiveModel::Validations
218
257
  validates :name, presence: true
219
258
  validates :company, presence: true
220
- validates :age, presence: true, if: Proc.new { |user| user.name }
221
- validates :amount, presence: true, unless: Proc.new { |user| user.age }
259
+ validates :age, presence: true, if: proc { |user| user.name }
260
+ validates :amount, presence: true, unless: proc { |user| user.age }
222
261
 
223
262
  validates :action, presence: true, on: :create
224
263
  validates :credit_limit, presence: true, on: :save
@@ -238,9 +277,6 @@ class ValidatingUser < User
238
277
  only_integer: true
239
278
  validates_length_of :name, maximum: 25, minimum: 5
240
279
  validates_length_of :description, in: 15..50
241
- if ActionPack::VERSION::STRING < '5'
242
- validates_length_of :action, maximum: 10, tokenizer: lambda { |str| str.scan(/\w+/) }
243
- end
244
280
  validates_length_of :home_picture, is: 12
245
281
 
246
282
  def min_amount
@@ -267,16 +303,16 @@ class OtherValidatingUser < User
267
303
  less_than: 100,
268
304
  only_integer: true
269
305
  validates_numericality_of :amount,
270
- greater_than: Proc.new { |user| user.age },
271
- less_than: Proc.new { |user| user.age + 100 },
306
+ greater_than: proc { |user| user.age },
307
+ less_than: proc { |user| user.age + 100 },
272
308
  only_integer: true
273
309
  validates_numericality_of :attempts,
274
- greater_than_or_equal_to: Proc.new { |user| user.age },
275
- less_than_or_equal_to: Proc.new { |user| user.age + 100 },
310
+ greater_than_or_equal_to: proc { |user| user.age },
311
+ less_than_or_equal_to: proc { |user| user.age + 100 },
276
312
  only_integer: true
277
313
 
278
314
  validates_format_of :country, with: /\w+/
279
- validates_format_of :name, with: Proc.new { /\w+/ }
315
+ validates_format_of :name, with: proc { /\w+/ }
280
316
  validates_format_of :description, without: /\d+/
281
317
  end
282
318
 
data/test/test_helper.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'bundler/setup'
2
3
 
3
4
  require 'minitest/autorun'
@@ -53,6 +54,7 @@ class ActionView::TestCase
53
54
 
54
55
  def setup_users(extra_attributes = {})
55
56
  @user = User.build(extra_attributes)
57
+ @decorated_user = Decorator.new(@user)
56
58
 
57
59
  @validating_user = ValidatingUser.build({
58
60
  name: 'Tester McTesterson',
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Valim
@@ -10,48 +10,36 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-01-06 00:00:00.000000000 Z
13
+ date: 2018-11-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - ">"
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: '4'
22
- - - "<"
23
- - !ruby/object:Gem::Version
24
- version: '5.1'
21
+ version: '5.0'
25
22
  type: :runtime
26
23
  prerelease: false
27
24
  version_requirements: !ruby/object:Gem::Requirement
28
25
  requirements:
29
- - - ">"
30
- - !ruby/object:Gem::Version
31
- version: '4'
32
- - - "<"
26
+ - - ">="
33
27
  - !ruby/object:Gem::Version
34
- version: '5.1'
28
+ version: '5.0'
35
29
  - !ruby/object:Gem::Dependency
36
30
  name: actionpack
37
31
  requirement: !ruby/object:Gem::Requirement
38
32
  requirements:
39
- - - ">"
33
+ - - ">="
40
34
  - !ruby/object:Gem::Version
41
- version: '4'
42
- - - "<"
43
- - !ruby/object:Gem::Version
44
- version: '5.1'
35
+ version: '5.0'
45
36
  type: :runtime
46
37
  prerelease: false
47
38
  version_requirements: !ruby/object:Gem::Requirement
48
39
  requirements:
49
- - - ">"
50
- - !ruby/object:Gem::Version
51
- version: '4'
52
- - - "<"
40
+ - - ">="
53
41
  - !ruby/object:Gem::Version
54
- version: '5.1'
42
+ version: '5.0'
55
43
  description: Forms made easy!
56
44
  email: opensource@plataformatec.com.br
57
45
  executables: []
@@ -103,6 +91,7 @@ files:
103
91
  - lib/simple_form/inputs/collection_input.rb
104
92
  - lib/simple_form/inputs/collection_radio_buttons_input.rb
105
93
  - lib/simple_form/inputs/collection_select_input.rb
94
+ - lib/simple_form/inputs/color_input.rb
106
95
  - lib/simple_form/inputs/date_time_input.rb
107
96
  - lib/simple_form/inputs/file_input.rb
108
97
  - lib/simple_form/inputs/grouped_collection_select_input.rb
@@ -125,6 +114,7 @@ files:
125
114
  - lib/simple_form/wrappers/single.rb
126
115
  - test/action_view_extensions/builder_test.rb
127
116
  - test/action_view_extensions/form_helper_test.rb
117
+ - test/components/custom_components_test.rb
128
118
  - test/components/label_test.rb
129
119
  - test/form_builder/association_test.rb
130
120
  - test/form_builder/button_test.rb
@@ -140,6 +130,7 @@ files:
140
130
  - test/inputs/collection_check_boxes_input_test.rb
141
131
  - test/inputs/collection_radio_buttons_input_test.rb
142
132
  - test/inputs/collection_select_input_test.rb
133
+ - test/inputs/color_input_test.rb
143
134
  - test/inputs/datetime_input_test.rb
144
135
  - test/inputs/disabled_test.rb
145
136
  - test/inputs/discovery_test.rb
@@ -179,44 +170,46 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
170
  version: '0'
180
171
  requirements: []
181
172
  rubyforge_project: simple_form
182
- rubygems_version: 2.6.8
173
+ rubygems_version: 2.7.6
183
174
  signing_key:
184
175
  specification_version: 4
185
176
  summary: Forms made easy!
186
177
  test_files:
187
- - test/action_view_extensions/builder_test.rb
188
- - test/action_view_extensions/form_helper_test.rb
189
178
  - test/components/label_test.rb
190
- - test/form_builder/association_test.rb
191
- - test/form_builder/button_test.rb
192
- - test/form_builder/error_notification_test.rb
179
+ - test/components/custom_components_test.rb
180
+ - test/support/discovery_inputs.rb
181
+ - test/support/misc_helpers.rb
182
+ - test/support/mock_controller.rb
183
+ - test/support/models.rb
184
+ - test/test_helper.rb
193
185
  - test/form_builder/error_test.rb
194
- - test/form_builder/general_test.rb
195
186
  - test/form_builder/hint_test.rb
187
+ - test/form_builder/error_notification_test.rb
188
+ - test/form_builder/general_test.rb
189
+ - test/form_builder/button_test.rb
196
190
  - test/form_builder/input_field_test.rb
197
191
  - test/form_builder/label_test.rb
198
192
  - test/form_builder/wrapper_test.rb
193
+ - test/form_builder/association_test.rb
199
194
  - test/generators/simple_form_generator_test.rb
200
- - test/inputs/boolean_input_test.rb
195
+ - test/action_view_extensions/builder_test.rb
196
+ - test/action_view_extensions/form_helper_test.rb
197
+ - test/simple_form_test.rb
198
+ - test/inputs/string_input_test.rb
199
+ - test/inputs/numeric_input_test.rb
200
+ - test/inputs/readonly_test.rb
201
+ - test/inputs/grouped_collection_select_input_test.rb
202
+ - test/inputs/text_input_test.rb
201
203
  - test/inputs/collection_check_boxes_input_test.rb
202
- - test/inputs/collection_radio_buttons_input_test.rb
203
- - test/inputs/collection_select_input_test.rb
204
- - test/inputs/datetime_input_test.rb
204
+ - test/inputs/boolean_input_test.rb
205
205
  - test/inputs/disabled_test.rb
206
206
  - test/inputs/discovery_test.rb
207
- - test/inputs/file_input_test.rb
207
+ - test/inputs/collection_select_input_test.rb
208
208
  - test/inputs/general_test.rb
209
- - test/inputs/grouped_collection_select_input_test.rb
210
- - test/inputs/hidden_input_test.rb
211
- - test/inputs/numeric_input_test.rb
212
- - test/inputs/priority_input_test.rb
213
- - test/inputs/readonly_test.rb
209
+ - test/inputs/color_input_test.rb
214
210
  - test/inputs/required_test.rb
215
- - test/inputs/string_input_test.rb
216
- - test/inputs/text_input_test.rb
217
- - test/simple_form_test.rb
218
- - test/support/discovery_inputs.rb
219
- - test/support/misc_helpers.rb
220
- - test/support/mock_controller.rb
221
- - test/support/models.rb
222
- - test/test_helper.rb
211
+ - test/inputs/collection_radio_buttons_input_test.rb
212
+ - test/inputs/priority_input_test.rb
213
+ - test/inputs/hidden_input_test.rb
214
+ - test/inputs/file_input_test.rb
215
+ - test/inputs/datetime_input_test.rb