require File.dirname(__FILE__) + '/test_helper'
class MultipleSelectTest < Test::Unit::TestCase #:nodoc:
include FightTheMelons::Helpers::FormMultipleSelectHelper
fixtures :nodes
# Have to fake the default static variables because they jump from one test to
# another. Yes, this is bad bad bad coding.
def setup
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.outer_class = nil
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.inner_class = nil
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.level_class = nil
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.alternate_class = 'alt'
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.alternate = false
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.position = :right
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.include_hidden_field = false
end
def test_cfms_empty
assert_equal "", checkboxes_for_multiple_select('name', [])
end
def test_cfms_one_item
assert_dom_equal "
" +
" " +
"test ",
checkboxes_for_multiple_select('name', ['test'])
end
def test_cfms_two_items
assert_dom_equal "" +
" " +
"test1 \n" +
"" +
" " +
"test2 ",
checkboxes_for_multiple_select('name', ['test1', 'test2'])
end
def test_cfms_array_not_strings
assert_dom_equal "" +
" " +
"1 \n" +
"" +
" " +
"2 ",
checkboxes_for_multiple_select('name', [1, 2])
end
def test_cfms_text_value_array
assert_dom_equal "" +
" " +
"first test \n" +
"" +
" " +
"second test ",
checkboxes_for_multiple_select('name', [['first test', 1], ['second test', 2]])
end
def test_cfms_hash
assert_dom_equal "" +
" " +
"second test \n" +
"" +
" " +
"first test ",
checkboxes_for_multiple_select('name', {'first test' => 1, 'second test' => 2})
end
def test_cfms_array_with_selected
assert_dom_equal "" +
" " +
"1 \n" +
"" +
" " +
"2 ",
checkboxes_for_multiple_select('name', [1, 2], [1])
assert_dom_equal "" +
" " +
"1 \n" +
"" +
" " +
"2 ",
checkboxes_for_multiple_select('name', [1, 2], [2])
assert_dom_equal "" +
" " +
"1 \n" +
"" +
" " +
"2 ",
checkboxes_for_multiple_select('name', [1, 2], [1,2])
end
def test_cfms_text_value_array_with_selected
assert_dom_equal "" +
" " +
"first test \n" +
"" +
" " +
"second test ",
checkboxes_for_multiple_select('name', [['first test', 1], ['second test', 2]], [1])
assert_dom_equal "" +
" " +
"first test \n" +
"" +
" " +
"second test ",
checkboxes_for_multiple_select('name', [['first test', 1], ['second test', 2]], [2])
assert_dom_equal "" +
" " +
"first test \n" +
"" +
" " +
"second test ",
checkboxes_for_multiple_select('name', [['first test', 1], ['second test', 2]], [1,2])
end
def test_cfms_hash_with_selected
assert_dom_equal "" +
" " +
"Spain \n" +
"" +
" " +
"England ",
checkboxes_for_multiple_select('name', { 'Spain' => 'esp', 'England' => 'eng' }, ['esp'])
assert_dom_equal "" +
" " +
"Spain \n" +
"" +
" " +
"England ",
checkboxes_for_multiple_select('name', { 'Spain' => 'esp', 'England' => 'eng' }, ['eng'])
assert_dom_equal "" +
" " +
"Spain \n" +
"" +
" " +
"England ",
checkboxes_for_multiple_select('name', { 'Spain' => 'esp', 'England' => 'eng' }, ['esp', 'eng'])
end
def test_cfms_position
assert_dom_equal "" +
" " +
"test ",
checkboxes_for_multiple_select('name', ['test'], [], :position => :right)
assert_dom_equal "" +
"test " +
" ",
checkboxes_for_multiple_select('name', ['test'], [], :position => :left)
end
def test_cfms_position_variable
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.position = :right
assert_dom_equal "" +
" " +
"test ",
checkboxes_for_multiple_select('name', ['test'], [])
assert_dom_equal "" +
"test " +
" ",
checkboxes_for_multiple_select('name', ['test'], [], :position => :left)
end
def test_cfms_inner_class
assert_dom_equal "" +
" " +
"test ",
checkboxes_for_multiple_select('name', ['test'], [], :inner_class => 'testclass')
end
def test_cfms_inner_class_variable
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.inner_class = 'classtest'
assert_dom_equal "" +
" " +
"test ",
checkboxes_for_multiple_select('name', ['test'], [])
assert_dom_equal "" +
" " +
"test ",
checkboxes_for_multiple_select('name', ['test'], [], :inner_class => 'testclass')
end
def test_cfms_alternate
assert_dom_equal "" +
" " +
"test1 \n" +
"" +
" " +
"test2 ",
checkboxes_for_multiple_select('name', ['test1', 'test2'], [], :alternate => true)
assert_dom_equal "" +
" " +
"test1 \n" +
"" +
" " +
"test2 ",
checkboxes_for_multiple_select('name', ['test1', 'test2'], [], :alternate => true, :inner_class => 'testclass')
assert_dom_equal "" +
" " +
"test1 \n" +
"" +
" " +
"test2 ",
checkboxes_for_multiple_select('name', ['test1', 'test2'], [], :alternate => true, :alternate_class => 'alternative')
assert_dom_equal "" +
" " +
"test1 \n" +
"" +
" " +
"test2 ",
checkboxes_for_multiple_select('name', ['test1', 'test2'], [], :alternate => true, :initial_alternate => false)
assert_dom_equal "" +
" " +
"test1 \n" +
"" +
" " +
"test2 ",
checkboxes_for_multiple_select('name', ['test1', 'test2'], [], :alternate => true, :initial_alternate => true)
end
def test_cfms_alternate_variable
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.alternate = true
assert_dom_equal "" +
" " +
"test1 \n" +
"" +
" " +
"test2 ",
checkboxes_for_multiple_select('name', ['test1', 'test2'], [])
assert_dom_equal "" +
" " +
"test1 \n" +
"" +
" " +
"test2 ",
checkboxes_for_multiple_select('name', ['test1', 'test2'], [], :alternate => false)
end
def test_cfms_alternate_class_variable
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.alternate_class = 'other'
assert_dom_equal "" +
" " +
"test1 \n" +
"" +
" " +
"test2 ",
checkboxes_for_multiple_select('name', ['test1', 'test2'], [], :alternate => true)
assert_dom_equal "" +
" " +
"test1 \n" +
"" +
" " +
"test2 ",
checkboxes_for_multiple_select('name', ['test1', 'test2'], [], :alternate => true, :alternate_class => 'alternative')
end
def test_cfms_disabled
assert_dom_equal "" +
" " +
"1 \n" +
"" +
" " +
"2 ",
checkboxes_for_multiple_select('name', [1, 2], [], :disabled => false)
assert_dom_equal "" +
" " +
"1 \n" +
"" +
" " +
"2 ",
checkboxes_for_multiple_select('name', [1, 2], [], :disabled => true)
assert_dom_equal "" +
" " +
"1 \n" +
"" +
" " +
"2 ",
checkboxes_for_multiple_select('name', [1, 2], [], :disabled => [1])
end
def test_cfcfms
assert_dom_equal "" +
" " +
"Node 1 \n" +
" " +
"Node 2 \n" +
" " +
"Node 3 ",
checkboxes_from_collection_for_multiple_select('name', Node.find_all_by_parent_id(1), :id, :name)
assert_dom_equal "",
checkboxes_from_collection_for_multiple_select('name', Node.find_all_by_parent_id(33), :id, :name) # id 33 doesn't exist nor have children
end
def test_cfcms_with_selected
assert_dom_equal "" +
" " +
"Node 1 \n" +
" " +
"Node 2 \n" +
" " +
"Node 3 ",
checkboxes_from_collection_for_multiple_select('name', Node.find_all_by_parent_id(1), :id, :name, [2, 4])
end
def test_ms
assert_dom_equal "",
multiple_select('name', ['test'])
end
def test_ms_with_selected
assert_dom_equal "",
multiple_select('name', ['test1', 'test2'], :selected_items => ['test1'])
end
def test_ms_outer_class
assert_dom_equal "",
multiple_select('name', ['test'], :outer_class => 'testclass')
end
def test_ms_outer_class_variable
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.outer_class = 'classtest'
assert_dom_equal "",
multiple_select('name', ['test'])
assert_dom_equal "",
multiple_select('name', ['test'], :outer_class => 'testclass')
end
def test_ms_hidden_field
assert_dom_equal "\n" +
" ",
multiple_select('name', ['test'], :include_hidden_field => true)
end
def test_ms_hidden_field_variable
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.include_hidden_field = true
assert_dom_equal "\n" +
" ",
multiple_select('name', ['test'])
assert_dom_equal "",
multiple_select('name', ['test'], :include_hidden_field => false)
end
def test_cms
assert_dom_equal "",
collection_multiple_select('name', Node.find_all_by_parent_id(1), :id, :name)
end
def test_cms_with_selected
assert_dom_equal "",
collection_multiple_select('name', Node.find_all_by_parent_id(1), :id, :name, :selected_items => [2, 4])
end
def test_cms_outer_class
assert_dom_equal "",
collection_multiple_select('name', Node.find_all_by_parent_id(1), :id, :name, :outer_class => 'testclass')
end
def test_cftfms
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
" " +
"Node 3.2 \n \n" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name)
end
def test_cftfms_depth
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
" " +
"Node 3.2 \n \n" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name, [], :depth => 1)
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
" " +
"Node 3.2 \n \n" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name, [], :depth => 2)
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
" " +
"Node 3.2 \n" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name, [], :depth => 0)
end
def test_cftfms_inner_class
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
"" +
" " +
"Node 3.2 \n \n" +
"" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name, [], :inner_class => 'testclass')
end
def test_cftfms_level_class
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
" " +
"Node 3.2 \n \n" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name, [], :level_class => 'level')
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
"" +
" " +
"Node 3.2 \n \n" +
"" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name, [], :level_class => 'level', :inner_class => 'testclass')
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
" " +
"Node 3.2 \n \n" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name, [], :level_class => 'level', :initial_level => 2)
end
def test_cftfms_level_class_variable
FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.level_class = 'lvl'
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
" " +
"Node 3.2 \n \n" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name, [])
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
" " +
"Node 3.2 \n \n" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name, [], :level_class => 'level')
end
def test_cftfms_child_method
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
" " +
"Node 3.2 \n \n" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name, [], :child_method => :alt_children)
end
def test_cftfms_alternate
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
" " +
"Node 3.2 \n \n" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name, [], :alternate => true)
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
" " +
"Node 3.2 \n \n" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name, [], :alternate => true, :initial_alternate => false)
assert_dom_equal "" +
" " +
"Node 3.1 \n" +
" " +
"Node 3.2 \n \n" +
" " +
"Node 3.3 ",
checkboxes_from_tree_for_multiple_select('name', nodes(:n3).children, :id, :name, [], :alternate => true, :initial_alternate => true)
end
def test_cfms_trick_name
assert_dom_equal "" +
" " +
"test1 \n" +
"" +
" " +
"test2 ",
checkboxes_for_multiple_select('object[collection_singular_ids]', ['test1', 'test2'])
end
end