simple_form 3.0.0 → 3.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.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +44 -22
  3. data/MIT-LICENSE +1 -1
  4. data/README.md +204 -81
  5. data/lib/generators/simple_form/install_generator.rb +3 -3
  6. data/lib/generators/simple_form/templates/README +3 -4
  7. data/lib/generators/simple_form/templates/config/initializers/simple_form.rb +28 -7
  8. data/lib/generators/simple_form/templates/config/initializers/simple_form_bootstrap.rb +115 -24
  9. data/lib/generators/simple_form/templates/config/initializers/simple_form_foundation.rb +86 -5
  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 +1 -0
  12. data/lib/simple_form/action_view_extensions/form_helper.rb +6 -2
  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 +1 -1
  16. data/lib/simple_form/components/label_input.rb +20 -2
  17. data/lib/simple_form/components/labels.rb +10 -6
  18. data/lib/simple_form/components/maxlength.rb +1 -1
  19. data/lib/simple_form/components/min_max.rb +1 -1
  20. data/lib/simple_form/components/pattern.rb +1 -1
  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/form_builder.rb +123 -73
  24. data/lib/simple_form/helpers.rb +5 -5
  25. data/lib/simple_form/inputs/base.rb +36 -11
  26. data/lib/simple_form/inputs/block_input.rb +1 -1
  27. data/lib/simple_form/inputs/boolean_input.rb +28 -15
  28. data/lib/simple_form/inputs/collection_input.rb +30 -9
  29. data/lib/simple_form/inputs/collection_radio_buttons_input.rb +6 -11
  30. data/lib/simple_form/inputs/collection_select_input.rb +4 -2
  31. data/lib/simple_form/inputs/date_time_input.rb +12 -2
  32. data/lib/simple_form/inputs/file_input.rb +4 -2
  33. data/lib/simple_form/inputs/grouped_collection_select_input.rb +15 -3
  34. data/lib/simple_form/inputs/hidden_input.rb +4 -2
  35. data/lib/simple_form/inputs/numeric_input.rb +5 -4
  36. data/lib/simple_form/inputs/password_input.rb +4 -2
  37. data/lib/simple_form/inputs/priority_input.rb +4 -2
  38. data/lib/simple_form/inputs/range_input.rb +1 -1
  39. data/lib/simple_form/inputs/string_input.rb +4 -2
  40. data/lib/simple_form/inputs/text_input.rb +4 -2
  41. data/lib/simple_form/railtie.rb +7 -0
  42. data/lib/simple_form/tags.rb +6 -0
  43. data/lib/simple_form/version.rb +1 -1
  44. data/lib/simple_form/wrappers/builder.rb +6 -6
  45. data/lib/simple_form/wrappers/leaf.rb +28 -0
  46. data/lib/simple_form/wrappers/many.rb +6 -6
  47. data/lib/simple_form/wrappers/root.rb +1 -1
  48. data/lib/simple_form/wrappers/single.rb +5 -3
  49. data/lib/simple_form/wrappers.rb +1 -0
  50. data/lib/simple_form.rb +59 -8
  51. data/test/action_view_extensions/builder_test.rb +36 -36
  52. data/test/action_view_extensions/form_helper_test.rb +33 -14
  53. data/test/components/label_test.rb +37 -37
  54. data/test/form_builder/association_test.rb +52 -35
  55. data/test/form_builder/button_test.rb +10 -10
  56. data/test/form_builder/error_notification_test.rb +1 -1
  57. data/test/form_builder/error_test.rb +147 -22
  58. data/test/form_builder/general_test.rb +89 -64
  59. data/test/form_builder/hint_test.rb +23 -17
  60. data/test/form_builder/input_field_test.rb +80 -16
  61. data/test/form_builder/label_test.rb +52 -10
  62. data/test/form_builder/wrapper_test.rb +135 -19
  63. data/test/generators/simple_form_generator_test.rb +4 -4
  64. data/test/inputs/boolean_input_test.rb +62 -6
  65. data/test/inputs/collection_check_boxes_input_test.rb +85 -17
  66. data/test/inputs/collection_radio_buttons_input_test.rb +134 -36
  67. data/test/inputs/collection_select_input_test.rb +146 -41
  68. data/test/inputs/datetime_input_test.rb +117 -50
  69. data/test/inputs/disabled_test.rb +15 -15
  70. data/test/inputs/discovery_test.rb +56 -6
  71. data/test/inputs/file_input_test.rb +2 -2
  72. data/test/inputs/general_test.rb +20 -20
  73. data/test/inputs/grouped_collection_select_input_test.rb +44 -8
  74. data/test/inputs/hidden_input_test.rb +4 -4
  75. data/test/inputs/numeric_input_test.rb +43 -43
  76. data/test/inputs/priority_input_test.rb +13 -13
  77. data/test/inputs/readonly_test.rb +19 -19
  78. data/test/inputs/required_test.rb +13 -13
  79. data/test/inputs/string_input_test.rb +50 -30
  80. data/test/inputs/text_input_test.rb +7 -7
  81. data/test/simple_form_test.rb +8 -0
  82. data/test/support/discovery_inputs.rb +32 -2
  83. data/test/support/misc_helpers.rb +77 -5
  84. data/test/support/models.rb +60 -24
  85. data/test/test_helper.rb +7 -1
  86. metadata +22 -36
  87. data/lib/simple_form/action_view_extensions/builder.rb.orig +0 -247
  88. data/lib/simple_form/form_builder.rb.orig +0 -486
  89. data/lib/simple_form/version.rb.orig +0 -7
