1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Fix - to_s(:db) on Numeric range

This commit is contained in:
Akshay Vishnoi 2015-12-19 12:23:45 +05:30
parent 468df261f8
commit 007bb117c1
3 changed files with 31 additions and 1 deletions

View file

@ -120,7 +120,11 @@ module ActiveSupport::NumericWithFormat
when :human_size
return ActiveSupport::NumberHelper.number_to_human_size(self, options)
else
super
if is_a?(Float) || format.is_a?(Symbol)
super()
else
super
end
end
end

View file

@ -406,6 +406,26 @@ class NumericExtFormattingTest < ActiveSupport::TestCase
end
end
def test_to_s_with_invalid_formatter
assert_equal '123', 123.to_s(:invalid)
assert_equal '2.5', 2.5.to_s(:invalid)
assert_equal '100000000000000000000', (100**10).to_s(:invalid)
assert_equal '1000010.0', BigDecimal("1000010").to_s(:invalid)
end
def test_default_to_s
assert_equal '123', 123.to_s
assert_equal '1111011', 123.to_s(2)
assert_equal '2.5', 2.5.to_s
assert_equal '100000000000000000000', (100**10).to_s
assert_equal '1010110101111000111010111100010110101100011000100000000000000000000', (100**10).to_s(2)
assert_equal '1000010.0', BigDecimal("1000010").to_s
assert_equal '10000 10.0', BigDecimal("1000010").to_s('5F')
end
def test_in_milliseconds
assert_equal 10_000, 10.seconds.in_milliseconds
end

View file

@ -1,5 +1,6 @@
require 'abstract_unit'
require 'active_support/time'
require 'active_support/core_ext/numeric'
require 'active_support/core_ext/range'
class RangeTest < ActiveSupport::TestCase
@ -13,6 +14,11 @@ class RangeTest < ActiveSupport::TestCase
assert_equal "BETWEEN '2005-12-10 15:30:00' AND '2005-12-10 17:30:00'", date_range.to_s(:db)
end
def test_to_s_with_numeric
number_range = (1..100)
assert_equal "BETWEEN '1' AND '100'", number_range.to_s(:db)
end
def test_date_range
assert_instance_of Range, DateTime.new..DateTime.new
assert_instance_of Range, DateTime::Infinity.new..DateTime::Infinity.new