simple_form 2.1.0 → 3.0.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 +7 -0
- data/CHANGELOG.md +22 -32
- data/README.md +161 -119
- data/lib/generators/simple_form/install_generator.rb +3 -3
- data/lib/generators/simple_form/templates/README +1 -1
- data/lib/generators/simple_form/templates/config/initializers/simple_form.rb +16 -13
- data/lib/generators/simple_form/templates/config/initializers/simple_form_bootstrap.rb +14 -14
- data/lib/generators/simple_form/templates/config/initializers/simple_form_foundation.rb +3 -3
- data/lib/simple_form/action_view_extensions/builder.rb +1 -319
- data/lib/simple_form/action_view_extensions/form_helper.rb +2 -9
- data/lib/simple_form/components/html5.rb +5 -2
- data/lib/simple_form/components/labels.rb +3 -3
- data/lib/simple_form/components/maxlength.rb +1 -8
- data/lib/simple_form/components/pattern.rb +2 -2
- data/lib/simple_form/components.rb +1 -1
- data/lib/simple_form/error_notification.rb +2 -2
- data/lib/simple_form/form_builder.rb +155 -51
- data/lib/simple_form/helpers.rb +1 -1
- data/lib/simple_form/inputs/base.rb +6 -6
- data/lib/simple_form/inputs/block_input.rb +1 -1
- data/lib/simple_form/inputs/boolean_input.rb +6 -4
- data/lib/simple_form/inputs/collection_input.rb +6 -6
- data/lib/simple_form/inputs/date_time_input.rb +1 -1
- data/lib/simple_form/inputs/numeric_input.rb +0 -6
- data/lib/simple_form/inputs/password_input.rb +0 -1
- data/lib/simple_form/inputs/string_input.rb +0 -1
- data/lib/simple_form/railtie.rb +7 -0
- data/lib/simple_form/tags.rb +62 -0
- data/lib/simple_form/version.rb +1 -1
- data/lib/simple_form/wrappers/builder.rb +5 -29
- data/lib/simple_form/wrappers/many.rb +1 -1
- data/lib/simple_form/wrappers/root.rb +1 -1
- data/lib/simple_form/wrappers.rb +1 -1
- data/lib/simple_form.rb +43 -47
- data/test/action_view_extensions/builder_test.rb +78 -92
- data/test/action_view_extensions/form_helper_test.rb +25 -16
- data/test/components/label_test.rb +46 -46
- data/test/form_builder/association_test.rb +47 -29
- data/test/form_builder/button_test.rb +4 -4
- data/test/form_builder/error_notification_test.rb +8 -8
- data/test/form_builder/error_test.rb +12 -12
- data/test/form_builder/general_test.rb +71 -52
- data/test/form_builder/hint_test.rb +22 -22
- data/test/form_builder/input_field_test.rb +29 -12
- data/test/form_builder/label_test.rb +7 -7
- data/test/form_builder/wrapper_test.rb +21 -21
- data/test/inputs/boolean_input_test.rb +35 -23
- data/test/inputs/collection_check_boxes_input_test.rb +66 -55
- data/test/inputs/collection_radio_buttons_input_test.rb +81 -79
- data/test/inputs/collection_select_input_test.rb +76 -45
- data/test/inputs/datetime_input_test.rb +17 -11
- data/test/inputs/disabled_test.rb +10 -10
- data/test/inputs/discovery_test.rb +4 -4
- data/test/inputs/file_input_test.rb +1 -1
- data/test/inputs/general_test.rb +28 -12
- data/test/inputs/grouped_collection_select_input_test.rb +33 -20
- data/test/inputs/hidden_input_test.rb +3 -2
- data/test/inputs/numeric_input_test.rb +3 -3
- data/test/inputs/priority_input_test.rb +9 -3
- data/test/inputs/readonly_test.rb +12 -12
- data/test/inputs/required_test.rb +5 -5
- data/test/inputs/string_input_test.rb +15 -25
- data/test/inputs/text_input_test.rb +1 -1
- data/test/support/misc_helpers.rb +46 -24
- data/test/support/mock_controller.rb +6 -6
- data/test/support/models.rb +80 -62
- data/test/test_helper.rb +17 -34
- metadata +31 -29
- data/lib/simple_form/core_ext/hash.rb +0 -16
| @@ -6,15 +6,6 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 6 6 | 
             
                SimpleForm::Inputs::CollectionRadioButtonsInput.reset_i18n_cache :boolean_collection
         | 