@@ -1,77 +1,77 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class DisabledTest < ActionView::TestCase
4
- test 'string input should be disabled when disabled option is true' do
4
+ test 'string input is disabled when disabled option is true' do
5
5
  with_input_for @user, :name, :string, disabled: true
6
6
  assert_select 'input.string.disabled[disabled]'
7
7
  end
8
8
 
9
- test 'text input should be disabled when disabled option is true' do
9
+ test 'text input is disabled when disabled option is true' do
10
10
  with_input_for @user, :description, :text, disabled: true
11
11
  assert_select 'textarea.text.disabled[disabled]'
12
12
  end
13
13
 
14
- test 'numeric input should be disabled when disabled option is true' do
14
+ test 'numeric input is disabled when disabled option is true' do
15
15
  with_input_for @user, :age, :integer, disabled: true
16
16
  assert_select 'input.integer.disabled[disabled]'
17
17
  end
18
18
 
19
- test 'date input should be disabled when disabled option is true' do
19
+ test 'date input is disabled when disabled option is true' do
20
20
  with_input_for @user, :born_at, :date, disabled: true
21
21
  assert_select 'select.date.disabled[disabled]'
22
22
  end
23
23
 
24
- test 'datetime input should be disabled when disabled option is true' do
24
+ test 'datetime input is disabled when disabled option is true' do
25
25
  with_input_for @user, :created_at, :datetime, disabled: true
26
26
  assert_select 'select.datetime.disabled[disabled]'
27
27
  end
28
28
 
29
- test 'string input should not be disabled when disabled option is false' do
29
+ test 'string input does not be disabled when disabled option is false' do
30
30
  with_input_for @user, :name, :string, disabled: false
31
31
  assert_no_select 'input.string.disabled[disabled]'
32
32
  end
33
33
 
34
- test 'text input should not be disabled when disabled option is false' do
34
+ test 'text input does not be disabled when disabled option is false' do
35
35
  with_input_for @user, :description, :text, disabled: false
36
36
  assert_no_select 'textarea.text.disabled[disabled]'
37
37
  end
38
38
 
39
- test 'numeric input should not be disabled when disabled option is false' do
39
+ test 'numeric input does not be disabled when disabled option is false' do
40
40
  with_input_for @user, :age, :integer, disabled: false
41
41
  assert_no_select 'input.integer.disabled[disabled]'
42
42
  end
43
43
 
44
- test 'date input should not be disabled when disabled option is false' do
44
+ test 'date input does not be disabled when disabled option is false' do
45
45
  with_input_for @user, :born_at, :date, disabled: false
46
46
  assert_no_select 'select.date.disabled[disabled]'
47
47
  end
48
48
 
49
- test 'datetime input should not be disabled when disabled option is false' do
49
+ test 'datetime input does not be disabled when disabled option is false' do
50
50
  with_input_for @user, :created_at, :datetime, disabled: false
51
51
  assert_no_select 'select.datetime.disabled[disabled]'
52
52
  end
53
53
 
54
- test 'string input should not be disabled when disabled option is not present' do
54
+ test 'string input does not be disabled when disabled option is not present' do
55
55
  with_input_for @user, :name, :string
56
56
  assert_no_select 'input.string.disabled[disabled]'
57
57
  end
58
58
 
59
- test 'text input should not be disabled when disabled option is not present' do
59
+ test 'text input does not be disabled when disabled option is not present' do
60
60
  with_input_for @user, :description, :text
