require "#{File.dirname(__FILE__)}/../test_helper" class PreferenceDefinitionByDefaultTest < Test::Unit::TestCase def setup @definition = PluginAWeek::Preferences::PreferenceDefinition.new(:notifications) end def test_should_have_an_attribute assert_equal 'notifications', @definition.attribute end def test_should_not_have_a_default_value assert_nil @definition.default_value end def test_should_type_cast_values_as_booleans assert_equal nil, @definition.type_cast(nil) assert_equal true, @definition.type_cast(true) assert_equal false, @definition.type_cast(false) assert_equal false, @definition.type_cast(0) assert_equal true, @definition.type_cast(1) end end class PreferenceDefinitionTest < Test::Unit::TestCase def test_should_raise_exception_if_invalid_option_specified assert_raise(ArgumentError) {PluginAWeek::Preferences::PreferenceDefinition.new(:notifications, :invalid => true)} end end class PreferenceDefinitionWithDefaultValueTest < Test::Unit::TestCase def setup @definition = PluginAWeek::Preferences::PreferenceDefinition.new(:notifications, :boolean, :default => 1) end def test_should_type_cast_default_values assert_equal true, @definition.default_value end end class PreferenceDefinitionWithAnyTypeTest < Test::Unit::TestCase def setup @definition = PluginAWeek::Preferences::PreferenceDefinition.new(:notifications, :any) end def test_should_not_type_cast assert_equal nil, @definition.type_cast(nil) assert_equal 0, @definition.type_cast(0) assert_equal 1, @definition.type_cast(1) assert_equal false, @definition.type_cast(false) assert_equal true, @definition.type_cast(true) assert_equal '', @definition.type_cast('') end def test_should_query_false_if_value_is_nil assert_equal false, @definition.query(nil) end def test_should_query_true_if_value_is_zero assert_equal true, @definition.query(0) end def test_should_query_true_if_value_is_not_zero assert_equal true, @definition.query(1) assert_equal true, @definition.query(-1) end def test_should_query_false_if_value_is_blank assert_equal false, @definition.query('') end def test_should_query_true_if_value_is_not_blank assert_equal true, @definition.query('hello') end end class PreferenceDefinitionWithBooleanTypeTest < Test::Unit::TestCase def setup @definition = PluginAWeek::Preferences::PreferenceDefinition.new(:notifications) end def test_should_not_type_cast_if_value_is_nil assert_equal nil, @definition.type_cast(nil) end def test_should_type_cast_to_false_if_value_is_zero assert_equal false, @definition.type_cast(0) end def test_should_type_cast_to_true_if_value_is_not_zero assert_equal true, @definition.type_cast(1) end def test_should_type_cast_to_true_if_value_is_true_string assert_equal true, @definition.type_cast('true') end def test_should_type_cast_to_nil_if_value_is_not_true_string assert_nil @definition.type_cast('') end def test_should_query_false_if_value_is_nil assert_equal false, @definition.query(nil) end def test_should_query_true_if_value_is_one assert_equal true, @definition.query(1) end def test_should_query_false_if_value_not_one assert_equal false, @definition.query(0) end def test_should_query_true_if_value_is_true_string assert_equal true, @definition.query('true') end def test_should_query_false_if_value_is_not_true_string assert_equal false, @definition.query('') end end class PreferenceDefinitionWithNumericTypeTest < Test::Unit::TestCase def setup @definition = PluginAWeek::Preferences::PreferenceDefinition.new(:notifications, :integer) end def test_should_type_cast_true_to_integer assert_equal 1, @definition.type_cast(true) end def test_should_type_cast_false_to_integer assert_equal 0, @definition.type_cast(false) end def test_should_type_cast_string_to_integer assert_equal 0, @definition.type_cast('hello') end def test_should_query_false_if_value_is_nil assert_equal false, @definition.query(nil) end def test_should_query_true_if_value_is_one assert_equal true, @definition.query(1) end def test_should_query_false_if_value_is_zero assert_equal false, @definition.query(0) end end class PreferenceDefinitionWithStringTypeTest < Test::Unit::TestCase def setup @definition = PluginAWeek::Preferences::PreferenceDefinition.new(:notifications, :string) end def test_should_type_cast_integers_to_strings assert_equal '1', @definition.type_cast('1') end def test_should_not_type_cast_booleans assert_equal true, @definition.type_cast(true) end def test_should_query_false_if_value_is_nil assert_equal false, @definition.query(nil) end def test_should_query_true_if_value_is_one assert_equal true, @definition.query(1) end def test_should_query_true_if_value_is_zero assert_equal true, @definition.query(0) end def test_should_query_false_if_value_is_blank assert_equal false, @definition.query('') end def test_should_query_true_if_value_is_not_blank assert_equal true, @definition.query('hello') end end