simple_form 4.0.1 → 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.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 36ca6e532e2f506a2946b385aa3137f28d1fb6bb
4
- data.tar.gz: b24a8f5bd77dcab385219132ccb6216376299ba2
2
+ SHA256:
3
+ metadata.gz: 1461390ccbd2b434d67a43a84ada68f255d08bc48a9e23d7734075c8f105b400
4
+ data.tar.gz: c81c4b918e6f9e467081e8b534273ef8807ef6e508da40077fe4c91b5b85a66f
5
5
  SHA512:
6
- metadata.gz: fe6cabc6ab3f055f83bcd6ab214f5cc8f9593aa0b1231fdf87deb8ffc612c3b6fab1d76d493a2cd9e9c1fad28b1d259a350160aaf0b1b58e712bb49f60b67646
7
- data.tar.gz: '008c90e740e05c719fdd4dfe1357c4ec6036c356f3746f813993696c8d849ef8f0122bfdbaa153cc93a12d9de9496efe32be7e72073d614969634448f139b30d'
6
+ metadata.gz: 71d69573ae8125232a436ea4c23115584497647de1a3b5fa996c9c95f78599b3a3e9ff07ce0812cd5370a1e2c0351dc8fdc43bbea30b7f35d6c68213c68a5f84
7
+ data.tar.gz: dacdc01de808196a155ad1219f913bafff072578ad0bb3c0a9602a9f0377d4359f03e54880dd77a3e27307a35754568064d9dd5dcec95abf8a93f5f0164149a8
@@ -1,5 +1,17 @@
1
1
  ## Unreleased
2
2
 