61
61
  assert_no_select 'textarea.text.disabled[disabled]'
62
62
  end
63
63
 
64
- test 'numeric input should not be disabled when disabled option is not present' do
64
+ test 'numeric input does not be disabled when disabled option is not present' do
65
65
  with_input_for @user, :age, :integer
66
66
  assert_no_select 'input.integer.disabled[disabled]'
67
67
  end
68
68
 
69
- test 'date input should not be disabled when disabled option is not present' do
69
+ test 'date input does not be disabled when disabled option is not present' do
70
70
  with_input_for @user, :born_at, :date
71
71
  assert_no_select 'select.date.disabled[disabled]'
72
72
  end
73
73
 
74
- test 'datetime input should not be disabled when disabled option is not present' do
74
+ test 'datetime input does not be disabled when disabled option is not present' do
75
75
  with_input_for @user, :created_at, :datetime
76
76
  assert_no_select 'select.datetime.disabled[disabled]'
77
77
  end
@@ -2,7 +2,7 @@ require 'test_helper'
2
2
 
3
3
  class DiscoveryTest < ActionView::TestCase
4
4
  # Setup new inputs and remove them after the test.
5
- def discovery(value=false)
5
+ def discovery(value = false)
6
6
  swap SimpleForm, cache_discovery: value do
7
7
  begin
8
8
  load "support/discovery_inputs.rb"
@@ -12,12 +12,15 @@ class DiscoveryTest < ActionView::TestCase
12
12
  Object.send :remove_const, :StringInput
13
13
  Object.send :remove_const, :NumericInput
14
14
  Object.send :remove_const, :CustomizedInput
15
+ Object.send :remove_const, :DeprecatedInput
15
16
  Object.send :remove_const, :CollectionSelectInput
17
+ CustomInputs.send :remove_const, :PasswordInput
18
+ CustomInputs.send :remove_const, :NumericInput
16
19
  end
17
20
  end
18
21
  end
19
22
 
20
- test 'builder should not discover new inputs if cached' do
23
+ test 'builder does not discover new inputs if cached' do
21
24
  with_form_for @user, :name
22
25
  assert_select 'form input#user_name.string'
23
26
 
@@ -27,14 +30,14 @@ class DiscoveryTest < ActionView::TestCase
27
30
  end
28
31
  end
29
32
 
30
- test 'builder should discover new inputs' do
33
+ test 'builder discovers new inputs' do
31
34
  discovery do
32
35
  with_form_for @user, :name, as: :customized
33
36
  assert_select 'form section input#user_name.string'
34
37
  end
35
38
  end
36
39
 
37
- test 'builder should not discover new inputs if discovery is off' do
40
+ test 'builder does not discover new inputs if discovery is off' do
38
41
  with_form_for @user, :name
39
42
  assert_select 'form input#user_name.string'
40
43
 
@@ -46,24 +49,71 @@ class DiscoveryTest < ActionView::TestCase
46
49
  end
47
50
  end
48
51
 
49
- test 'builder should discover new inputs from mappings if not cached' do
52
+ test 'builder discovers new inputs from mappings if not cached' do
50
53
  discovery do
51
54
  with_form_for @user, :name
52
55
  assert_select 'form section input#user_name.string'
53
56
  end
54
57
  end
55
58
 
56
- test 'builder should discover new inputs from internal fallbacks if not cached' do
59
+ test 'builder discovers new inputs from internal fallbacks if not cached' do
57
60
  discovery do
58
61
  with_form_for @user, :age
59
62
  assert_select 'form section input#user_age.numeric.integer'
60
63
  end
61
64
  end
62
65
 
66
+ test 'builder discovers new maped inputs from configured namespaces if not cached' do
67
+ discovery do
68
+ swap SimpleForm, custom_inputs_namespaces: ['CustomInputs'] do
69
+ with_form_for @user, :password
70
+ assert_select 'form input#user_password.password-custom-input'
71
+ end
72
+ end
73
+ end
74
+
75
+ test 'builder discovers new maped inputs from configured namespaces before the ones from top level namespace' do
76
+ discovery do
77
+ swap SimpleForm, custom_inputs_namespaces: ['CustomInputs'] do
78
+ with_form_for @user, :age
79
+ assert_select 'form input#user_age.numeric-custom-input'
80
+ end
81
+ end
82
+ end
83
+
84
+ test 'builder discovers new custom inputs from configured namespace before the ones from top level namespace' do
85
+ discovery do
86
+ swap SimpleForm, custom_inputs_namespaces: ['CustomInputs'] do
87
+ with_form_for @user, :name, as: 'customized'
88
+ assert_select 'form input#user_name.customized-namespace-custom-input'
89
+ end
90
+ end
91
+ end
92
+
93
+ test 'raises error when configured namespace does not exists' do
94
+ discovery do
95
+ swap SimpleForm, custom_inputs_namespaces: ['InvalidNamespace'] do
96
+ assert_raise NameError do
97
+ with_form_for @user, :age
98
+ end
99
+ end
100
+ end
101
+ end
102
+
63
103
  test 'new inputs can override the input_html_options' do
