require "spec_helper" #------------------------------------------------------------------------------ describe "PreferenceDefinitionByDefaultTest" do before do @definition = Preferences::PreferenceDefinition.new(:notifications) end it "test_should_have_a_name" do expect("notifications").to eq @definition.name end it "test_should_not_have_a_default_value" do expect(nil).to eq @definition.default_value end it "test_should_have_a_type" do expect(@definition.type).to eq :boolean end it "test_should_type_cast_values_as_booleans" do expect(@definition.type_cast(nil)).to eq nil expect(@definition.type_cast(true)).to eq true expect(@definition.type_cast(false)).to eq false expect(@definition.type_cast(0)).to eq false expect(@definition.type_cast(1)).to eq true end end #------------------------------------------------------------------------------ describe "PreferenceDefinitionTest" do it "test_should_raise_exception_if_invalid_option_specified" do expect { Preferences::PreferenceDefinition.new(:notifications, invalid: true) }.to raise_error(ArgumentError) end end #------------------------------------------------------------------------------ describe "PreferenceDefinitionWithDefaultValueTest" do before do @definition = Preferences::PreferenceDefinition.new(:notifications, :boolean, default: 1) end it "test_should_type_cast_default_values" do expect(@definition.default_value).to eq true end end #------------------------------------------------------------------------------ describe "PreferenceDefinitionWithGroupDefaultsTest" do before do @definition = Preferences::PreferenceDefinition.new(:notifications, :boolean, default: 1, group_defaults: {chat: 0}) end it "test_should_use_default_for_default_group" do expect(@definition.default_value).to eq true end it "test_should_use_default_for_unknown_group" do expect(@definition.default_value("email")).to eq true end it "test_should_use_group_default_for_known_group" do expect(@definition.default_value("chat")).to eq false end end #------------------------------------------------------------------------------ describe "PreferenceDefinitionWithStringifiedTypeTest" do before do @definition = Preferences::PreferenceDefinition.new(:notifications, :any) end it "test_should_symbolize_type" do expect(@definition.type).to eq :any end end #------------------------------------------------------------------------------ describe "PreferenceDefinitionWithAnyTypeTest" do before do @definition = Preferences::PreferenceDefinition.new(:notifications, :any) end it "test_use_custom_type" do expect(@definition.type).to eq :any end it "test_should_not_be_number" do expect(!@definition.number?).to eq true end it "test_should_not_type_cast" do expect(@definition.type_cast(nil)).to eq nil expect(@definition.type_cast(0)).to eq 0 expect(@definition.type_cast(1)).to eq 1 expect(@definition.type_cast(false)).to eq false expect(@definition.type_cast(true)).to eq true expect(@definition.type_cast("")).to eq "" end it "test_should_query_false_if_value_is_nil" do expect(@definition.query(nil)).to eq false end it "test_should_query_true_if_value_is_zero" do expect(@definition.query(0)).to eq true end it "test_should_query_true_if_value_is_not_zero" do expect(@definition.query(1)).to eq true expect(@definition.query(-1)).to eq true end it "test_should_query_false_if_value_is_blank" do expect(@definition.query("")).to eq false end it "test_should_query_true_if_value_is_not_blank" do expect(@definition.query("hello")).to eq true end end #------------------------------------------------------------------------------ describe "PreferenceDefinitionWithBooleanTypeTest" do before do @definition = Preferences::PreferenceDefinition.new(:notifications) end it "test_should_not_be_number" do expect(!@definition.number?).to eq true end it "test_should_not_type_cast_if_value_is_nil" do expect(@definition.type_cast(nil)).to eq nil end it "test_should_type_cast_to_false_if_value_is_zero" do expect(@definition.type_cast(0)).to eq false end it "test_should_type_cast_to_true_if_value_is_not_zero" do expect(@definition.type_cast(1)).to eq true end it "test_should_type_cast_to_true_if_value_is_true_string" do expect(@definition.type_cast("true")).to eq true end it "test_should_type_cast_to_nil_if_value_is_not_true_string" do expect(@definition.type_cast("")).to eq nil end it "test_should_query_false_if_value_is_nil" do expect(@definition.query(nil)).to eq false end it "test_should_query_true_if_value_is_one" do assert_equal true, @definition.query(1) end it "test_should_query_false_if_value_not_one" do expect(@definition.query(0)).to eq false end it "test_should_query_true_if_value_is_true_string" do expect(@definition.query("true")).to eq true end it "test_should_query_false_if_value_is_not_true_string" do expect(@definition.query("")).to eq false end end #------------------------------------------------------------------------------ describe "PreferenceDefinitionWithNumericTypeTest" do before do @definition = Preferences::PreferenceDefinition.new(:notifications, :integer) end it "test_should_be_number" do expect(@definition.number?).to eq true end it "test_should_type_cast_true_to_integer" do expect(@definition.type_cast(true)).to eq 1 end # it "test_should_type_cast_false_to_integer" do # assert_equal 0, @definition.type_cast(false) # end it "test_should_type_cast_string_to_integer" do expect(@definition.type_cast("hello")).to eq 0 end it "test_should_query_false_if_value_is_nil" do expect(@definition.query(nil)).to eq false end it "test_should_query_true_if_value_is_one" do expect(@definition.query(1)).to eq true end it "test_should_query_false_if_value_is_zero" do expect(@definition.query(0)).to eq false end end #------------------------------------------------------------------------------ describe "> PreferenceDefinitionWithStringTypeTest" do before do @definition = Preferences::PreferenceDefinition.new(:notifications, :string) end it "test_should_not_be_number" do expect(!@definition.number?).to eq true end it "test_should_type_cast_integers_to_strings" do expect(@definition.type_cast("1")).to eq "1" end it "test_should_not_type_cast_booleans" do expect(@definition.type_cast(true)).to eq "t" end it "test_should_query_false_if_value_is_nil" do expect(@definition.query(nil)).to eq false end it "test_should_query_true_if_value_is_one" do expect(@definition.query(1)).to eq true end it "test_should_query_true_if_value_is_zero" do expect(@definition.query(0)).to eq true end it "test_should_query_false_if_value_is_blank" do expect(@definition.query("")).to eq false end it "test_should_query_true_if_value_is_not_blank" do expect(@definition.query("hello")).to eq true end end