diff options
author | Pavel Pravosud <pavel@pravosud.com> | 2016-05-10 15:10:46 -0700 |
---|---|---|
committer | Jon McCartie <jon@mccartie.com> | 2016-12-05 11:40:32 -0800 |
commit | 3e452b12043ecfd983c6132d6eb97eb79db952b7 (patch) | |
tree | 4c6d98ed9f1a35a13ccb2f7be3d903a05a3a6ec8 /activerecord/test/cases/adapters/postgresql | |
parent | b92ae610699f991e4616409815fa1e7f134dacc5 (diff) | |
download | rails-3e452b12043ecfd983c6132d6eb97eb79db952b7.tar.gz rails-3e452b12043ecfd983c6132d6eb97eb79db952b7.tar.bz2 rails-3e452b12043ecfd983c6132d6eb97eb79db952b7.zip |
Make pg adapter use bigserial for pk by default
Diffstat (limited to 'activerecord/test/cases/adapters/postgresql')
-rw-r--r-- | activerecord/test/cases/adapters/postgresql/legacy_migration_test.rb | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/activerecord/test/cases/adapters/postgresql/legacy_migration_test.rb b/activerecord/test/cases/adapters/postgresql/legacy_migration_test.rb new file mode 100644 index 0000000000..082fe95053 --- /dev/null +++ b/activerecord/test/cases/adapters/postgresql/legacy_migration_test.rb @@ -0,0 +1,54 @@ +require "cases/helper" + +class PostgresqlLegacyMigrationTest < ActiveRecord::PostgreSQLTestCase + class GenerateTableWithoutBigserial < ActiveRecord::Migration[5.0] + def change + create_table :legacy_integer_pk do |table| + table.string :foo + end + + create_table :override_pk, id: :bigint do |table| + table.string :bar + end + end + end + + def setup + super + + @migration_verbose_old = ActiveRecord::Migration.verbose + ActiveRecord::Migration.verbose = false + + migrations = [GenerateTableWithoutBigserial.new(nil, 1)] + ActiveRecord::Migrator.new(:up, migrations).migrate + end + + def teardown + ActiveRecord::Migration.verbose = @migration_verbose_old + + super + end + + def test_create_table_uses_serial_as_pkey_by_default + col = column(:legacy_integer_pk, :id) + assert_equal "integer", sql_type_for(col) + assert col.serial? + end + + def test_create_tables_respects_pk_column_type_override + col = column(:override_pk, :id) + assert_equal "bigint", sql_type_for(col) + end + + private + + def column(table_name, column_name) + ActiveRecord::Base.connection. + columns(table_name.to_s). + detect { |c| c.name == column_name.to_s } + end + + def sql_type_for(col) + col && col.sql_type + end +end |