Skip to content

Commit f250208

Browse files
authored
Merge pull request rails#41115 from ghiculescu/failing-test-on-ruby-master
Fix test failing on ruby master
2 parents 291a3d2 + f9b4de0 commit f250208

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)