simple_form 3.1.0.rc1 → 3.1.0.rc2

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -1
  3. data/README.md +37 -6
  4. data/lib/generators/simple_form/templates/config/initializers/simple_form.rb +6 -2
  5. data/lib/generators/simple_form/templates/config/initializers/simple_form_bootstrap.rb +37 -14
  6. data/lib/simple_form.rb +8 -0
  7. data/lib/simple_form/components/labels.rb +1 -1
  8. data/lib/simple_form/form_builder.rb +29 -15
  9. data/lib/simple_form/inputs/boolean_input.rb +7 -4
  10. data/lib/simple_form/tags.rb +1 -0
  11. data/lib/simple_form/version.rb +1 -1
  12. data/lib/simple_form/wrappers/builder.rb +2 -2
  13. data/lib/simple_form/wrappers/many.rb +1 -0
  14. data/test/action_view_extensions/builder_test.rb +3 -3
  15. data/test/action_view_extensions/form_helper_test.rb +13 -13
  16. data/test/components/label_test.rb +35 -35
  17. data/test/form_builder/association_test.rb +4 -4
  18. data/test/form_builder/button_test.rb +5 -5
  19. data/test/form_builder/error_test.rb +18 -18
  20. data/test/form_builder/general_test.rb +65 -60
  21. data/test/form_builder/hint_test.rb +15 -15
  22. data/test/form_builder/input_field_test.rb +16 -16
  23. data/test/form_builder/label_test.rb +22 -13
  24. data/test/form_builder/wrapper_test.rb +54 -20
  25. data/test/inputs/boolean_input_test.rb +8 -8
  26. data/test/inputs/collection_check_boxes_input_test.rb +24 -7
  27. data/test/inputs/collection_radio_buttons_input_test.rb +40 -23
  28. data/test/inputs/collection_select_input_test.rb +45 -45
  29. data/test/inputs/datetime_input_test.rb +23 -23
  30. data/test/inputs/disabled_test.rb +15 -15
  31. data/test/inputs/discovery_test.rb +44 -5
  32. data/test/inputs/file_input_test.rb +2 -2
  33. data/test/inputs/general_test.rb +20 -20
  34. data/test/inputs/grouped_collection_select_input_test.rb +2 -2
  35. data/test/inputs/hidden_input_test.rb +4 -4
  36. data/test/inputs/numeric_input_test.rb +24 -24
  37. data/test/inputs/priority_input_test.rb +7 -7
  38. data/test/inputs/readonly_test.rb +19 -19
  39. data/test/inputs/required_test.rb +13 -13
  40. data/test/inputs/string_input_test.rb +23 -23
  41. data/test/inputs/text_input_test.rb +4 -4
  42. data/test/support/discovery_inputs.rb +20 -0
  43. data/test/support/misc_helpers.rb +22 -0
  44. data/test/support/models.rb +2 -1
  45. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8f1158908d7180ea273c9c3f411d61d58297825
4
- data.tar.gz: 33db5d3272ef17c15ad7390b432dcc3b390ae484
3
+ metadata.gz: 88d85494e222c13d302bed66c947ebc999702a46
4
+ data.tar.gz: 6974cf74dc9cada33d515c0125c4506262aa4118
5
5
  SHA512:
6
- metadata.gz: 9ccf6e4cd2f1c171d4acf02861c78b54ec05bdf3161f2ed32442fe6cc814538ca991b7e5bc0748aa3b3dedfac9a14fd31feed025a95cb48623038463585d2a8e
7
- data.tar.gz: df77813f38fe1e70c73be0cc41b88a065030c6d2c998586273e550984d3b342f6604e87acc8e5ef19343c26fb6d87d5ac13a0b84d9d63806aa5e52b8052f0bd1
6
+ metadata.gz: c2f1599b149fd691ccc0471af01e5f2f997465f55449bfea0924768c45f83510d36911342e54e8c42dfa75adf5da278261188f17c938b3571446b97c419e2011
7
+ data.tar.gz: 4c1677e4c36aa1381a378ef3a2c688db1881089d014cb97078f14dd2f5000a618fddc9671f78663fd693c86e4bc8524f3f2c9837aa5e8f7707c9b07b223cf114
data/CHANGELOG.md CHANGED
@@ -1,6 +1,9 @@
1
- ## 3.1.0.rc1
1
+ ## 3.1.0.rc2
2
2
 
