aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/column_test.rb
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2014-05-17 10:38:04 -0600
committerSean Griffin <sean@thoughtbot.com>2014-05-17 12:29:34 -0600
commit933b2125e6c4b75a8c8fb0b497c5e1572169139c (patch)
treea4ac32edc23837516295c7df9397064bf809e1c8 /activerecord/test/cases/column_test.rb
parent1b8529ec028d5189d3c104fcf470824d3ada7ff2 (diff)
downloadrails-933b2125e6c4b75a8c8fb0b497c5e1572169139c.tar.gz
rails-933b2125e6c4b75a8c8fb0b497c5e1572169139c.tar.bz2
rails-933b2125e6c4b75a8c8fb0b497c5e1572169139c.zip
Add missing tests for column type cast behavior
Diffstat (limited to 'activerecord/test/cases/column_test.rb')
-rw-r--r--activerecord/test/cases/column_test.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/activerecord/test/cases/column_test.rb b/activerecord/test/cases/column_test.rb
index 2a6d8cc2ab..39489c3718 100644
--- a/activerecord/test/cases/column_test.rb
+++ b/activerecord/test/cases/column_test.rb
@@ -35,6 +35,13 @@ module ActiveRecord
assert_equal false, column.type_cast('SOMETHING RANDOM')
end
+ def test_type_cast_string
+ column = Column.new("field", nil, "varchar")
+ assert_equal "1", column.type_cast(true)
+ assert_equal "0", column.type_cast(false)
+ assert_equal "123", column.type_cast(123)
+ end
+
def test_type_cast_integer
column = Column.new("field", nil, "integer")
assert_equal 1, column.type_cast(1)
@@ -72,6 +79,25 @@ module ActiveRecord
assert_nil column.type_cast(1.0/0.0)
end
+ def test_type_cast_float
+ column = Column.new("field", nil, "float")
+ assert_equal 1.0, column.type_cast("1")
+ end
+
+ def test_type_cast_decimal
+ column = Column.new("field", nil, "decimal")
+ assert_equal BigDecimal.new("0"), column.type_cast(BigDecimal.new("0"))
+ assert_equal BigDecimal.new("123"), column.type_cast(123.0)
+ assert_equal BigDecimal.new("1"), column.type_cast(:"1")
+ end
+
+ def test_type_cast_binary
+ column = Column.new("field", nil, "binary")
+ assert_equal nil, column.type_cast(nil)
+ assert_equal "1", column.type_cast("1")
+ assert_equal 1, column.type_cast(1)
+ end
+
def test_type_cast_time
column = Column.new("field", nil, "time")
assert_equal nil, column.type_cast(nil)
@@ -118,6 +144,16 @@ module ActiveRecord
end
end
end
+
+ if current_adapter?(:SQLite3Adapter)
+ def test_binary_encoding
+ column = SQLite3Column.new("field", nil, "binary")
+ utf8_string = "a string".encode(Encoding::UTF_8)
+ type_cast = column.type_cast(utf8_string)
+
+ assert_equal Encoding::ASCII_8BIT, type_cast.encoding
+ end
+ end
end
end
end