Skip to content

Commit f9b4de0

Browse files
committed
Fix test failing on ruby master
1 parent 7659dd0 commit f9b4de0

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

activerecord/test/cases/validations/numericality_validation_test.rb

+30-2
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,45 @@ def self.name
8181
assert_predicate(subject, :valid?)
8282
end
8383

84-
def test_virtual_attribute_with_precision
84+
def test_virtual_attribute_with_precision_round_down
8585
model_class.attribute(:virtual_decimal_number, :decimal, precision: 5)
8686
model_class.validates_numericality_of(
8787
:virtual_decimal_number, equal_to: 123.45
8888
)
8989

90-
subject = model_class.new(virtual_decimal_number: 123.455)
90+
subject = model_class.new(virtual_decimal_number: 123.454)
9191

9292
assert_predicate subject, :valid?
9393
end
9494

95+
def test_virtual_attribute_with_precision_round_half_even
96+
model_class.attribute(:virtual_decimal_number, :decimal, precision: 5)
97+
model_class.validates_numericality_of(
98+
:virtual_decimal_number, equal_to: 123.45
99+
)
100+
101+
subject = model_class.new(virtual_decimal_number: 123.455)
102+
103+
if RUBY_VERSION > "3.0.0"
104+
# BigDecimal's to_d behavior changed in BigDecimal 3.0.1, see https://github.com/ruby/bigdecimal/issues/70
105+
# TOOD: replace this with a check against BigDecimal::VERSION
106+
assert_not_predicate subject, :valid?
107+
else
108+
assert_predicate subject, :valid?
109+
end
110+
end
111+
112+
def test_virtual_attribute_with_precision_round_up
113+
model_class.attribute(:virtual_decimal_number, :decimal, precision: 5)
114+
model_class.validates_numericality_of(
115+
:virtual_decimal_number, equal_to: 123.45
116+
)
117+
118+
subject = model_class.new(virtual_decimal_number: 123.456)
119+
120+
assert_not_predicate subject, :valid?
121+
end
122+
95123
def test_virtual_attribute_with_scale
96124
model_class.attribute(:virtual_decimal_number, :decimal, scale: 2)
97125
model_class.validates_numericality_of(

0 commit comments

Comments
 (0)