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/sqlite3/legacy_migration_test.rb | |
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/sqlite3/legacy_migration_test.rb')
-rw-r--r-- | activerecord/test/cases/adapters/sqlite3/legacy_migration_test.rb | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/activerecord/test/cases/adapters/sqlite3/legacy_migration_test.rb b/activerecord/test/cases/adapters/sqlite3/legacy_migration_test.rb new file mode 100644 index 0000000000..fcca8d66b5 --- /dev/null +++ b/activerecord/test/cases/adapters/sqlite3/legacy_migration_test.rb @@ -0,0 +1,59 @@ +require "cases/helper" + +class SqliteLegacyMigrationTest < ActiveRecord::SQLite3TestCase + self.use_transactional_tests = false + + class GenerateTableWithoutBigint < 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 + @connection = ActiveRecord::Base.connection + + @migration_verbose_old = ActiveRecord::Migration.verbose + ActiveRecord::Migration.verbose = false + + migrations = [GenerateTableWithoutBigint.new(nil, 1)] + + ActiveRecord::Migrator.new(:up, migrations).migrate + end + + def teardown + ActiveRecord::Migration.verbose = @migration_verbose_old + @connection.drop_table("legacy_integer_pk") + @connection.drop_table("override_pk") + ActiveRecord::SchemaMigration.delete_all rescue nil + super + end + + def test_create_table_uses_integer_as_pkey_by_default + col = column(:legacy_integer_pk, :id) + assert_equal "INTEGER", sql_type_for(col) + assert primary_key?(:legacy_integer_pk, "id"), "id is not primary key" + 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 + + def primary_key?(table_name, column) + ActiveRecord::Base.connection.execute("PRAGMA table_info(#{table_name})").find { |col| col["name"] == column }["pk"] == 1 + end +end |