diff --git a/lib/click_house/type/boolean_type.rb b/lib/click_house/type/boolean_type.rb index e4d76e7..e833078 100644 --- a/lib/click_house/type/boolean_type.rb +++ b/lib/click_house/type/boolean_type.rb @@ -5,18 +5,14 @@ module Type class BooleanType < BaseType TRUE_VALUE = 1 FALSE_VALUE = 0 + TRUE_VALUES = Set[1, '1', true].freeze def cast(value) - case value - when TrueClass, FalseClass - value - else - value.to_i == TRUE_VALUE - end + TRUE_VALUES.include?(value) end def serialize(value) - value ? TRUE_VALUE : FALSE_VALUE + TRUE_VALUES.include?(value) ? TRUE_VALUE : FALSE_VALUE end end end diff --git a/spec/click_house/integration/boolean_type_spec.rb b/spec/click_house/integration/boolean_type_spec.rb index f35e79f..8294db8 100644 --- a/spec/click_house/integration/boolean_type_spec.rb +++ b/spec/click_house/integration/boolean_type_spec.rb @@ -35,7 +35,7 @@ expect(got.fetch('a')).to be_a(TrueClass) expect(got.fetch('b')).to be_a(FalseClass) expect(got.fetch('c')).to be_a(TrueClass) - expect(got.fetch('b')).to be_a(FalseClass) + expect(got.fetch('d')).to be_a(FalseClass) expect(got.fetch('e')).to be_a(NilClass) end end @@ -58,7 +58,7 @@ expect(got.fetch('a')).to be_a(TrueClass) expect(got.fetch('b')).to be_a(FalseClass) expect(got.fetch('c')).to be_a(TrueClass) - expect(got.fetch('b')).to be_a(FalseClass) + expect(got.fetch('d')).to be_a(FalseClass) expect(got.fetch('e')).to be_a(NilClass) end end