Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

141 lines (117 sloc) 5.707 kb
# encoding: UTF-8
require 'test_helper'
class BooleanInputTest < ActionView::TestCase
test 'input should generate a checkbox by default for boolean attributes' do
with_input_for @user, :active, :boolean
assert_select 'input[type=checkbox].boolean#user_active'
assert_select 'label.boolean.optional', 'Active'
end
test 'input does not generate the label with the checkbox when label option is false' do
with_input_for @user, :active, :boolean, :label => false
assert_select 'input[type=checkbox].boolean#user_active'
assert_no_select 'label'
end
test 'input uses custom checked value' do
@user.action = 'on'
with_input_for @user, :action, :boolean, :checked_value => 'on', :unchecked_value => 'off'
assert_select 'input[type=checkbox][value=on][checked=checked]'
end
test 'input uses custom unchecked value' do
@user.action = 'off'
with_input_for @user, :action, :boolean, :checked_value => 'on', :unchecked_value => 'off'
assert_select 'input[type=checkbox][value=on]'
assert_no_select 'input[checked=checked][value=on]'
end
test 'input generates hidden input with custom unchecked value' do
with_input_for @user, :action, :boolean, :checked_value => 'on', :unchecked_value => 'off'
assert_select 'input[type=hidden][value=off]'
end
test 'input uses inline boolean style by default' do
with_input_for @user, :active, :boolean
assert_select 'input.boolean + label.boolean.optional'
assert_no_select 'label > input'
end
test 'input allows changing default boolean style config to nested, generating a default label and a manual hidden field for checkbox' do
swap SimpleForm, :boolean_style => :nested do
with_input_for @user, :active, :boolean
assert_select 'label[for=user_active]', 'Active'
assert_select 'label.boolean > input.boolean'
assert_no_select 'input[type=checkbox] + label'
end
end
test 'input boolean with nested allows :inline_label' do
swap SimpleForm, :boolean_style => :nested do
with_input_for @user, :active, :boolean, :label => false, :inline_label => 'I am so inline.'
assert_select 'label.checkbox', :text => 'I am so inline.'
end
end
test 'input boolean with nested style creates an inline label using the default label text when inline_label option set to true' do
swap SimpleForm, :boolean_style => :nested do
with_input_for @user, :active, :boolean, :label => false, :inline_label => true
assert_select 'label.checkbox', :text => 'Active'
end
end
test 'input boolean with nested generates a manual hidden field for checkbox outside the label, to recreate Rails functionality with valid html5' do
swap SimpleForm, :boolean_style => :nested do
with_input_for @user, :active, :boolean
assert_select "input[type=hidden][name='user[active]'] + label.boolean > input.boolean"
assert_no_select 'input[type=checkbox] + label'
end
end
test 'input boolean with nested generates a disabled hidden field for checkbox outside the label, if the field is disabled' do
swap SimpleForm, :boolean_style => :nested do
with_input_for @user, :active, :boolean, :disabled => true
assert_select "input[type=hidden][name='user[active]'][disabled] + label.boolean > input.boolean[disabled]"
end
end
test 'input accepts changing boolean style to nested through given options' do
with_input_for @user, :active, :boolean, :boolean_style => :nested
assert_select 'label[for=user_active]', 'Active'
assert_select 'label.boolean > input.boolean'
assert_no_select 'input[type=checkbox] + label'
end
test 'input accepts changing boolean style to inline through given options, when default is nested' do
swap SimpleForm, :boolean_style => :nested do
with_input_for @user, :active, :boolean, :boolean_style => :inline
assert_select 'label[for=user_active]', 'Active'
assert_select 'input.boolean + label.boolean'
assert_no_select 'label > input'
end
end
test 'input with nested style allows disabling label' do
swap SimpleForm, :boolean_style => :nested do
with_input_for @user, :active, :boolean, :label => false
assert_select 'input.boolean'
assert_no_select 'label.boolean'
end
end
test 'input with nested style allows customizing input_html' do
swap SimpleForm, :boolean_style => :nested do
with_input_for @user, :active, :boolean, :input_html => { :name => 'active_user' }
assert_select "input[type=hidden][name=active_user] + label.boolean > input.boolean[name=active_user]"
end
end
test 'input boolean works using :input only in wrapper config (no label_input)' do
swap_wrapper do
with_input_for @user, :active, :boolean
assert_select 'label.boolean + input[type=hidden] + input.boolean'
assert_no_select 'label.checkbox'
end
end
test 'input boolean with nested style works using :input only in wrapper config (no label_input), adding the extra "checkbox" label wrapper' do
swap_wrapper do
swap SimpleForm, :boolean_style => :nested do
with_input_for @user, :active, :boolean
assert_select 'label.boolean + input[type=hidden] + label.checkbox > input.boolean'
end
end
end
test 'input boolean with nested style works using :label_input in wrapper config, adding "checkbox" class to label' do
swap_wrapper :default, self.custom_wrapper_without_top_level do
swap SimpleForm, :boolean_style => :nested do
with_input_for @user, :active, :boolean
assert_select 'input[type=hidden] + label.boolean.checkbox > input.boolean'
end
end
end
end
Jump to Line
Something went wrong with that request. Please try again.