ENV['RAILS_ENV'] = 'test' ENV['RAILS_ROOT'] ||= File.join(File.dirname(__FILE__), '..', '..', '..', '..') require 'test/unit' require File.expand_path(File.join(ENV['RAILS_ROOT'], 'config', 'environment')) require File.join(File.dirname(__FILE__), '..', 'lib', 'multiple_select') class MultipleSelectTest < ActionView::TestCase #:nodoc: tests FightTheMelons::Helpers::FormMultipleSelectHelper class Father def son_ids=(v) @son_ids = v end def son_ids @son_ids end end class Son def initialize(id) @son_id = id end def id @son_id end def name "Son #{@son_id}" end def self.find(arg) (1..7).map {|i| Son.new(i) } end end class Node def initialize(id, with_or_without = :without_children) @node_id = id @with_or_without = with_or_without end def name "Node #{@node_id}" end def id @node_id end def node_ids=(v) @node_ids = v end def node_ids @node_ids || [] end def alt_children children end def children case @with_or_without when :with_children [ Node.new(@node_id*10+1), Node.new(@node_id*10+2) ] when :with_more_children [ Node.new(@node_id*10+1), Node.new(@node_id*10+2, :with_children), Node.new(@node_id*10+3) ] else [] end end def self.find_all_by_parent_id(id) if id == 1 [ Node.new(2), Node.new(3), Node.new(4) ] else [] end end end # 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 end def test_cfms_empty assert_equal "", checkboxes_for_multiple_select('name', []) end def test_cfms_one_item assert_dom_equal < END end def test_cfms_two_items assert_dom_equal <
  • END end def test_cfms_array_not_strings assert_dom_equal <
  • END end def test_cfms_text_value_array assert_dom_equal <
  • END end def test_cfms_hash assert_dom_equal < 1, 'second test' => 2})
  • END end def test_cfms_array_with_selected assert_dom_equal <
  • END assert_dom_equal <
  • END assert_dom_equal <
  • END end def test_cfms_text_value_array_with_selected assert_dom_equal <
  • END assert_dom_equal <
  • END assert_dom_equal <
  • END end def test_cfms_hash_with_selected assert_dom_equal < 'esp', 'England' => 'eng' }, ['esp'])
  • END assert_dom_equal < 'esp', 'England' => 'eng' }, ['eng'])
  • END assert_dom_equal < 'esp', 'England' => 'eng' }, ['esp', 'eng'])
  • END end def test_cfms_position assert_dom_equal < :right)
  • END assert_dom_equal < :left)
  • END end def test_cfms_position_variable FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.position = :right assert_dom_equal < END assert_dom_equal < :left)
  • END end def test_cfms_inner_class assert_dom_equal < 'testclass')
  • END end def test_cfms_inner_class_variable FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.inner_class = 'classtest' assert_dom_equal < END assert_dom_equal < 'testclass')
  • END end def test_cfms_alternate assert_dom_equal < true)
  • END assert_dom_equal < true, :inner_class => 'testclass')
  • END assert_dom_equal < true, :alternate_class => 'alternative')
  • END assert_dom_equal < true, :initial_alternate => false)
  • END assert_dom_equal < true, :initial_alternate => true)
  • END end def test_cfms_alternate_variable FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.alternate = true assert_dom_equal <
  • END assert_dom_equal < false)
  • END end def test_cfms_alternate_class_variable FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.alternate_class = 'other' assert_dom_equal < true)
  • END assert_dom_equal < true, :alternate_class => 'alternative')
  • END end def test_cfms_disabled assert_dom_equal < false)
  • END assert_dom_equal < true)
  • END assert_dom_equal < [1])
  • END end def test_cfcfms assert_dom_equal <
  • END 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 <
  • END end def test_ms @f = Father.new assert_dom_equal <
  • END end def test_ms_with_outer_class @f = Father.new @f.son_ids = [] assert_dom_equal < 'test_class')
    END end def test_ms_selected @f = Father.new @f.son_ids = ['test'] assert_dom_equal <
  • END end def test_ms_empty @f = Father.new assert_dom_equal < END end def test_mst assert_dom_equal <
  • END end def test_mst_with_outer_class assert_dom_equal < 'test_class')
    END end def test_mst_with_selected_items assert_dom_equal < ['test'])
    END end def test_mst_empty assert_dom_equal < END end def test_ms_selected_items @n = Node.new(1) @n.node_ids = [2] assert_dom_equal < [2] )
    END end def test_ms_selected_items_nil @n = Node.new(1) assert_dom_equal < nil )
    END end def test_ms_outer_class_variable @f = Father.new FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.outer_class = 'classtest' assert_dom_equal <
  • END assert_dom_equal < 'testclass')
    END end def test_ms_nil_value @n = Node.new(1) assert_dom_equal < 'value1', 'item2' => 'value2'} )
    END end def test_cms @f = Father.new @f.son_ids = [] assert_dom_equal <
  • END end def test_cms_with_outer_class @f = Father.new @f.son_ids = [] assert_dom_equal < 'test_class')
    END end def test_cms_with_value @f = Father.new @f.son_ids = [4, 5, 6] assert_dom_equal <
  • END end def test_cms_without_items @f = Father.new @f.son_ids = [] assert_dom_equal < END end def test_cmst assert_dom_equal <
  • END end def test_cmst_with_outer_class assert_dom_equal < 'test_class')
    END end def test_cmst_with_selected_items assert_dom_equal < [4, 5, 6])
    END end def test_cmst_without_items assert_dom_equal < END end def test_cms_selected_items @f = Father.new @f.son_ids = [] assert_dom_equal < [1, 2, 3])
    END end def test_cms_selected_items_nil @f = Father.new @f.son_ids = [] assert_dom_equal < nil)
    END end def test_tms_node_ids @n = Node.new(1) nds = Node.new(1, :with_children) assert_dom_equal <
  • END end def test_tms_with_outer_class @n = Node.new(1) nds = Node.new(1, :with_children) assert_dom_equal < 'test_class')
    END end def test_tms_node_ids_with_selected @n = Node.new(1) @n.node_ids = [12] nds = Node.new(1, :with_children) assert_dom_equal <
  • END end def test_tms_without_items @n = Node.new(1, :without_children) @n.node_ids = [12] nds = Node.new(1, :without_children) assert_dom_equal < END end def test_tmst n = Node.new(1, :with_children) assert_dom_equal <
  • END end def test_tmst_with_outer_class n = Node.new(1, :with_children) assert_dom_equal < 'test_class')
    END end def test_tmst_with_selected_items n = Node.new(1, :with_children) n.node_ids = [12] assert_dom_equal < [12])
    END end def test_tmst_without_items n = Node.new(1, :without_children) assert_dom_equal < END end def test_tms_selected_items @n = Node.new(1) nds = Node.new(1, :with_children) assert_dom_equal < [11])
    END end def test_tms_selected_items_nil @n = Node.new(1) nds = Node.new(1, :with_children) assert_dom_equal < nil)
    END end def test_cftfms nds = Node.new(1, :with_more_children) assert_dom_equal <
  • END end def test_cftfms_depth nds = Node.new(1, :with_more_children) assert_dom_equal < 1), "Depth 1"
  • END assert_dom_equal < 2), "Depth 2"
  • END assert_dom_equal < 0), "Depth 0"
  • END end def test_cftfms_inner_class nds = Node.new(1, :with_more_children) assert_dom_equal < 'testclass')
  • END end def test_cftfms_level_class nds = Node.new(1, :with_more_children) assert_dom_equal < 'level'), "With level class"
  • END assert_dom_equal < 'level', :inner_class => 'testclass'), "With level and inner class"
  • END assert_dom_equal < 'level', :initial_level => 2), "With level class and initial level"
  • END end def test_cftfms_level_class_variable nds = Node.new(1, :with_more_children) FightTheMelons::Helpers::FormMultipleSelectHelperConfiguration.level_class = 'lvl' assert_dom_equal <
  • END assert_dom_equal < 'level'), "With explicit level class"
  • END end def test_cftfms_child_method nds = Node.new(1, :with_more_children) assert_dom_equal < :alt_children)
  • END end def test_cftfms_alternate nds = Node.new(1, :with_more_children) assert_dom_equal < true), "With alternate = true"
  • END assert_dom_equal < true, :initial_alternate => false), "With alternate = true and initial alternate = false"
  • END assert_dom_equal < true, :initial_alternate => true), "With alternate = true and initial alternate = true"
  • END end end