64
104
  discovery do
65
105
  with_form_for @user, :active, as: :select
66
106
  assert_select 'form select#user_active.select.chosen'
67
107
  end
68
108
  end
109
+
110
+ test 'inputs method without wrapper_options are deprecated' do
111
+ discovery do
112
+ assert_deprecated do
113
+ with_form_for @user, :name, as: :deprecated
114
+ end
115
+
116
+ assert_select 'form section input#user_name.string'
117
+ end
118
+ end
69
119
  end
@@ -2,12 +2,12 @@
2
2
  require 'test_helper'
3
3
 
4
4
  class FileInputTest < ActionView::TestCase
5
- test 'input should generate a file field' do
5
+ test 'input generates a file field' do
6
6
  with_input_for @user, :name, :file
7
7
  assert_select 'input#user_name[type=file]'
8
8
  end
9
9
 
10
- test "input should generate a file field that doesn't accept placeholder" do
10
+ test "input generates a file field that doesn't accept placeholder" do
11
11
  store_translations(:en, simple_form: { placeholders: { user: { name: "text" } } }) do
12
12
  with_input_for @user, :name, :file
13
13
  assert_no_select 'input[placeholder]'
@@ -2,7 +2,7 @@
2
2
  require 'test_helper'
3
3
 
4
4
  class InputTest < ActionView::TestCase
5
- test 'input should generate css class based on default input type' do
5
+ test 'input generates css class based on default input type' do
6
6
  with_input_for @user, :name, :string
7
7
  assert_select 'input.string'
8
8
  with_input_for @user, :description, :text
@@ -15,7 +15,7 @@ class InputTest < ActionView::TestCase
15
15
  assert_select 'select.datetime'
16
16
  end
17
17
 
18
- test 'string input should generate autofocus attribute when autofocus option is true' do
18
+ test 'string input generates autofocus attribute when autofocus option is true' do
19
19
  with_input_for @user, :name, :string, autofocus: true
20
20
  assert_select 'input.string[autofocus]'
21
21
  end
@@ -36,94 +36,94 @@ class InputTest < ActionView::TestCase
36
36
  end
37
37
  end
38
38
 
39
- test 'text input should generate autofocus attribute when autofocus option is true' do
39
+ test 'text input generates autofocus attribute when autofocus option is true' do
40
40
  with_input_for @user, :description, :text, autofocus: true
41
41
  assert_select 'textarea.text[autofocus]'
42
42
  end
43
43
 
44
- test 'numeric input should generate autofocus attribute when autofocus option is true' do
44
+ test 'numeric input generates autofocus attribute when autofocus option is true' do
45
45
  with_input_for @user, :age, :integer, autofocus: true
46
46
  assert_select 'input.integer[autofocus]'
47
47
  end
48
48
 
49
- test 'date input should generate autofocus attribute when autofocus option is true' do
49
+ test 'date input generates autofocus attribute when autofocus option is true' do
50
50
  with_input_for @user, :born_at, :date, autofocus: true
51
51
  assert_select 'select.date[autofocus]'
52
52
  end
53
53
 
54
- test 'datetime input should generate autofocus attribute when autofocus option is true' do
54
+ test 'datetime input generates autofocus attribute when autofocus option is true' do
55
55
  with_input_for @user, :created_at, :datetime, autofocus: true
56
56
  assert_select 'select.datetime[autofocus]'
57
57
  end
58
58
 
59
- test 'string input should generate autofocus attribute when autofocus option is false' do
59
+ test 'string input generates autofocus attribute when autofocus option is false' do
60
60
  with_input_for @user, :name, :string, autofocus: false
61
61
  assert_no_select 'input.string[autofocus]'
62
62
  end
63
63
 
64
- test 'text input should generate autofocus attribute when autofocus option is false' do
64
+ test 'text input generates autofocus attribute when autofocus option is false' do
65
65
  with_input_for @user, :description, :text, autofocus: false
