aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/test/cases/type/decimal_test.rb
diff options
context:
space:
mode:
authorYoshiyuki Kinjo <yskkin@gmail.com>2018-09-06 20:02:12 +0900
committerYoshiyuki Kinjo <yskkin@gmail.com>2018-09-07 16:17:15 +0900
commitba406d9c220c211439820271aabcf83395c60957 (patch)
treeba6970b943bbe976d875a63464f836c65ac7fe56 /activemodel/test/cases/type/decimal_test.rb
parent54a9dbf5f19e128a2da851707fdaf34868b50078 (diff)
downloadrails-ba406d9c220c211439820271aabcf83395c60957.tar.gz
rails-ba406d9c220c211439820271aabcf83395c60957.tar.bz2
rails-ba406d9c220c211439820271aabcf83395c60957.zip
Fix non_numeric_string?
For example, dirty checking was not right for the following case: ``` model.int_column = "+5" model.float_column = "0.5E+1" model.decimal_column = "0.5e-3" ``` It is enough to see whether leading character is a digit for avoiding invalid numeric expression like 'wibble' to be type-casted to 0, as this method's comment says. Fixes #33801
Diffstat (limited to 'activemodel/test/cases/type/decimal_test.rb')
-rw-r--r--activemodel/test/cases/type/decimal_test.rb5
1 files changed, 4 insertions, 1 deletions
diff --git a/activemodel/test/cases/type/decimal_test.rb b/activemodel/test/cases/type/decimal_test.rb
index c0cf6ce590..be60c4f7fa 100644
--- a/activemodel/test/cases/type/decimal_test.rb
+++ b/activemodel/test/cases/type/decimal_test.rb
@@ -57,9 +57,12 @@ module ActiveModel
def test_changed?
type = Decimal.new
- assert type.changed?(5.0, 5.0, "5.0wibble")
+ assert type.changed?(0.0, 0, "wibble")
+ assert type.changed?(5.0, 0, "wibble")
+ assert_not type.changed?(5.0, 5.0, "5.0wibble")
assert_not type.changed?(5.0, 5.0, "5.0")
assert_not type.changed?(-5.0, -5.0, "-5.0")
+ assert_not type.changed?(5.0, 5.0, "0.5e+1")
end
def test_scale_is_applied_before_precision_to_prevent_rounding_errors