3
3
  ### enhancements
4
+ * Add mapping to `uuid` columns.
5
+ * Add custom namespaces for custom inputs feature. [@vala](https://github.com/vala)
6
+ * Add `:unless_blank` option to the wrapper API. [@IanVaughan](https://github.com/IanVaughan)
4
7
  * Add support to html markup in the I18n options. [@laurocaetano](https://github.com/laurocaetano)
5
8
  * Add the `full_error` component. [@laurocaetano](https://github.com/laurocaetano)
6
9
  * Add support to `scope` to be used on associations. [@laurocaetano](https://github.com/laurocaetano)
data/README.md CHANGED
@@ -259,7 +259,7 @@ end
259
259
  ```
260
260
 
261
261
  For check boxes and radio buttons you can remove the label changing `boolean_style` from default value `:nested` to `:inline`.
262
- Also, `item_wrap_tag` will not work when `boolean_style` is set to `:nested`.
262
+ Also, `item_wrapper_tag` will not work when `boolean_style` is set to `:nested`.
263
263
 
264
264
  Example:
265
265
 
@@ -521,6 +521,7 @@ specifying the helper method in the column `Mapping` as the `as:` option.
521
521
  `tel` | `input[type=tel]` | `string` with `name =~ /phone/`
522
522
  `password` | `input[type=password]` | `string` with `name =~ /password/`
523
523
  `search` | `input[type=search]` | -
524
+ `uuid` | `input[type=text]` | `uuid`
524
525
  `text` | `textarea` | `text`
525
526
  `file` | `input[type=file]` | `string` responding to file methods
526
527
  `hidden` | `input[type=hidden]` | -
@@ -581,6 +582,28 @@ class CollectionSelectInput < SimpleForm::Inputs::CollectionSelectInput
581
582
  end
582
583
  ```
583
584
 
585
+ If needed, you can namespace your custom inputs in a module and tell **Simple Form** to look for
586
+ their definitions in this module. This can avoid conflicts with other form libraries (like Formtastic) that look up
587
+ the global context to find inputs definition too.
588
+
589
+ ```ruby
590
+ # app/inputs/custom_inputs/numeric_input
591
+ module CustomInputs
592
+ class NumericInput < SimpleForm::Inputs::NumericInput
593
+ def input_html_classes
594
+ super.push('no-spinner')
595
+ end
596
+ end
597
+ end
598
+ ```
599
+
600
+ And in the **SimpleForm** initializer :
601
+
602
+ ```ruby
603
+ # config/simple_form.rb
604
+ config.custom_inputs_namespaces << "CustomInputs"
605
+ ```
606
+
584
607
  ## Custom form builder
585
608
 
586
609
  You can create a custom form builder that uses **Simple Form**.
@@ -599,8 +622,7 @@ Create a form builder class that inherits from `SimpleForm::FormBuilder`.
599
622
  ```ruby
600
623
  class CustomFormBuilder < SimpleForm::FormBuilder
601
624
  def input(attribute_name, options = {}, &block)
602
- options[:input_html].merge! class: 'custom'
603
- super
625
+ super(attribute_name, options.merge(label: false), &block)
604
626
  end
605
627
  end
606
628
  ```
@@ -629,8 +651,8 @@ en:
629
651
  user:
630
652
  age: 'Rather not say'
631
653
  prompts:
632
- gender:
633
- age: 'Select your gender'
654
+ user:
655
+ gender: 'Select your gender'
634
656
  ```
635
657
 
636
658
  And your forms will use this information to render the components for you.
@@ -896,6 +918,15 @@ end
896
918
  By setting it as `optional`, a hint will only be generated when `hint: true` is explicitly used.
897
919
  The same for placeholder.
898
920
 
921
+ It is also possible to give the option `:unless_blank` to the wrapper if you want to render it only
922
+ when the content is present.
923
+
924
+ ```ruby
925
+ b.wrapper tag: :span, class: 'hint', unless_blank: true do |component|
926
+ component.optional :hint
927
+ end
928
+ ```
929
+
899
930
  ## HTML 5 Notice
900
931
 
901
932
  By default, **Simple Form** will generate input field types and attributes that are supported in HTML5,
@@ -985,7 +1016,7 @@ https://github.com/plataformatec/simple_form/issues
985
1016
  [![Gem Version](https://fury-badge.herokuapp.com/rb/simple_form.png)](http://badge.fury.io/rb/simple_form)
986
1017
  [![Build Status](https://api.travis-ci.org/plataformatec/simple_form.svg?branch=master)](http://travis-ci.org/plataformatec/simple_form)
987
1018
  [![Code Climate](https://codeclimate.com/github/plataformatec/simple_form.png)](https://codeclimate.com/github/plataformatec/simple_form)
988
- [![Inline docs](http://inch-pages.github.io/github/plataformatec/simple_form.png)](http://inch-pages.github.io/github/plataformatec/simple_form)
1019
+ [![Inline docs](http://inch-ci.org/github/plataformatec/simple_form.png)](http://inch-ci.org/github/plataformatec/simple_form)
989
1020
 
990
1021
  ## License
991
1022
 
@@ -22,9 +22,9 @@ SimpleForm.setup do |config|
22
22
  b.use :placeholder
23
23
 
24
24
  ## Optional extensions
25
- # They are disabled unless you pass `f.input EXTENSION_NAME => :lookup`
25
+ # They are disabled unless you pass `f.input EXTENSION_NAME => true`
26
26
  # to the input. If so, they will retrieve the values from the model
27
- # if any exists. If you want to enable the lookup for any of those
27
+ # if any exists. If you want to enable any of those
28
28
  # extensions by default, you can change `b.optional` to `b.use`.
29
29
 
30
30
  # Calculates maxlength from length validations for string inputs
@@ -131,6 +131,10 @@ SimpleForm.setup do |config|
131
131
  # type as key and the wrapper that will be used for all inputs with specified type.
132
132
  # config.wrapper_mappings = { string: :prepend }
133
133
 
134
+ # Namespaces where SimpleForm should look for custom input classes that
135
+ # override default inputs.
136
+ # config.custom_inputs_namespaces << "CustomInputs"
137
+
134
138
  # Default priority for time_zone inputs.
135
139
  # config.time_zone_priority = nil
136
140
 
@@ -1,35 +1,38 @@
1
1
  # Use this setup block to configure all options available in SimpleForm.
2
2
  SimpleForm.setup do |config|
3
+ config.error_notification_class = 'alert alert-danger'
3
4
  config.button_class = 'btn btn-default'
4
5
  config.boolean_label_class = nil
5
6
 
6
7
  config.wrappers :vertical_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
7
8
  b.use :html5
8
9
  b.use :placeholder
10
+ b.optional :maxlength
11
+ b.optional :pattern
12
+ b.optional :min_max
13
+ b.optional :readonly
9
14
  b.use :label, class: 'control-label'
10
15
 
11
- b.wrapper tag: 'div' do |ba|
12
- ba.use :input, class: 'form-control'
13
- ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
14
- ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
15
- end
16
+ b.use :input, class: 'form-control'
17
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
18
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
16
19
  end
17
20
 
18
21
  config.wrappers :vertical_file_input, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
19
22
  b.use :html5
20
23
  b.use :placeholder
24
+ b.optional :maxlength
25
+ b.optional :readonly
21
26
  b.use :label, class: 'control-label'
22
27
 
23
- b.wrapper tag: 'div' do |ba|
24
- ba.use :input
25
- ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
26
- ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
27
- end
28
+ b.use :input
29
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
30
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
28
31
  end
29
32
 
30
33
  config.wrappers :vertical_boolean, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
31
34
  b.use :html5
32
- b.use :placeholder
35
+ b.optional :readonly
33
36
 
34
37
  b.wrapper tag: 'div', class: 'checkbox' do |ba|
35
38
  ba.use :label_input
@@ -41,7 +44,7 @@ SimpleForm.setup do |config|
41
44
 
42
45
  config.wrappers :vertical_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
43
46
  b.use :html5
44
- b.use :placeholder
47
+ b.optional :readonly
45
48
  b.use :label_input
46
49
  b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
47
50
  b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
@@ -50,6 +53,10 @@ SimpleForm.setup do |config|
50
53
  config.wrappers :horizontal_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
51
54
  b.use :html5
52
55
  b.use :placeholder
56
+ b.optional :maxlength
57
+ b.optional :pattern
58
+ b.optional :min_max
59
+ b.optional :readonly
53
60
  b.use :label, class: 'col-sm-3 control-label'
54
61
 
55
62
  b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
@@ -62,6 +69,8 @@ SimpleForm.setup do |config|
62
69
  config.wrappers :horizontal_file_input, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
63
70
  b.use :html5
64
71
  b.use :placeholder
72
+ b.optional :maxlength
73
+ b.optional :readonly
65
74
  b.use :label, class: 'col-sm-3 control-label'
66
75
 
67
76
  b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
@@ -73,7 +82,7 @@ SimpleForm.setup do |config|
73
82
 
74
83
  config.wrappers :horizontal_boolean, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
75
84
  b.use :html5
76
- b.use :placeholder
85
+ b.optional :readonly
77
86
 
78
87
  b.wrapper tag: 'div', class: 'col-sm-offset-3 col-sm-9' do |wr|
79
88
  wr.wrapper tag: 'div', class: 'checkbox' do |ba|
@@ -87,7 +96,7 @@ SimpleForm.setup do |config|
87
96
 
88
97
  config.wrappers :horizontal_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
89
98
  b.use :html5
90
- b.use :placeholder
99
+ b.optional :readonly
91
100
 
92
101
  b.use :label, class: 'col-sm-3 control-label'
93
102
 
@@ -98,6 +107,20 @@ SimpleForm.setup do |config|
98
107
  end
99
108
  end
100
109
 
110
+ config.wrappers :inline_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
111
+ b.use :html5
112
+ b.use :placeholder
113
+ b.optional :maxlength
114
+ b.optional :pattern
115
+ b.optional :min_max
116
+ b.optional :readonly
117
+ b.use :label, class: 'sr-only'
118
+
119
+ b.use :input, class: 'form-control'
120
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
121
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
122
+ end
123
+
101
124
  # Wrappers for forms and inputs using the Bootstrap toolkit.
102
125
  # Check the Bootstrap docs (http://getbootstrap.com)
103
126
  # to learn about the different styles for forms and inputs,
data/lib/simple_form.rb CHANGED
@@ -130,6 +130,14 @@ See https://github.com/plataformatec/simple_form/pull/997 for more information.
130
130
  mattr_accessor :wrapper_mappings
131
131
  @@wrapper_mappings = nil
132
132
 
133
+ # Namespaces where SimpleForm should look for custom input classes that override
134
+ # default inputs. Namespaces are given as string to allow lazy loading inputs.
135
+ # e.g. config.custom_inputs_namespaces << "CustomInputs"
136
+ # will try to find CustomInputs::NumericInput when an :integer
137
+ # field is called.
138
+ mattr_accessor :custom_inputs_namespaces
139
+ @@custom_inputs_namespaces = []
140
+
133
141
  # Default priority for time_zone inputs.
134
142
  mattr_accessor :time_zone_priority
135
143
  @@time_zone_priority = nil
@@ -31,7 +31,7 @@ module SimpleForm
31
31
  end
32
32
  end
33
33
 
34
- def label_text
34
+ def label_text(wrapper_options = nil)
35
35
  label_text = options[:label_text] || SimpleForm.label_text
36
36
  label_text.call(html_escape(raw_label_text), required_label_text, options[:label].present?).strip.html_safe
37
37
  end
@@ -17,19 +17,19 @@ module SimpleForm
17
17
  extend MapType
18
18
  include SimpleForm::Inputs
19
19
 
20
- map_type :text, to: SimpleForm::Inputs::TextInput
21
- map_type :file, to: SimpleForm::Inputs::FileInput
22
- map_type :string, :email, :search, :tel, :url, to: SimpleForm::Inputs::StringInput
23
- map_type :password, to: SimpleForm::Inputs::PasswordInput
24
- map_type :integer, :decimal, :float, to: SimpleForm::Inputs::NumericInput
25
- map_type :range, to: SimpleForm::Inputs::RangeInput
26
- map_type :check_boxes, to: SimpleForm::Inputs::CollectionCheckBoxesInput
27
- map_type :radio_buttons, to: SimpleForm::Inputs::CollectionRadioButtonsInput
28
- map_type :select, to: SimpleForm::Inputs::CollectionSelectInput
29
- map_type :grouped_select, to: SimpleForm::Inputs::GroupedCollectionSelectInput
30
- map_type :date, :time, :datetime, to: SimpleForm::Inputs::DateTimeInput
31
- map_type :country, :time_zone, to: SimpleForm::Inputs::PriorityInput
32
- map_type :boolean, to: SimpleForm::Inputs::BooleanInput
20
+ map_type :text, to: SimpleForm::Inputs::TextInput
21
+ map_type :file, to: SimpleForm::Inputs::FileInput
22
+ map_type :string, :email, :search, :tel, :url, :uuid, to: SimpleForm::Inputs::StringInput
23
+ map_type :password, to: SimpleForm::Inputs::PasswordInput
24
+ map_type :integer, :decimal, :float, to: SimpleForm::Inputs::NumericInput
25
+ map_type :range, to: SimpleForm::Inputs::RangeInput
26
+ map_type :check_boxes, to: SimpleForm::Inputs::CollectionCheckBoxesInput
27
+ map_type :radio_buttons, to: SimpleForm::Inputs::CollectionRadioButtonsInput
28
+ map_type :select, to: SimpleForm::Inputs::CollectionSelectInput
29
+ map_type :grouped_select, to: SimpleForm::Inputs::GroupedCollectionSelectInput
30
+ map_type :date, :time, :datetime, to: SimpleForm::Inputs::DateTimeInput
31
+ map_type :country, :time_zone, to: SimpleForm::Inputs::PriorityInput
32
+ map_type :boolean, to: SimpleForm::Inputs::BooleanInput
33
33
 
34
34
  def self.discovery_cache
35
35
  @discovery_cache ||= {}
@@ -566,7 +566,9 @@ module SimpleForm
566
566
  mapping_override(mapping) || mapping
567
567
  else
568
568
  camelized = "#{input_type.to_s.camelize}Input"
569
- attempt_mapping(camelized, Object) || attempt_mapping(camelized, self.class) ||
569
+ attempt_mapping_with_custom_namespace(camelized) ||
570
+ attempt_mapping(camelized, Object) ||
571
+ attempt_mapping(camelized, self.class) ||
570
572
  raise("No input found for #{input_type}")
571
573
  end
572
574
  end
@@ -604,7 +606,9 @@ module SimpleForm
604
606
  def mapping_override(klass)
605
607
  name = klass.name
606
608
  if name =~ /^SimpleForm::Inputs/
607
- attempt_mapping name.split("::").last, Object
609
+ input_name = name.split("::").last
610
+ attempt_mapping_with_custom_namespace(input_name) ||
611
+ attempt_mapping(input_name, Object)
608
612
  end
609
613
  end
610
614
 
@@ -617,5 +621,15 @@ module SimpleForm
617
621
  raise if e.message !~ /#{mapping}$/
618
622
  end
619
623
  end
624
+
625
+ def attempt_mapping_with_custom_namespace(input_name)
626
+ SimpleForm.custom_inputs_namespaces.each do |namespace|
627
+ if (mapping = attempt_mapping(input_name, namespace.constantize))
628
+ return mapping
629
+ end
630
+ end
631
+
632
+ nil
633
+ end
620
634
  end
621
635
  end
@@ -16,7 +16,7 @@ module SimpleForm
16
16
  end
17
17
 
18
18
  def label_input(wrapper_options = nil)
19
- if options[:label] == false
19
+ if options[:label] == false || inline_label?
20
20
  input(wrapper_options)
21
21
  elsif nested_boolean_style?
22
22
  html_options = label_html_options.dup
@@ -61,13 +61,16 @@ module SimpleForm
61
61
  @builder.hidden_field(attribute_name, options)
62
62
  end
63
63
 
64
+ def inline_label?
65
+ nested_boolean_style? && options[:inline_label]
66
+ end
67
+
64
68
  def inline_label
65
69
  inline_option = options[:inline_label]
66
70
 
67
71
  if inline_option
68
- label = inline_option == true ? " #{label_text}" : " #{html_escape(inline_option)}"
69
-
70
- label.html_safe
72
+ label = inline_option == true ? label_text : html_escape(inline_option)
73
+ " #{label}".html_safe
71
74
  end
72
75
  end
73
76
 
@@ -19,6 +19,7 @@ module SimpleForm
19
19
  label_options = {}
20
20
  add_default_name_and_id_for_value(value, label_options)
21
21
  label_options['for'] = label_options.delete('id')
22
+ label_options['class'] = @options[:item_label_class]
22
23
  rendered_item = content_tag(:label, rendered_item, label_options)
23
24
  end
24
25
 
@@ -1,3 +1,3 @@
1
1
  module SimpleForm
2
- VERSION = "3.1.0.rc1".freeze
2
+ VERSION = "3.1.0.rc2".freeze
3
3
  end
@@ -45,7 +45,7 @@ module SimpleForm
45
45
  @components = []
46
46
  end
47
47
 
48
- def use(name, options = {}, &block)
48
+ def use(name, options = {})
49
49
  if options && wrapper = options[:wrap_with]
50
50
  @components << Single.new(name, wrapper, options.except(:wrap_with))
51
51
  else
@@ -55,7 +55,7 @@ module SimpleForm
55
55
 
56
56
  def optional(name, options = {}, &block)
57
57
  @options[name] = false
58
- use(name, options, &block)
58
+ use(name, options)
59
59
  end
60
60
 
61
61
  def wrapper(name, options = nil)
@@ -50,6 +50,7 @@ module SimpleForm
50
50
 
51
51
  def wrap(input, options, content)
52
52
  return content if options[namespace] == false
53
+ return if defaults[:unless_blank] && content.empty?
53
54
 
54
55
  tag = (namespace && options[:"#{namespace}_tag"]) || @defaults[:tag]
55
56
  return content unless tag
@@ -42,7 +42,7 @@ class BuilderTest < ActionView::TestCase
42
42
  assert_select 'form label.collection_radio_buttons[for=user_active_no]', 'No'
43
43
  end
44
44
 
45
- test "collection radio should sanitize collection values for labels correctly" do
45
+ test "collection radio sanitizes collection values for labels correctly" do
46
46
  with_collection_radio_buttons @user, :name, ['$0.99', '$1.99'], :to_s, :to_s
47
47
  assert_select 'label.collection_radio_buttons[for=user_name_099]', '$0.99'
48
48
  assert_select 'label.collection_radio_buttons[for=user_name_199]', '$1.99'
@@ -289,7 +289,7 @@ class BuilderTest < ActionView::TestCase
289
289
  assert_select 'form label.collection_check_boxes[for=user_active_no]', 'No'
290
290
  end
291
291
 
292
- test "collection check box should sanitize collection values for labels correctly" do
292
+ test "collection check box sanitizes collection values for labels correctly" do
293
293
  with_collection_check_boxes @user, :name, ['$0.99', '$1.99'], :to_s, :to_s
294
294
  assert_select 'label.collection_check_boxes[for=user_name_099]', '$0.99'
295
295
  assert_select 'label.collection_check_boxes[for=user_name_199]', '$1.99'
@@ -593,7 +593,7 @@ class BuilderTest < ActionView::TestCase
593
593
  end
594
594
  end
595
595
 
596
- test "fields inherites wrapper option from the parent form" do
596
+ test "fields inherits wrapper option from the parent form" do
597
597
  swap_wrapper :another do
598
598
  simple_form_for(:user, wrapper: :another) do |f|
599
599
  f.simple_fields_for(:company) do |company|