3
+ ### Enhancements
4
+ * Guess input type more carefully. [@sringling](https://github.com/sringling)
5
+ * Allow custom error on forms without model. [@victorperez](https://github.com/victorperez)
6
+ * Do not support Ruby < 2.3 anymore. [@gssbzn](https://github.com/gssbzn)
7
+ * Add color inout type. [@gssbzn](https://github.com/gssbzn)
8
+
9
+ ### Bug fix
10
+ * Improve disabled option to input_field. [@betelgeuse](https://github.com/betelgeuse)
11
+ * Memoize `input_html_classes` in `SimpleForm::Inputs::Base`. [@RigoTheDev](https://github.com/RigoTheDev)
12
+ * Fix column type citext HTML5 input type bug. [@brucew](https://github.com/brucew)
13
+ * Use form attribute in the nested boolean hidden field when it is given. [@feliperenan](https://github.com/feliperenan)
14
+
3
15
  ## 4.0.1
4
16
 
5
17
  ### Bug fix
@@ -87,9 +87,6 @@ SimpleForm.setup do |config|
87
87
  # CSS class to add for error notification helper.
88
88
  config.error_notification_class = 'error_notification'
89
89
 
90
- # ID to add for error notification helper.
91
- # config.error_notification_id = nil
92
-
93
90
  # Series of attempts to detect a default label method for collection.
94
91
  # config.collection_label_methods = [ :to_label, :name, :title, :to_s ]
95
92
 
@@ -11,7 +11,7 @@ module SimpleForm
11
11
  end
12
12
 
13
13
  def has_errors?
14
- object && object.respond_to?(:errors) && errors.present?
14
+ object_with_errors? || object.nil? && has_custom_error?
15
15
  end
16
16
 
17
17
  def has_value?
@@ -34,6 +34,10 @@ module SimpleForm
34
34
  has_custom_error? ? options[:error] : full_errors.send(error_method)
35
35
  end
36
36
 
37
+ def object_with_errors?
38
+ object && object.respond_to?(:errors) && errors.present?
39
+ end
40
+
37
41
  def error_method
38
42
  options[:error_method] || SimpleForm.error_method
39
43
  end
@@ -165,7 +165,7 @@ module SimpleForm
165
165
  components = (wrapper.components.map(&:namespace) & ATTRIBUTE_COMPONENTS)
166
166
 
167
167
  options = options.dup
168
- options[:input_html] = options.except(:as, :boolean_style, :collection, :label_method, :value_method, :prompt, *components)
168
+ options[:input_html] = options.except(:as, :boolean_style, :collection, :disabled, :label_method, :value_method, :prompt, *components)
169
169
  options = @defaults.deep_dup.deep_merge(options) if @defaults
170
170
 
171
171
  input = find_input(attribute_name, options)
@@ -552,12 +552,12 @@ module SimpleForm
552
552
  :datetime
553
553
  when :string, :citext, nil
554
554
  case attribute_name.to_s
555
- when /password/ then :password
556
- when /time_zone/ then :time_zone
557
- when /country/ then :country
558
- when /email/ then :email
559
- when /phone/ then :tel
560
- when /url/ then :url
555
+ when /(?:\b|\W|_)password(?:\b|\W|_)/ then :password
556
+ when /(?:\b|\W|_)time_zone(?:\b|\W|_)/ then :time_zone
557
+ when /(?:\b|\W|_)country(?:\b|\W|_)/ then :country
558
+ when /(?:\b|\W|_)email(?:\b|\W|_)/ then :email
559
+ when /(?:\b|\W|_)phone(?:\b|\W|_)/ then :tel
560
+ when /(?:\b|\W|_)url(?:\b|\W|_)/ then :url
561
561
  else
562
562
  file_method?(attribute_name) ? :file : (input_type || :string)
563
563
  end
@@ -10,6 +10,7 @@ module SimpleForm
10
10
  autoload :CollectionInput
11
11
  autoload :CollectionRadioButtonsInput
12
12
  autoload :CollectionSelectInput
13
+ autoload :ColorInput
13
14
  autoload :DateTimeInput
14
15
  autoload :FileInput
15
16
  autoload :GroupedCollectionSelectInput
@@ -72,7 +72,10 @@ module SimpleForm
72
72
  @html_classes = SimpleForm.additional_classes_for(:input) { additional_classes }
73
73
 
74
74
  @input_html_classes = @html_classes.dup
75
- if SimpleForm.input_class && !input_html_classes.empty?
75
+
76
+ input_html_classes = self.input_html_classes
77
+
78
+ if SimpleForm.input_class && input_html_classes.any?
76
79
  input_html_classes << SimpleForm.input_class
77
80
  end
78
81
 
@@ -63,6 +63,7 @@ module SimpleForm
63
63
  return "" if !include_hidden? || !unchecked_value
64
64
  options = { value: unchecked_value, id: nil, disabled: input_html_options[:disabled] }
65
65
  options[:name] = input_html_options[:name] if input_html_options.key?(:name)
66
+ options[:form] = input_html_options[:form] if input_html_options.key?(:form)
66
67
 
67
68
  @builder.hidden_field(attribute_name, options)
68
69
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+ module SimpleForm
3
+ module Inputs
4
+ class ColorInput < Base
5
+ def input(wrapper_options = nil)
6
+ input_html_options[:type] ||= "color" if html5?
7
+
8
+ merged_input_options = merge_wrapper_options(input_html_options, wrapper_options)
9
+
10
+ @builder.text_field(attribute_name, merged_input_options)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -18,7 +18,7 @@ module SimpleForm
18
18
  private
19
19
 
20
20
  def string?
21
- input_type == :string
21
+ input_type == :string || input_type == :citext
22
22
  end
23
23
  end
24
24
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module SimpleForm
3
- VERSION = "4.0.1".freeze
3
+ VERSION = "4.1.0".freeze
4
4
  end
@@ -224,6 +224,12 @@ class ErrorTest < ActionView::TestCase
224
224
  assert_no_select 'span.error'
225
225
  end
226
226
 
227
+ test 'input with custom error works when form does not use a model' do
228
+ with_form_for :user, :active, error: "Super User Active! cannot be blank"
229
+
230
+ assert_select 'span.error'
231
+ end
232
+
227
233
  test 'input with custom error works when using full_error component' do
228
234
  swap_wrapper :default, custom_wrapper_with_full_error do
229
235
  error_text = "Super User Name! cannot be blank"
@@ -271,6 +271,12 @@ class FormBuilderTest < ActionView::TestCase
271
271
  assert_select 'form select#user_age.select'
272
272
  end
273
273
 
274
+ test 'builder does not generate url fields for columns that contain only the letters url' do
275
+ with_form_for @user, :hourly
276
+ assert_no_select 'form input#user_url.string.url'
277
+ assert_select 'form input#user_hourly.string'
278
+ end
279
+
274
280
  test 'builder allows overriding default input type for text' do
275
281
  with_form_for @user, :name, as: :text
276
282
  assert_no_select 'form input#user_name'
@@ -3,12 +3,6 @@ require 'test_helper'
3
3
 
4
4
  # Tests for f.input_field
5
5
  class InputFieldTest < ActionView::TestCase
6
- def with_input_field_for(object, *args)
7
- with_concat_form_for(object) do |f|
8
- f.input_field(*args)
9
- end
10
- end
11
-
12
6
  test "builder input_field only renders the input tag, nothing else" do
13
7
  with_input_field_for @user, :name
14
8
 
@@ -85,13 +79,13 @@ class InputFieldTest < ActionView::TestCase
85
79
  test 'builder input_field infers pattern from attributes' do
86
80
  with_input_field_for @other_validating_user, :country, as: :string, pattern: true
87
81
 
88
- assert_select 'input[pattern="\w+"]'
82
+ assert_select "input:match('pattern', ?)", /\w+/
89
83
  end
90
84
 
91
85
  test 'builder input_field accepts custom pattern' do
92
86
  with_input_field_for @other_validating_user, :country, as: :string, pattern: '\d+'
93
87
 
94
- assert_select 'input[pattern="\d+"]'
88
+ assert_select "input:match('pattern', ?)", /\\d+/
95
89
  end
96
90
 
97
91
  test 'builder input_field uses readonly component' do
@@ -138,7 +132,7 @@ class InputFieldTest < ActionView::TestCase
138
132
  swap_wrapper :default, custom_wrapper_with_html5_components do
139
133
  with_input_field_for @user, :name, pattern: '\w+'
140
134
 
141
- assert_select 'input[pattern="\w+"]'
135
+ assert_select "input:match('pattern', ?)", /\w+/
142
136
  end
143
137
  end
144
138
 
@@ -107,6 +107,14 @@ class BooleanInputTest < ActionView::TestCase
107
107
  end
108
108
  end
109
109
 
110
+ test 'input boolean with nested generates a disabled hidden field with the form attribute when it is given' do
111
+ swap SimpleForm, boolean_style: :nested do
112
+ with_input_for @user, :active, :boolean, input_html: { form: 'form_id' }
113
+
114
+ assert_select "input[type=hidden][form=form_id]+ label.boolean > input.boolean"
115
+ end
116
+ end
117
+
110
118
  test 'input accepts changing boolean style to nested through given options' do
111
119
  with_input_for @user, :active, :boolean, boolean_style: :nested
112
120
  assert_select 'label[for=user_active]', 'Active'
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ class ColorInputTest < ActionView::TestCase
6
+ test 'input generates a color field' do
7
+ with_input_for @user, :favorite_color, :color
8
+ assert_select 'input[type=color].color#user_favorite_color'
9
+ end
10
+ end
@@ -6,12 +6,7 @@ require 'test_helper'
6
6
  class DateTimeInputWithHtml5Test < ActionView::TestCase
7
7
  test 'input generates a datetime input for datetime attributes if HTML5 compatibility is explicitly enbled' do
8
8
  with_input_for @user, :created_at, :datetime, html5: true
9
-
10
- if ActionPack::VERSION::STRING >= '5'
11
- assert_select 'input[type="datetime-local"]'
12
- elsif ActionPack::VERSION::STRING < '5'
13
- assert_select 'input[type="datetime"]'
14
- end
9
+ assert_select 'input[type="datetime-local"]'
15
10
  end
16
11
 
17
12
  test 'input generates a datetime select for datetime attributes' do
@@ -80,12 +75,7 @@ class DateTimeInputWithoutHtml5Test < ActionView::TestCase
80
75
  test 'input generates a datetime input for datetime attributes if HTML5 compatibility is explicitly enabled' do
81
76
  swap_wrapper do
82
77
  with_input_for @user, :created_at, :datetime, html5: true
83
-
84
- if ActionPack::VERSION::STRING >= '5'
85
- assert_select 'input[type="datetime-local"]'
86
- elsif ActionPack::VERSION::STRING < '5'
87
- assert_select 'input[type="datetime"]'
88
- end
78
+ assert_select 'input[type="datetime-local"]'
89
79
  end
90
80
  end
91
81
 
@@ -76,4 +76,17 @@ class DisabledTest < ActionView::TestCase
76
76
  with_input_for @user, :created_at, :datetime
77
77
  assert_no_select 'select.datetime.disabled[disabled]'
78
78
  end
79
+
80
+ test 'input_field collection allows disabled select' do
81
+ with_input_field_for @user, :description, collection: ['foo', 'bar'], disabled: true
82
+ assert_select 'select[disabled]'
83
+ assert_no_select 'option[disabled]'
84
+ end
85
+
86
+ test 'input_field collection allows individual disabled options' do
87
+ with_input_field_for @user, :description, collection: ['foo', 'bar'], disabled: 'bar'
88
+ assert_no_select 'select[disabled]'
89
+ assert_no_select 'option[disabled][value=foo]'
90
+ assert_select 'option[disabled][value=bar]'
91
+ end
79
92
  end
@@ -15,6 +15,7 @@ class DiscoveryTest < ActionView::TestCase
15
15
  Object.send :remove_const, :CustomizedInput
16
16
  Object.send :remove_const, :DeprecatedInput
17
17
  Object.send :remove_const, :CollectionSelectInput
18
+ Object.send :remove_const, :FileInput
18
19
  CustomInputs.send :remove_const, :CustomizedInput
19
20
  CustomInputs.send :remove_const, :PasswordInput
20
21
  CustomInputs.send :remove_const, :NumericInput
@@ -109,6 +110,26 @@ class DiscoveryTest < ActionView::TestCase
109
110
  end
110
111
  end
111
112
 
113
+ test 'does not duplicate the html classes giving a extra class' do
114
+ discovery do
115
+ swap SimpleForm, input_class: 'custom-default-input-class' do
116
+ with_form_for @user, :active, as: :select
117
+ assert_select 'form select#user_active.select' do
118
+ # Make sure class list contains 'chosen' only once.
119
+ assert_select ":match('class', ?)", /^(?!.*\bchosen\b.*\bchosen\b).*\bchosen\b.*$/
120
+ end
121
+ end
122
+ end
123
+ end
124
+
125
+ test 'new inputs can override the default input_html_classes' do
126
+ discovery do
127
+ with_form_for @user, :avatar, as: :file
128
+ assert_no_select 'form input[type=file]#user_avatar.file.file-upload'
129
+ assert_select 'form input[type=file]#user_avatar.file-upload'
130
+ end
131
+ end
132
+
112
133
  test 'inputs method without wrapper_options are deprecated' do
113
134
  discovery do
114
135
  assert_deprecated do
@@ -6,22 +6,14 @@ class PriorityInputTest < ActionView::TestCase
6
6
  test 'input generates a country select field' do
7
7
  with_input_for @user, :country, :country
8
8
  assert_select 'select#user_country'
9
- if ActionPack::VERSION::STRING >= '5'
10
- assert_select 'select option[value=BR]', 'Brazil'
11
- elsif ActionPack::VERSION::STRING < '5'
12
- assert_select 'select option[value=Brazil]', 'Brazil'
13
- end
9
+ assert_select 'select option[value=BR]', 'Brazil'
14
10
  assert_no_select 'select option[value=""][disabled=disabled]'
15
11
  end
16
12
 
17
13
  test 'input generates a country select with SimpleForm default' do
18
14
  swap SimpleForm, country_priority: [ 'Brazil' ] do
19
15
  with_input_for @user, :country, :country
20
- if ActionPack::VERSION::STRING >= '5'
21
- assert_select 'select option[value="---------------"][disabled=disabled]'
22
- elsif ActionPack::VERSION::STRING < '5'
23
- assert_select 'select option[value=""][disabled=disabled]'
24
- end
16
+ assert_select 'select option[value="---------------"][disabled=disabled]'
25
17
  end
26
18
  end
27
19
 
@@ -8,6 +8,11 @@ class StringInputTest < ActionView::TestCase
8
8
  assert_select "input#user_name[type=text][name='user[name]'][value='New in SimpleForm!']"
9
9
  end
10
10
 
11
+ test 'input maps text field to citext attribute' do
12
+ with_input_for @user, :name, :citext
13
+ assert_select "input#user_name[type=text][name='user[name]'][value='New in SimpleForm!']"
14
+ end
15
+
11
16
  test 'input generates a password field for password attributes' do
12
17
  with_input_for @user, :password, :password
13
18
  assert_select "input#user_password.password[type=password][name='user[password]']"
@@ -38,18 +43,6 @@ class StringInputTest < ActionView::TestCase
38
43
  assert_select 'input.string[minlength="5"]'
39
44
  end
40
45
 
41
- if ActionPack::VERSION::STRING < '5'
42
- test 'input does not get maxlength from validation when tokenizer present' do
43
- with_input_for @validating_user, :action, :string
44
- assert_no_select 'input.string[maxlength]'
45
- end
46
-
47
- test 'input does not get minlength from validation when tokenizer present' do
48
- with_input_for @validating_user, :action, :string
49
- assert_no_select 'input.string[minlength]'
50
- end
51
- end
52
-
53
46
  test 'input gets maxlength from validation when :is option present' do
54
47
  with_input_for @validating_user, :home_picture, :string
55
48
  assert_select 'input.string[maxlength="12"]'
@@ -88,12 +81,12 @@ class StringInputTest < ActionView::TestCase
88
81
 
89
82
  test 'input infers pattern from attributes' do
90
83
  with_input_for @other_validating_user, :country, :string, pattern: true
91
- assert_select 'input[pattern="\w+"]'
84
+ assert_select "input:match('pattern', ?)", /\w+/
92
85
  end
93
86
 
94
87
  test 'input infers pattern from attributes using proc' do
95
88
  with_input_for @other_validating_user, :name, :string, pattern: true
96
- assert_select 'input[pattern="\w+"]'
89
+ assert_select "input:match('pattern', ?)", /\w+/
97
90
  end
98
91
 
99
92
  test 'input does not infer pattern from attributes if root default is false' do
@@ -105,7 +98,7 @@ class StringInputTest < ActionView::TestCase
105
98
 
106
99
  test 'input uses given pattern from attributes' do
107
100
  with_input_for @other_validating_user, :country, :string, input_html: { pattern: "\\d+" }
108
- assert_select 'input[pattern="\d+"]'
101
+ assert_select "input:match('pattern', ?)", /\\d+/
109
102
  end
110
103
 
111
104
  test 'input does not use pattern if model has :without validation option' do
@@ -37,6 +37,13 @@ class CollectionSelectInput < SimpleForm::Inputs::CollectionSelectInput
37
37
  end
38
38
  end
39
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
+
40
47
  module CustomInputs
41
48
  class CustomizedInput < SimpleForm::Inputs::StringInput
42
49
  def input_html_classes
@@ -255,6 +255,12 @@ module MiscHelpers
255
255
  f.input(attribute_name, options.merge(as: type))
256
256
  end
257
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
258
264
  end
259
265
 
260
266
  class CustomFormBuilder < SimpleForm::FormBuilder
@@ -91,7 +91,7 @@ class User
91
91
  :post_count, :lock_version, :amount, :attempts, :action, :credit_card, :gender,
92
92
  :extra_special_company_id, :pictures, :picture_ids, :special_pictures,
93
93
  :special_picture_ids, :uuid, :friends, :friend_ids, :special_tags, :special_tag_ids,
94
- :citext, :hstore, :json, :jsonb
94
+ :citext, :hstore, :json, :jsonb, :hourly, :favorite_color
95
95
 
96
96
  def self.build(extra_attributes = {})
97
97
  attributes = {
@@ -277,9 +277,6 @@ class ValidatingUser < User
277
277
  only_integer: true
278
278
  validates_length_of :name, maximum: 25, minimum: 5
279
279
  validates_length_of :description, in: 15..50
280
- if ActionPack::VERSION::STRING < '5'
281
- validates_length_of :action, maximum: 10, tokenizer: ->(str) { str.scan(/\w+/) }
282
- end
283
280
  validates_length_of :home_picture, is: 12
284
281
 
285
282
  def min_amount
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: 4.0.1
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Valim
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-05-18 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
@@ -91,6 +91,7 @@ files:
91
91
  - lib/simple_form/inputs/collection_input.rb
92
92
  - lib/simple_form/inputs/collection_radio_buttons_input.rb
93
93
  - lib/simple_form/inputs/collection_select_input.rb
94
+ - lib/simple_form/inputs/color_input.rb
94
95
  - lib/simple_form/inputs/date_time_input.rb
95
96
  - lib/simple_form/inputs/file_input.rb
96
97
  - lib/simple_form/inputs/grouped_collection_select_input.rb
@@ -129,6 +130,7 @@ files:
129
130
  - test/inputs/collection_check_boxes_input_test.rb
130
131
  - test/inputs/collection_radio_buttons_input_test.rb
131
132
  - test/inputs/collection_select_input_test.rb
133
+ - test/inputs/color_input_test.rb
132
134
  - test/inputs/datetime_input_test.rb
133
135
  - test/inputs/disabled_test.rb
134
136
  - test/inputs/discovery_test.rb
@@ -168,45 +170,46 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
170
  version: '0'
169
171
  requirements: []
170
172
  rubyforge_project: simple_form
171
- rubygems_version: 2.6.11
173
+ rubygems_version: 2.7.6
172
174
  signing_key:
173
175
  specification_version: 4
174
176
  summary: Forms made easy!
175
177
  test_files:
176
- - test/action_view_extensions/builder_test.rb
177
- - test/action_view_extensions/form_helper_test.rb
178
- - test/components/custom_components_test.rb
179
178
  - test/components/label_test.rb
180
- - test/form_builder/association_test.rb
181
- - test/form_builder/button_test.rb
182
- - 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
183
185
  - test/form_builder/error_test.rb
184
- - test/form_builder/general_test.rb
185
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
186
190
  - test/form_builder/input_field_test.rb
187
191
  - test/form_builder/label_test.rb
188
192
  - test/form_builder/wrapper_test.rb
193
+ - test/form_builder/association_test.rb
189
194
  - test/generators/simple_form_generator_test.rb
190
- - 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
191
203
  - test/inputs/collection_check_boxes_input_test.rb
192
- - test/inputs/collection_radio_buttons_input_test.rb
193
- - test/inputs/collection_select_input_test.rb
194
- - test/inputs/datetime_input_test.rb
204
+ - test/inputs/boolean_input_test.rb
195
205
  - test/inputs/disabled_test.rb
196
206
  - test/inputs/discovery_test.rb
197
- - test/inputs/file_input_test.rb
207
+ - test/inputs/collection_select_input_test.rb
198
208
  - test/inputs/general_test.rb
199
- - test/inputs/grouped_collection_select_input_test.rb
200
- - test/inputs/hidden_input_test.rb
201
- - test/inputs/numeric_input_test.rb
202
- - test/inputs/priority_input_test.rb
203
- - test/inputs/readonly_test.rb
209
+ - test/inputs/color_input_test.rb
204
210
  - test/inputs/required_test.rb
205
- - test/inputs/string_input_test.rb
206
- - test/inputs/text_input_test.rb
207
- - test/simple_form_test.rb
208
- - test/support/discovery_inputs.rb
209
- - test/support/misc_helpers.rb
210
- - test/support/mock_controller.rb
211
- - test/support/models.rb
212
- - 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