66
66
  assert_no_select 'textarea.text[autofocus]'
67
67
  end
68
68
 
69
- test 'numeric input should generate autofocus attribute when autofocus option is false' do
69
+ test 'numeric input generates autofocus attribute when autofocus option is false' do
70
70
  with_input_for @user, :age, :integer, autofocus: false
71
71
  assert_no_select 'input.integer[autofocus]'
72
72
  end
73
73
 
74
- test 'date input should generate autofocus attribute when autofocus option is false' do
74
+ test 'date input generates autofocus attribute when autofocus option is false' do
75
75
  with_input_for @user, :born_at, :date, autofocus: false
76
76
  assert_no_select 'select.date[autofocus]'
77
77
  end
78
78
 
79
- test 'datetime input should generate autofocus attribute when autofocus option is false' do
79
+ test 'datetime input generates autofocus attribute when autofocus option is false' do
80
80
  with_input_for @user, :created_at, :datetime, autofocus: false
81
81
  assert_no_select 'select.datetime[autofocus]'
82
82
  end
83
83
 
84
- test 'string input should generate autofocus attribute when autofocus option is not present' do
84
+ test 'string input generates autofocus attribute when autofocus option is not present' do
85
85
  with_input_for @user, :name, :string
86
86
  assert_no_select 'input.string[autofocus]'
87
87
  end
88
88
 
89
- test 'text input should generate autofocus attribute when autofocus option is not present' do
89
+ test 'text input generates autofocus attribute when autofocus option is not present' do
90
90
  with_input_for @user, :description, :text
91
91
  assert_no_select 'textarea.text[autofocus]'
92
92
  end
93
93
 
94
- test 'numeric input should generate autofocus attribute when autofocus option is not present' do
94
+ test 'numeric input generates autofocus attribute when autofocus option is not present' do
95
95
  with_input_for @user, :age, :integer
96
96
  assert_no_select 'input.integer[autofocus]'
97
97
  end
98
98
 
99
- test 'date input should generate autofocus attribute when autofocus option is not present' do
99
+ test 'date input generates autofocus attribute when autofocus option is not present' do
100
100
  with_input_for @user, :born_at, :date
101
101
  assert_no_select 'select.date[autofocus]'
102
102
  end
103
103
 
104
- test 'datetime input should generate autofocus attribute when autofocus option is not present' do
104
+ test 'datetime input generates autofocus attribute when autofocus option is not present' do
105
105
  with_input_for @user, :created_at, :datetime
106
106
  assert_no_select 'select.datetime[autofocus]'
107
107
  end
108
108
 
109
109
  # With no object
110
- test 'input should be generated properly when object is not present' do
110
+ test 'input is generated properly when object is not present' do
111
111
  with_input_for :project, :name, :string
112
112
  assert_select 'input.string.required#project_name'
113
113
  end
114
114
 
115
- test 'input as radio should be generated properly when object is not present ' do
115
+ test 'input as radio is generated properly when object is not present ' do
116
116
  with_input_for :project, :name, :radio_buttons
117
117
  assert_select 'input.radio_buttons#project_name_true'
118
118
  assert_select 'input.radio_buttons#project_name_false'
119
119
  end
120
120
 
121
- test 'input as select with collection should be generated properly when object is not present' do
121
+ test 'input as select with collection is generated properly when object is not present' do
122
122
  with_input_for :project, :name, :select, collection: ['Jose', 'Carlos']
123
123
  assert_select 'select.select#project_name'
124
124
  end
125
125
 
126
- test 'input should not generate empty css class' do
126
+ test 'input does not generate empty css class' do
127
127
  swap SimpleForm, generate_additional_classes_for: [:wrapper, :label] do
128
128
  with_input_for :project, :name, :string
129
129
  assert_no_select 'input#project_name[class]'
@@ -79,6 +79,42 @@ class GroupedCollectionSelectInputTest < ActionView::TestCase
79
79
  end
80
80
  end
81
81
 
