aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2014-05-19 10:59:57 -0700
committerSean Griffin <sean@thoughtbot.com>2014-05-19 11:32:13 -0700
commitd0f8c46e1962b28d77209f367f12c2d2c77f4b12 (patch)
treea20b809cd5b17c706709a51594c0ab1480503c6c /activerecord/test/cases
parent09cc922ed31bf699b26fafe4822fc7048b821825 (diff)
downloadrails-d0f8c46e1962b28d77209f367f12c2d2c77f4b12.tar.gz
rails-d0f8c46e1962b28d77209f367f12c2d2c77f4b12.tar.bz2
rails-d0f8c46e1962b28d77209f367f12c2d2c77f4b12.zip
Remove :timestamp column type
The `:timestamp` type for columns is unused. All database adapters treat them as the same database type. All code in `ActiveRecord` which changes its behavior based on the column's type acts the same in both cases. However, when the type is passed to code that checks for the `:datetime` type, but not `:timestamp` (such as XML serialization), the result is unexpected behavior. Existing schema definitions will continue to work, and the `timestamp` type is transparently aliased to `datetime`.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/attribute_methods_test.rb2
-rw-r--r--activerecord/test/cases/column_test.rb21
-rw-r--r--activerecord/test/cases/connection_adapters/type/type_map_test.rb4
-rw-r--r--activerecord/test/cases/connection_adapters/type_lookup_test.rb7
-rw-r--r--activerecord/test/cases/migration/change_schema_test.rb17
5 files changed, 30 insertions, 21 deletions
diff --git a/activerecord/test/cases/attribute_methods_test.rb b/activerecord/test/cases/attribute_methods_test.rb
index 38e93288e4..495b43c9e5 100644
--- a/activerecord/test/cases/attribute_methods_test.rb
+++ b/activerecord/test/cases/attribute_methods_test.rb
@@ -516,7 +516,7 @@ class AttributeMethodsTest < ActiveRecord::TestCase
end
def test_only_time_related_columns_are_meant_to_be_cached_by_default
- expected = %w(datetime timestamp time date).sort
+ expected = %w(datetime time date).sort
assert_equal expected, ActiveRecord::Base.attribute_types_cached_by_default.map(&:to_s).sort
end
diff --git a/activerecord/test/cases/column_test.rb b/activerecord/test/cases/column_test.rb
index 91605a52f9..fffcb19e56 100644
--- a/activerecord/test/cases/column_test.rb
+++ b/activerecord/test/cases/column_test.rb
@@ -109,19 +109,14 @@ module ActiveRecord
end
def test_type_cast_datetime_and_timestamp
- columns = [
- Column.new("field", nil, Type::DateTime.new),
- Column.new("field", nil, Type::Timestamp.new),
- ]
- columns.each do |column|
- assert_equal nil, column.type_cast(nil)
- assert_equal nil, column.type_cast('')
- assert_equal nil, column.type_cast(' ')
- assert_equal nil, column.type_cast('ABC')
-
- datetime_string = Time.now.utc.strftime("%FT%T")
- assert_equal datetime_string, column.type_cast(datetime_string).strftime("%FT%T")
- end
+ column = Column.new("field", nil, Type::DateTime.new)
+ assert_equal nil, column.type_cast(nil)
+ assert_equal nil, column.type_cast('')
+ assert_equal nil, column.type_cast(' ')
+ assert_equal nil, column.type_cast('ABC')
+
+ datetime_string = Time.now.utc.strftime("%FT%T")
+ assert_equal datetime_string, column.type_cast(datetime_string).strftime("%FT%T")
end
def test_type_cast_date
diff --git a/activerecord/test/cases/connection_adapters/type/type_map_test.rb b/activerecord/test/cases/connection_adapters/type/type_map_test.rb
index 565f44eef8..300c2ed225 100644
--- a/activerecord/test/cases/connection_adapters/type/type_map_test.rb
+++ b/activerecord/test/cases/connection_adapters/type/type_map_test.rb
@@ -21,7 +21,7 @@ module ActiveRecord
def test_overriding_registered_types
time = Time.new
- timestamp = Timestamp.new
+ timestamp = DateTime.new
mapping = TypeMap.new
mapping.register_type(/time/i, time)
@@ -51,7 +51,7 @@ module ActiveRecord
def test_changing_type_changes_aliases
time = Time.new
- timestamp = Timestamp.new
+ timestamp = DateTime.new
mapping = TypeMap.new
mapping.register_type(/timestamp/i, time)
diff --git a/activerecord/test/cases/connection_adapters/type_lookup_test.rb b/activerecord/test/cases/connection_adapters/type_lookup_test.rb
index a5b01260d3..18df30faf5 100644
--- a/activerecord/test/cases/connection_adapters/type_lookup_test.rb
+++ b/activerecord/test/cases/connection_adapters/type_lookup_test.rb
@@ -45,14 +45,11 @@ module ActiveRecord
assert_lookup_type :time, 'TIME'
end
- def test_timestamp_types
- assert_lookup_type :timestamp, 'timestamp'
- assert_lookup_type :timestamp, 'TIMESTAMP'
- end
-
def test_datetime_types
assert_lookup_type :datetime, 'datetime'
assert_lookup_type :datetime, 'DATETIME'
+ assert_lookup_type :datetime, 'timestamp'
+ assert_lookup_type :datetime, 'TIMESTAMP'
end
def test_decimal_types
diff --git a/activerecord/test/cases/migration/change_schema_test.rb b/activerecord/test/cases/migration/change_schema_test.rb
index cbad718b43..b63dcf4459 100644
--- a/activerecord/test/cases/migration/change_schema_test.rb
+++ b/activerecord/test/cases/migration/change_schema_test.rb
@@ -233,6 +233,23 @@ module ActiveRecord
end
end
+ def test_add_column_with_timestamp_type
+ connection.create_table :testings do |t|
+ t.column :foo, :timestamp
+ end
+
+ klass = Class.new(ActiveRecord::Base)
+ klass.table_name = 'testings'
+
+ assert_equal :datetime, klass.columns_hash['foo'].type
+
+ if current_adapter?(:PostgreSQLAdapter)
+ assert_equal 'timestamp without time zone', klass.columns_hash['foo'].sql_type
+ else
+ assert_equal klass.connection.type_to_sql('datetime'), klass.columns_hash['foo'].sql_type
+ end
+ end
+
def test_change_column_quotes_column_names
connection.create_table :testings do |t|
t.column :select, :string