aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/migration/column_positioning_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/test/cases/migration/column_positioning_test.rb')
-rw-r--r--activerecord/test/cases/migration/column_positioning_test.rb68
1 files changed, 68 insertions, 0 deletions
diff --git a/activerecord/test/cases/migration/column_positioning_test.rb b/activerecord/test/cases/migration/column_positioning_test.rb
new file mode 100644
index 0000000000..1c62a68cf9
--- /dev/null
+++ b/activerecord/test/cases/migration/column_positioning_test.rb
@@ -0,0 +1,68 @@
+# frozen_string_literal: true
+
+require "cases/helper"
+
+module ActiveRecord
+ class Migration
+ class ColumnPositioningTest < ActiveRecord::TestCase
+ attr_reader :connection
+ alias :conn :connection
+
+ def setup
+ super
+
+ @connection = ActiveRecord::Base.connection
+
+ connection.create_table :testings, id: false do |t|
+ t.column :first, :integer
+ t.column :second, :integer
+ t.column :third, :integer
+ end
+ end
+
+ teardown do
+ connection.drop_table :testings rescue nil
+ ActiveRecord::Base.primary_key_prefix_type = nil
+ end
+
+ if current_adapter?(:Mysql2Adapter)
+ def test_column_positioning
+ assert_equal %w(first second third), conn.columns(:testings).map(&:name)
+ end
+
+ def test_add_column_with_positioning
+ conn.add_column :testings, :new_col, :integer
+ assert_equal %w(first second third new_col), conn.columns(:testings).map(&:name)
+ end
+
+ def test_add_column_with_positioning_first
+ conn.add_column :testings, :new_col, :integer, first: true
+ assert_equal %w(new_col first second third), conn.columns(:testings).map(&:name)
+ end
+
+ def test_add_column_with_positioning_after
+ conn.add_column :testings, :new_col, :integer, after: :first
+ assert_equal %w(first new_col second third), conn.columns(:testings).map(&:name)
+ end
+
+ def test_change_column_with_positioning
+ conn.change_column :testings, :second, :integer, first: true
+ assert_equal %w(second first third), conn.columns(:testings).map(&:name)
+
+ conn.change_column :testings, :second, :integer, after: :third
+ assert_equal %w(first third second), conn.columns(:testings).map(&:name)
+ end
+
+ def test_add_reference_with_positioning_first
+ conn.add_reference :testings, :new, polymorphic: true, first: true
+ assert_equal %w(new_id new_type first second third), conn.columns(:testings).map(&:name)
+ end
+
+ def test_add_reference_with_positioning_after
+ conn.add_reference :testings, :new, polymorphic: true, after: :first
+ assert_equal %w(first new_id new_type second third), conn.columns(:testings).map(&:name)
+ end
+ end
+ end
+ end
+end