82
+ test 'grouped collection finds default label methods on the group objects' do
83
+ option_list = ['Jose', 'Carlos']
84
+
85
+ GroupedClass = Struct.new(:to_label, :options)
86
+ group = GroupedClass.new("Authors", option_list)
87
+
88
+ with_input_for @user, :tag_ids, :grouped_select,
89
+ collection: [group],
90
+ group_method: :options
91
+
92
+ assert_select 'select.grouped_select#user_tag_ids' do
93
+ assert_select 'optgroup[label=Authors]' do
94
+ assert_select 'option', 'Jose'
95
+ assert_select 'option', 'Carlos'
96
+ end
97
+ end
98
+ end
99
+
100
+ test 'grouped collections finds the default label method from the first non-empty object' do
101
+ Agent = Struct.new(:id, :name)
102
+ agents = [["First", []], ["Second", [Agent.new(7, 'Bond'), Agent.new(47, 'Hitman')]]]
103
+
104
+ with_input_for @user, :tag_ids, :grouped_select,
105
+ collection: agents,
106
+ group_label_method: :first,
107
+ group_method: :last,
108
+ include_blank: false
109
+
110
+ assert_select 'select.grouped_select#user_tag_ids' do
111
+ assert_select 'optgroup[label=Second]' do
112
+ assert_select 'option[value="7"]', 'Bond'
113
+ assert_select 'option[value="47"]', 'Hitman'
114
+ end
115
+ end
116
+ end
117
+
82
118
  test 'grouped collection accepts label and value methods options' do
83
119
  with_input_for @user, :tag_ids, :grouped_select,
84
120
  collection: { 'Authors' => ['Jose', 'Carlos'] },
@@ -94,7 +130,7 @@ class GroupedCollectionSelectInputTest < ActionView::TestCase
94
130
  end
95
131
  end
96
132
 
97
- test 'grouped collection should allow overriding label and value methods using a lambda' do
133
+ test 'grouped collection allows overriding label and value methods using a lambda' do
98
134
  with_input_for @user, :tag_ids, :grouped_select,
99
135
  collection: { 'Authors' => ['Jose', 'Carlos'] },
100
136
  group_method: :last,
@@ -119,19 +155,19 @@ class GroupedCollectionSelectInputTest < ActionView::TestCase
119
155
  collection: tag_groups, group_method: :tags
120
156
 
121
157
  assert_select 'select.grouped_select#user_tag_ids' do
122
- assert_select 'optgroup[label=Group of Tags]' do
123
- assert_select 'option[value=1]', 'Tag 1'
124
- assert_select 'option[value=2]', 'Tag 2'
158
+ assert_select 'optgroup[label="Group of Tags"]' do
159
+ assert_select 'option[value="1"]', 'Tag 1'
160
+ assert_select 'option[value="2"]', 'Tag 2'
125
161
  end
126
162
 
127
- assert_select 'optgroup[label=Other group]' do
128
- assert_select 'option[value=3]', 'Tag 3'
129
- assert_select 'option[value=4]', 'Tag 4'
163
+ assert_select 'optgroup[label="Other group"]' do
164
+ assert_select 'option[value="3"]', 'Tag 3'
165
+ assert_select 'option[value="4"]', 'Tag 4'
130
166
  end
131
167
  end
132
168
  end
133
169
 
134
- test 'grouped collection should accept html options as the last element of collection' do
170
+ test 'grouped collection accepts html options as the last element of collection' do
135
171
  with_input_for @user, :tag_ids, :grouped_select,
136
172
  collection: [['Authors', [['Jose', 'jose', class: 'foo'], ['Carlos', 'carlos', class: 'bar']]]],
137
173
  group_method: :last
@@ -2,25 +2,25 @@
2
2
  require 'test_helper'
3
3
 
4
4
  class HiddenInputTest < ActionView::TestCase
5
- test 'input should generate a hidden field' do
5
+ test 'input generates a hidden field' do
6
6
  with_input_for @user, :name, :hidden
7
7
  assert_no_select 'input[type=text]'
8
8
  assert_select 'input#user_name[type=hidden]'
9
9
  end
10
10
 
11
- test 'hint should not be generated for hidden fields' do
11
+ test 'hint does not be generated for hidden fields' do
12
12
  store_translations(:en, simple_form: { hints: { user: { name: "text" } } }) do
13
13
  with_input_for @user, :name, :hidden
14
14
  assert_no_select 'span.hint'
15
15
  end
16
16
  end
17
17
 
18
- test 'label should not be generated for hidden inputs' do
18
+ test 'label does not be generated for hidden inputs' do
19
19
  with_input_for @user, :name, :hidden
20
20
  assert_no_select 'label'
21
21
  end
22
22
 
23
- test 'required/aria-required/optional options should not be generated for hidden inputs' do
23
+ test 'required/aria-required/optional options does not be generated for hidden inputs' do
24
24
  with_input_for @user, :name, :hidden
25
25
  assert_no_select 'input.required'
26
26
  assert_no_select 'input[required]'