| 7 7 | 
             
              end
         | 
| 8 8 |  | 
| 9 | 
            -
              test 'input :as => :radio is deprecated in favor of :as => :radio_buttons' do
         | 
| 10 | 
            -
                assert_deprecated "[SIMPLE_FORM] Using `:as => :radio` as " \
         | 
| 11 | 
            -
                      "input type is deprecated, please change it to `:as => :radio_buttons`." do
         | 
| 12 | 
            -
                  with_input_for @user, :active, :radio
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                assert_select 'input[type=radio].radio_buttons', :count => 2
         | 
| 16 | 
            -
              end
         | 
| 17 | 
            -
             | 
| 18 9 | 
             
              test 'input should generate boolean radio buttons by default for radio types' do
         | 
| 19 10 | 
             
                with_input_for @user, :active, :radio_buttons
         | 
| 20 11 | 
             
                assert_select 'input[type=radio][value=true].radio_buttons#user_active_true'
         | 
| @@ -28,7 +19,7 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 28 19 | 
             
              end
         | 
| 29 20 |  | 
| 30 21 | 
             
              test 'input as radio should use i18n to translate internal labels' do
         | 
| 31 | 
            -
                store_translations(:en, : | 
| 22 | 
            +
                store_translations(:en, simple_form: { yes: 'Sim', no: 'Não' }) do
         | 
| 32 23 | 
             
                  with_input_for @user, :active, :radio_buttons
         | 
| 33 24 | 
             
                  assert_select 'label[for=user_active_true]', 'Sim'
         | 
| 34 25 | 
             
                  assert_select 'label[for=user_active_false]', 'Não'
         | 
| @@ -36,13 +27,13 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 36 27 | 
             
              end
         | 
| 37 28 |  | 
| 38 29 | 
             
              test 'input radio should not include for attribute by default' do
         | 
| 39 | 
            -
                with_input_for @user, :gender, :radio_buttons, : | 
| 30 | 
            +
                with_input_for @user, :gender, :radio_buttons, collection: [:male, :female]
         | 
| 40 31 | 
             
                assert_select 'label'
         | 
| 41 32 | 
             
                assert_no_select 'label[for=user_gender]'
         | 
| 42 33 | 
             
              end
         | 
| 43 34 |  | 
| 44 35 | 
             
              test 'input radio should include for attribute when giving as html option' do
         | 
| 45 | 
            -
                with_input_for @user, :gender, :radio_buttons, : | 
| 36 | 
            +
                with_input_for @user, :gender, :radio_buttons, collection: [:male, :female], label_html: { for: 'gender' }
         | 
| 46 37 | 
             
                assert_select 'label[for=gender]'
         | 
| 47 38 | 
             
              end
         | 
| 48 39 |  | 
| @@ -54,7 +45,7 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 54 45 | 
             
              end
         | 
| 55 46 |  | 
| 56 47 | 
             
              test 'input should allow overriding collection for radio types' do
         | 
| 57 | 
            -
                with_input_for @user, :name, :radio_buttons, : | 
| 48 | 
            +
                with_input_for @user, :name, :radio_buttons, collection: ['Jose', 'Carlos']
         | 
| 58 49 | 
             
                assert_select 'input[type=radio][value=Jose]'
         | 
| 59 50 | 
             
                assert_select 'input[type=radio][value=Carlos]'
         | 
| 60 51 | 
             
                assert_select 'label.collection_radio_buttons', 'Jose'
         | 
| @@ -62,10 +53,10 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 62 53 | 
             
              end
         | 
| 63 54 |  | 
| 64 55 | 
             
              test 'input should do automatic collection translation for radio types using defaults key' do
         | 
| 65 | 
            -
                store_translations(:en, : | 
| 66 | 
            -
                  : | 
| 56 | 
            +
                store_translations(:en, simple_form: { options: { defaults: {
         | 
| 57 | 
            +
                  gender: { male: 'Male', female: 'Female'}
         | 
| 67 58 | 
             
                } } } ) do
         | 
| 68 | 
            -
                  with_input_for @user, :gender, :radio_buttons, : | 
| 59 | 
            +
                  with_input_for @user, :gender, :radio_buttons, collection: [:male, :female]
         | 
| 69 60 | 
             
                  assert_select 'input[type=radio][value=male]'
         | 
| 70 61 | 
             
                  assert_select 'input[type=radio][value=female]'
         | 
| 71 62 | 
             
                  assert_select 'label.collection_radio_buttons', 'Male'
         | 
| @@ -74,10 +65,10 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 74 65 | 
             
              end
         | 
| 75 66 |  | 
| 76 67 | 
             
              test 'input should do automatic collection translation for radio types using specific object key' do
         | 
| 77 | 
            -
                store_translations(:en, : | 
| 78 | 
            -
                  : | 
| 68 | 
            +
                store_translations(:en, simple_form: { options: { user: {
         | 
| 69 | 
            +
                  gender: { male: 'Male', female: 'Female'}
         | 
| 79 70 | 
             
                } } } ) do
         | 
| 80 | 
            -
                  with_input_for @user, :gender, :radio_buttons, : | 
| 71 | 
            +
                  with_input_for @user, :gender, :radio_buttons, collection: [:male, :female]
         | 
| 81 72 | 
             
                  assert_select 'input[type=radio][value=male]'
         | 
| 82 73 | 
             
                  assert_select 'input[type=radio][value=female]'
         | 
| 83 74 | 
             
                  assert_select 'label.collection_radio_buttons', 'Male'
         | 
| @@ -87,12 +78,17 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 87 78 |  | 
| 88 79 | 
             
              test 'input should mark the current radio value by default' do
         | 
| 89 80 | 
             
                @user.name = "Carlos"
         | 
| 90 | 
            -
                with_input_for @user, :name, :radio_buttons, : | 
| 81 | 
            +
                with_input_for @user, :name, :radio_buttons, collection: ['Jose', 'Carlos']
         | 
| 91 82 | 
             
                assert_select 'input[type=radio][value=Carlos][checked=checked]'
         | 
| 92 83 | 
             
              end
         | 
| 93 84 |  | 
| 85 | 
            +
              test 'input should accept html options as the last element of collection' do
         | 
| 86 | 
            +
                with_input_for @user, :name, :radio_buttons, collection: [['Jose', 'jose', class: 'foo']]
         | 
| 87 | 
            +
                assert_select 'input.foo[type=radio][value=jose]'
         | 
| 88 | 
            +
              end
         | 
| 89 | 
            +
             | 
| 94 90 | 
             
              test 'input should allow using a collection with text/value arrays' do
         | 
| 95 | 
            -
                with_input_for @user, :name, :radio_buttons, : | 
| 91 | 
            +
                with_input_for @user, :name, :radio_buttons, collection: [['Jose', 'jose'], ['Carlos', 'carlos']]
         | 
| 96 92 | 
             
                assert_select 'input[type=radio][value=jose]'
         | 
| 97 93 | 
             
                assert_select 'input[type=radio][value=carlos]'
         | 
| 98 94 | 
             
                assert_select 'label.collection_radio_buttons', 'Jose'
         | 
| @@ -100,32 +96,32 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 100 96 | 
             
              end
         | 
| 101 97 |  | 
| 102 98 | 
             
              test 'input should allow using a collection with a Proc' do
         | 
| 103 | 
            -
                with_input_for @user, :name, :radio_buttons, : | 
| 99 | 
            +
                with_input_for @user, :name, :radio_buttons, collection: Proc.new { ['Jose', 'Carlos' ] }
         | 
| 104 100 | 
             
                assert_select 'label.collection_radio_buttons', 'Jose'
         | 
| 105 101 | 
             
                assert_select 'label.collection_radio_buttons', 'Carlos'
         | 
| 106 102 | 
             
              end
         | 
| 107 103 |  | 
| 108 104 | 
             
              test 'input should allow overriding only label method for collections' do
         | 
| 109 105 | 
             
                with_input_for @user, :name, :radio_buttons,
         | 
| 110 | 
            -
                                      : | 
| 111 | 
            -
                                      : | 
| 106 | 
            +
                                      collection: ['Jose', 'Carlos'],
         | 
| 107 | 
            +
                                      label_method: :upcase
         | 
| 112 108 | 
             
                assert_select 'label.collection_radio_buttons', 'JOSE'
         | 
| 113 109 | 
             
                assert_select 'label.collection_radio_buttons', 'CARLOS'
         | 
| 114 110 | 
             
              end
         | 
| 115 111 |  | 
| 116 112 | 
             
              test 'input should allow overriding only value method for collections' do
         | 
| 117 113 | 
             
                with_input_for @user, :name, :radio_buttons,
         | 
| 118 | 
            -
                                      : | 
| 119 | 
            -
                                      : | 
| 114 | 
            +
                                      collection: ['Jose', 'Carlos'],
         | 
| 115 | 
            +
                                      value_method: :upcase
         | 
| 120 116 | 
             
                assert_select 'input[type=radio][value=JOSE]'
         | 
| 121 117 | 
             
                assert_select 'input[type=radio][value=CARLOS]'
         | 
| 122 118 | 
             
              end
         | 
| 123 119 |  | 
| 124 120 | 
             
              test 'input should allow overriding label and value method for collections' do
         | 
| 125 121 | 
             
                with_input_for @user, :name, :radio_buttons,
         | 
| 126 | 
            -
                                      : | 
| 127 | 
            -
                                      : | 
| 128 | 
            -
                                      : | 
| 122 | 
            +
                                      collection: ['Jose', 'Carlos'],
         | 
| 123 | 
            +
                                      label_method: :upcase,
         | 
| 124 | 
            +
                                      value_method: :downcase
         | 
| 129 125 | 
             
                assert_select 'input[type=radio][value=jose]'
         | 
| 130 126 | 
             
                assert_select 'input[type=radio][value=carlos]'
         | 
| 131 127 | 
             
                assert_select 'label.collection_radio_buttons', 'JOSE'
         | 
| @@ -134,9 +130,9 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 134 130 |  | 
| 135 131 | 
             
              test 'input should allow overriding label and value method using a lambda for collections' do
         | 
| 136 132 | 
             
                with_input_for @user, :name, :radio_buttons,
         | 
| 137 | 
            -
                                      : | 
| 138 | 
            -
                                      : | 
| 139 | 
            -
                                      : | 
| 133 | 
            +
                                      collection: ['Jose', 'Carlos'],
         | 
| 134 | 
            +
                                      label_method: lambda { |i| i.upcase },
         | 
| 135 | 
            +
                                      value_method: lambda { |i| i.downcase }
         | 
| 140 136 | 
             
                assert_select 'input[type=radio][value=jose]'
         | 
| 141 137 | 
             
                assert_select 'input[type=radio][value=carlos]'
         | 
| 142 138 | 
             
                assert_select 'label.collection_radio_buttons', 'JOSE'
         | 
| @@ -144,108 +140,114 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 144 140 | 
             
              end
         | 
| 145 141 |  | 
| 146 142 | 
             
              test 'collection input with radio type should generate required html attribute' do
         | 
| 147 | 
            -
                with_input_for @user, :name, :radio_buttons, : | 
| 143 | 
            +
                with_input_for @user, :name, :radio_buttons, collection: ['Jose', 'Carlos']
         | 
| 148 144 | 
             
                assert_select 'input[type=radio].required'
         | 
| 149 145 | 
             
                assert_select 'input[type=radio][required]'
         | 
| 150 146 | 
             
              end
         | 
| 151 147 |  | 
| 148 | 
            +
              test 'collection input with radio type should generate aria-required html attribute' do
         | 
| 149 | 
            +
                with_input_for @user, :name, :radio_buttons, collection: ['Jose', 'Carlos']
         | 
| 150 | 
            +
                assert_select 'input[type=radio].required'
         | 
| 151 | 
            +
                assert_select 'input[type=radio][aria-required=true]'
         | 
| 152 | 
            +
              end
         | 
| 153 | 
            +
             | 
| 152 154 | 
             
              test 'input radio does not wrap the collection by default' do
         | 
| 153 155 | 
             
                with_input_for @user, :active, :radio_buttons
         | 
| 154 156 |  | 
| 155 | 
            -
                assert_select 'form input[type=radio]', : | 
| 157 | 
            +
                assert_select 'form input[type=radio]', count: 2
         | 
| 156 158 | 
             
                assert_no_select 'form ul'
         | 
| 157 159 | 
             
              end
         | 
| 158 160 |  | 
| 159 161 | 
             
              test 'input radio wraps the collection in the configured collection wrapper tag' do
         | 
| 160 | 
            -
                swap SimpleForm, : | 
| 162 | 
            +
                swap SimpleForm, collection_wrapper_tag: :ul do
         | 
| 161 163 | 
             
                  with_input_for @user, :active, :radio_buttons
         | 
| 162 164 |  | 
| 163 | 
            -
                  assert_select 'form ul input[type=radio]', : | 
| 165 | 
            +
                  assert_select 'form ul input[type=radio]', count: 2
         | 
| 164 166 | 
             
                end
         | 
| 165 167 | 
             
              end
         | 
| 166 168 |  | 
| 167 169 | 
             
              test 'input radio does not wrap the collection when configured with falsy values' do
         | 
| 168 | 
            -
                swap SimpleForm, : | 
| 170 | 
            +
                swap SimpleForm, collection_wrapper_tag: false do
         | 
| 169 171 | 
             
                  with_input_for @user, :active, :radio_buttons
         | 
| 170 172 |  | 
| 171 | 
            -
                  assert_select 'form input[type=radio]', : | 
| 173 | 
            +
                  assert_select 'form input[type=radio]', count: 2
         | 
| 172 174 | 
             
                  assert_no_select 'form ul'
         | 
| 173 175 | 
             
                end
         | 
| 174 176 | 
             
              end
         | 
| 175 177 |  | 
| 176 178 | 
             
              test 'input radio allows overriding the collection wrapper tag at input level' do
         | 
| 177 | 
            -
                swap SimpleForm, : | 
| 178 | 
            -
                  with_input_for @user, :active, :radio_buttons, : | 
| 179 | 
            +
                swap SimpleForm, collection_wrapper_tag: :ul do
         | 
| 180 | 
            +
                  with_input_for @user, :active, :radio_buttons, collection_wrapper_tag: :section
         | 
| 179 181 |  | 
| 180 | 
            -
                  assert_select 'form section input[type=radio]', : | 
| 182 | 
            +
                  assert_select 'form section input[type=radio]', count: 2
         | 
| 181 183 | 
             
                  assert_no_select 'form ul'
         | 
| 182 184 | 
             
                end
         | 
| 183 185 | 
             
              end
         | 
| 184 186 |  | 
| 185 187 | 
             
              test 'input radio allows disabling the collection wrapper tag at input level' do
         | 
| 186 | 
            -
                swap SimpleForm, : | 
| 187 | 
            -
                  with_input_for @user, :active, :radio_buttons, : | 
| 188 | 
            +
                swap SimpleForm, collection_wrapper_tag: :ul do
         | 
| 189 | 
            +
                  with_input_for @user, :active, :radio_buttons, collection_wrapper_tag: false
         | 
| 188 190 |  | 
| 189 | 
            -
                  assert_select 'form input[type=radio]', : | 
| 191 | 
            +
                  assert_select 'form input[type=radio]', count: 2
         | 
| 190 192 | 
             
                  assert_no_select 'form ul'
         | 
| 191 193 | 
             
                end
         | 
| 192 194 | 
             
              end
         | 
| 193 195 |  | 
| 194 196 | 
             
              test 'input radio renders the wrapper tag with the configured wrapper class' do
         | 
| 195 | 
            -
                swap SimpleForm, : | 
| 197 | 
            +
                swap SimpleForm, collection_wrapper_tag: :ul, collection_wrapper_class: 'inputs-list' do
         | 
| 196 198 | 
             
                  with_input_for @user, :active, :radio_buttons
         | 
| 197 199 |  | 
| 198 | 
            -
                  assert_select 'form ul.inputs-list input[type=radio]', : | 
| 200 | 
            +
                  assert_select 'form ul.inputs-list input[type=radio]', count: 2
         | 
| 199 201 | 
             
                end
         | 
| 200 202 | 
             
              end
         | 
| 201 203 |  | 
| 202 204 | 
             
              test 'input radio allows giving wrapper class at input level only' do
         | 
| 203 | 
            -
                swap SimpleForm, : | 
| 204 | 
            -
                  with_input_for @user, :active, :radio_buttons, : | 
| 205 | 
            +
                swap SimpleForm, collection_wrapper_tag: :ul do
         | 
| 206 | 
            +
                  with_input_for @user, :active, :radio_buttons, collection_wrapper_class: 'items-list'
         | 
| 205 207 |  | 
| 206 | 
            -
                  assert_select 'form ul.items-list input[type=radio]', : | 
| 208 | 
            +
                  assert_select 'form ul.items-list input[type=radio]', count: 2
         | 
| 207 209 | 
             
                end
         | 
| 208 210 | 
             
              end
         | 
| 209 211 |  | 
| 210 212 | 
             
              test 'input radio uses both configured and given wrapper classes for wrapper tag' do
         | 
| 211 | 
            -
                swap SimpleForm, : | 
| 212 | 
            -
                  with_input_for @user, :active, :radio_buttons, : | 
| 213 | 
            +
                swap SimpleForm, collection_wrapper_tag: :ul, collection_wrapper_class: 'inputs-list' do
         | 
| 214 | 
            +
                  with_input_for @user, :active, :radio_buttons, collection_wrapper_class: 'items-list'
         | 
| 213 215 |  | 
| 214 | 
            -
                  assert_select 'form ul.inputs-list.items-list input[type=radio]', : | 
| 216 | 
            +
                  assert_select 'form ul.inputs-list.items-list input[type=radio]', count: 2
         | 
| 215 217 | 
             
                end
         | 
| 216 218 | 
             
              end
         | 
| 217 219 |  | 
| 218 220 | 
             
              test 'input radio wraps each item in the configured item wrapper tag' do
         | 
| 219 | 
            -
                swap SimpleForm, : | 
| 221 | 
            +
                swap SimpleForm, item_wrapper_tag: :li do
         | 
| 220 222 | 
             
                  with_input_for @user, :active, :radio_buttons
         | 
| 221 223 |  | 
| 222 | 
            -
                  assert_select 'form li input[type=radio]', : | 
| 224 | 
            +
                  assert_select 'form li input[type=radio]', count: 2
         | 
| 223 225 | 
             
                end
         | 
| 224 226 | 
             
              end
         | 
| 225 227 |  | 
| 226 228 | 
             
              test 'input radio does not wrap items when configured with falsy values' do
         | 
| 227 | 
            -
                swap SimpleForm, : | 
| 229 | 
            +
                swap SimpleForm, item_wrapper_tag: false do
         | 
| 228 230 | 
             
                  with_input_for @user, :active, :radio_buttons
         | 
| 229 231 |  | 
| 230 | 
            -
                  assert_select 'form input[type=radio]', : | 
| 232 | 
            +
                  assert_select 'form input[type=radio]', count: 2
         | 
| 231 233 | 
             
                  assert_no_select 'form li'
         | 
| 232 234 | 
             
                end
         | 
| 233 235 | 
             
              end
         | 
| 234 236 |  | 
| 235 237 | 
             
              test 'input radio allows overriding the item wrapper tag at input level' do
         | 
| 236 | 
            -
                swap SimpleForm, : | 
| 237 | 
            -
                  with_input_for @user, :active, :radio_buttons, : | 
| 238 | 
            +
                swap SimpleForm, item_wrapper_tag: :li do
         | 
| 239 | 
            +
                  with_input_for @user, :active, :radio_buttons, item_wrapper_tag: :dl
         | 
| 238 240 |  | 
| 239 | 
            -
                  assert_select 'form dl input[type=radio]', : | 
| 241 | 
            +
                  assert_select 'form dl input[type=radio]', count: 2
         | 
| 240 242 | 
             
                  assert_no_select 'form li'
         | 
| 241 243 | 
             
                end
         | 
| 242 244 | 
             
              end
         | 
| 243 245 |  | 
| 244 246 | 
             
              test 'input radio allows disabling the item wrapper tag at input level' do
         | 
| 245 | 
            -
                swap SimpleForm, : | 
| 246 | 
            -
                  with_input_for @user, :active, :radio_buttons, : | 
| 247 | 
            +
                swap SimpleForm, item_wrapper_tag: :ul do
         | 
| 248 | 
            +
                  with_input_for @user, :active, :radio_buttons, item_wrapper_tag: false
         | 
| 247 249 |  | 
| 248 | 
            -
                  assert_select 'form input[type=radio]', : | 
| 250 | 
            +
                  assert_select 'form input[type=radio]', count: 2
         | 
| 249 251 | 
             
                  assert_no_select 'form li'
         | 
| 250 252 | 
             
                end
         | 
| 251 253 | 
             
              end
         | 
| @@ -253,41 +255,41 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 253 255 | 
             
              test 'input radio wraps items in a span tag by default' do
         | 
| 254 256 | 
             
                with_input_for @user, :active, :radio_buttons
         | 
| 255 257 |  | 
| 256 | 
            -
                assert_select 'form span input[type=radio]', : | 
| 258 | 
            +
                assert_select 'form span input[type=radio]', count: 2
         | 
| 257 259 | 
             
              end
         | 
| 258 260 |  | 
| 259 261 | 
             
              test 'input radio renders the item wrapper tag with a default class "radio"' do
         | 
| 260 | 
            -
                with_input_for @user, :active, :radio_buttons, : | 
| 262 | 
            +
                with_input_for @user, :active, :radio_buttons, item_wrapper_tag: :li
         | 
| 261 263 |  | 
| 262 | 
            -
                assert_select 'form li.radio input[type=radio]', : | 
| 264 | 
            +
                assert_select 'form li.radio input[type=radio]', count: 2
         | 
| 263 265 | 
             
              end
         | 
| 264 266 |  | 
| 265 267 | 
             
              test 'input radio renders the item wrapper tag with the configured item wrapper class' do
         | 
| 266 | 
            -
                swap SimpleForm, : | 
| 268 | 
            +
                swap SimpleForm, item_wrapper_tag: :li, item_wrapper_class: 'item' do
         | 
| 267 269 | 
             
                  with_input_for @user, :active, :radio_buttons
         | 
| 268 270 |  | 
| 269 | 
            -
                  assert_select 'form li.radio.item input[type=radio]', : | 
| 271 | 
            +
                  assert_select 'form li.radio.item input[type=radio]', count: 2
         | 
| 270 272 | 
             
                end
         | 
| 271 273 | 
             
              end
         | 
| 272 274 |  | 
| 273 275 | 
             
              test 'input radio allows giving item wrapper class at input level only' do
         | 
| 274 | 
            -
                swap SimpleForm, : | 
| 275 | 
            -
                  with_input_for @user, :active, :radio_buttons, : | 
| 276 | 
            +
                swap SimpleForm, item_wrapper_tag: :li do
         | 
| 277 | 
            +
                  with_input_for @user, :active, :radio_buttons, item_wrapper_class: 'item'
         | 
| 276 278 |  | 
| 277 | 
            -
                  assert_select 'form li.radio.item input[type=radio]', : | 
| 279 | 
            +
                  assert_select 'form li.radio.item input[type=radio]', count: 2
         | 
| 278 280 | 
             
                end
         | 
| 279 281 | 
             
              end
         | 
| 280 282 |  | 
| 281 283 | 
             
              test 'input radio uses both configured and given item wrapper classes for item wrapper tag' do
         | 
| 282 | 
            -
                swap SimpleForm, : | 
| 283 | 
            -
                  with_input_for @user, :active, :radio_buttons, : | 
| 284 | 
            +
                swap SimpleForm, item_wrapper_tag: :li, item_wrapper_class: 'item' do
         | 
| 285 | 
            +
                  with_input_for @user, :active, :radio_buttons, item_wrapper_class: 'inline'
         | 
| 284 286 |  | 
| 285 | 
            -
                  assert_select 'form li.radio.item.inline input[type=radio]', : | 
| 287 | 
            +
                  assert_select 'form li.radio.item.inline input[type=radio]', count: 2
         | 
| 286 288 | 
             
                end
         | 
| 287 289 | 
             
              end
         | 
| 288 290 |  | 
| 289 291 | 
             
              test 'input radio respects the nested boolean style config, generating nested label > input' do
         | 
| 290 | 
            -
                swap SimpleForm, : | 
| 292 | 
            +
                swap SimpleForm, boolean_style: :nested do
         | 
| 291 293 | 
             
                  with_input_for @user, :active, :radio_buttons
         | 
| 292 294 |  | 
| 293 295 | 
             
                  assert_select 'label.radio > input#user_active_true[type=radio]'
         | 
| @@ -299,7 +301,7 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 299 301 | 
             
              end
         | 
| 300 302 |  | 
| 301 303 | 
             
              test 'input radio with nested style overrides configured item wrapper tag, forcing the :label' do
         | 
| 302 | 
            -
                swap SimpleForm, : | 
| 304 | 
            +
                swap SimpleForm, boolean_style: :nested, item_wrapper_tag: :li do
         | 
| 303 305 | 
             
                  with_input_for @user, :active, :radio_buttons
         | 
| 304 306 |  | 
| 305 307 | 
             
                  assert_select 'label.radio > input'
         | 
| @@ -308,8 +310,8 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 308 310 | 
             
              end
         | 
| 309 311 |  | 
| 310 312 | 
             
              test 'input radio with nested style overrides given item wrapper tag, forcing the :label' do
         | 
| 311 | 
            -
                swap SimpleForm, : | 
| 312 | 
            -
                  with_input_for @user, :active, :radio_buttons, : | 
| 313 | 
            +
                swap SimpleForm, boolean_style: :nested do
         | 
| 314 | 
            +
                  with_input_for @user, :active, :radio_buttons, item_wrapper_tag: :li
         | 
| 313 315 |  | 
| 314 316 | 
             
                  assert_select 'label.radio > input'
         | 
| 315 317 | 
             
                  assert_no_select 'li'
         | 
| @@ -317,8 +319,8 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase | |
| 317 319 | 
             
              end
         | 
| 318 320 |  | 
| 319 321 | 
             
              test 'input radio with nested style accepts giving extra wrapper classes' do
         | 
| 320 | 
            -
                swap SimpleForm, : | 
| 321 | 
            -
                  with_input_for @user, :active, :radio_buttons, : | 
| 322 | 
            +
                swap SimpleForm, boolean_style: :nested do
         | 
| 323 | 
            +
                  with_input_for @user, :active, :radio_buttons, item_wrapper_class: "inline"
         | 
| 322 324 |  | 
| 323 325 | 
             
                  assert_select 'label.radio.inline > input'
         | 
| 324 326 | 
             
                end
         |