aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2016-12-18 16:27:07 +0900
committerRyuta Kamizono <kamipo@gmail.com>2017-02-04 21:05:23 +0900
commit29c70abc58357e7b0f6b05e9ca89ba7a95617ed5 (patch)
tree7dcb1abedf9bc5c1379343b7f5ae7e964c207736 /activerecord
parent4db72741e9906ef3bb23c932122b8ab154a3fe2f (diff)
downloadrails-29c70abc58357e7b0f6b05e9ca89ba7a95617ed5.tar.gz
rails-29c70abc58357e7b0f6b05e9ca89ba7a95617ed5.tar.bz2
rails-29c70abc58357e7b0f6b05e9ca89ba7a95617ed5.zip
Restore custom primary key tests lost at #26266
Some custom primary key tests (added at #17631, #17696, #18220, #18228) were lost at #26266. Restore the tests to improve test coverage.
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/test/cases/primary_keys_test.rb68
1 files changed, 43 insertions, 25 deletions
diff --git a/activerecord/test/cases/primary_keys_test.rb b/activerecord/test/cases/primary_keys_test.rb
index 75276c70b2..f92ee15cfa 100644
--- a/activerecord/test/cases/primary_keys_test.rb
+++ b/activerecord/test/cases/primary_keys_test.rb
@@ -346,42 +346,60 @@ class PrimaryKeyIntegerNilDefaultTest < ActiveRecord::TestCase
end
end
-class PrimaryKeyIntegerTest < ActiveRecord::TestCase
- include SchemaDumpingHelper
+if current_adapter?(:PostgreSQLAdapter, :Mysql2Adapter)
+ class PrimaryKeyIntegerTest < ActiveRecord::TestCase
+ include SchemaDumpingHelper
- self.use_transactional_tests = false
+ self.use_transactional_tests = false
- class Widget < ActiveRecord::Base
- end
+ class Widget < ActiveRecord::Base
+ end
- setup do
- @connection = ActiveRecord::Base.connection
- @connection.create_table(:widgets, force: true)
- end
+ setup do
+ @connection = ActiveRecord::Base.connection
+ if current_adapter?(:PostgreSQLAdapter)
+ @connection.create_table(:widgets, id: :serial, force: true)
+ else
+ @connection.create_table(:widgets, id: :integer, force: true)
+ end
+ end
- teardown do
- @connection.drop_table :widgets, if_exists: true
- Widget.reset_column_information
- end
+ teardown do
+ @connection.drop_table :widgets, if_exists: true
+ end
- if current_adapter?(:PostgreSQLAdapter, :Mysql2Adapter)
- test "schema dump primary key with bigserial" do
- schema = dump_table_schema "widgets"
- assert_match %r{create_table "widgets", force: :cascade}, schema
+ test "primary key column type with serial/integer" do
+ column = @connection.columns(:widgets).find { |c| c.name == "id" }
+ assert_equal :integer, column.type
+ assert_not column.bigint?
end
- end
- test "primary key column type" do
- column_type = Widget.type_for_attribute(Widget.primary_key)
- assert_equal :integer, column_type.type
+ test "primary key with serial/integer are automatically numbered" do
+ widget = Widget.create!
+ assert_not_nil widget.id
+ end
- if current_adapter?(:PostgreSQLAdapter, :Mysql2Adapter)
- assert_equal 8, column_type.limit
+ test "schema dump primary key with serial/integer" do
+ schema = dump_table_schema "widgets"
+ if current_adapter?(:PostgreSQLAdapter)
+ assert_match %r{create_table "widgets", id: :serial, force: :cascade}, schema
+ else
+ assert_match %r{create_table "widgets", id: :integer, force: :cascade}, schema
+ end
end
if current_adapter?(:Mysql2Adapter)
- column = @connection.columns(:widgets).find { |c| c.name == "id" }
- assert column.auto_increment?
+ test "primary key column type with options" do
+ @connection.create_table(:widgets, id: :primary_key, limit: 4, unsigned: true, force: true)
+ column = @connection.columns(:widgets).find { |c| c.name == "id" }
+ assert column.auto_increment?
+ assert_equal :integer, column.type
+ assert_equal 4, column.limit
+ assert column.unsigned?
+
+ schema = dump_table_schema "widgets"
+ assert_match %r{create_table "widgets", id: :integer, unsigned: true, force: :cascade}, schema
+ end
end
end
end