aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/adapters/postgresql
diff options
context:
space:
mode:
authoryuuji.yaginuma <yuuji.yaginuma@gmail.com>2018-01-02 11:24:53 +0900
committerYuji Yaginuma <yuuji.yaginuma@gmail.com>2018-01-04 06:44:53 +0900
commitbce675eac49a8673d63ea41991f020aa3aa8c506 (patch)
tree9bd6b77f30370c90e45b379657699fe532b1bf04 /activerecord/test/cases/adapters/postgresql
parentff4f69ff2d7c4880a04f5c963e0025af041b8e9d (diff)
downloadrails-bce675eac49a8673d63ea41991f020aa3aa8c506.tar.gz
rails-bce675eac49a8673d63ea41991f020aa3aa8c506.tar.bz2
rails-bce675eac49a8673d63ea41991f020aa3aa8c506.zip
Correctly handle infinity value in PostgreSQL range type
An empty string is an invalid value in Ruby's range class. So need to handle `Float::INFINITY` as it is and cast it in `encode_range`. Fixes #31612
Diffstat (limited to 'activerecord/test/cases/adapters/postgresql')
-rw-r--r--activerecord/test/cases/adapters/postgresql/range_test.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/activerecord/test/cases/adapters/postgresql/range_test.rb b/activerecord/test/cases/adapters/postgresql/range_test.rb
index 813a8721a2..261c24634e 100644
--- a/activerecord/test/cases/adapters/postgresql/range_test.rb
+++ b/activerecord/test/cases/adapters/postgresql/range_test.rb
@@ -358,6 +358,18 @@ _SQL
end
end
+ def test_infinity_values
+ PostgresqlRange.create!(int4_range: 1..Float::INFINITY,
+ int8_range: -Float::INFINITY..0,
+ float_range: -Float::INFINITY..Float::INFINITY)
+
+ record = PostgresqlRange.first
+
+ assert_equal(1...Float::INFINITY, record.int4_range)
+ assert_equal(-Float::INFINITY...1, record.int8_range)
+ assert_equal(-Float::INFINITY...Float::INFINITY, record.float_range)
+ end
+
private
def assert_equal_round_trip(range, attribute, value)
round_trip(range, attribute, value)