diff options
author | Guilherme Goettems Schneider <guigs81@gmail.com> | 2019-06-03 08:05:36 -0300 |
---|---|---|
committer | Guilherme Goettems Schneider <guigs81@gmail.com> | 2019-06-03 08:35:36 -0300 |
commit | 49f31043be571381fd66dbc22b123d5625af64de (patch) | |
tree | aeecb67c6d1360597fa5192abb35ec30293f1e18 /activerecord/test | |
parent | 5f2bc3a6a00a2277481de7241f7a2066e886b84d (diff) | |
download | rails-49f31043be571381fd66dbc22b123d5625af64de.tar.gz rails-49f31043be571381fd66dbc22b123d5625af64de.tar.bz2 rails-49f31043be571381fd66dbc22b123d5625af64de.zip |
Fix invalid schema dump when primary key column has a comment
Before this fix it would either generate an invalid schema, passing `comment` option twice to `create_table`, or it move the comment from primary key column to the table if table had no comment when the dump was generated.
The situation now is that a comment on primary key will be ignored (not present on schema).
Fixes #29966
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/comment_test.rb | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/activerecord/test/cases/comment_test.rb b/activerecord/test/cases/comment_test.rb index f2f28462d1..25e2f20676 100644 --- a/activerecord/test/cases/comment_test.rb +++ b/activerecord/test/cases/comment_test.rb @@ -14,6 +14,9 @@ if ActiveRecord::Base.connection.supports_comments? class BlankComment < ActiveRecord::Base end + class PkCommented < ActiveRecord::Base + end + setup do @connection = ActiveRecord::Base.connection @@ -35,8 +38,13 @@ if ActiveRecord::Base.connection.supports_comments? t.index :absent_comment end + @connection.create_table("pk_commenteds", comment: "Table comment", id: false, force: true) do |t| + t.integer :id, comment: "Primary key comment", primary_key: true + end + Commented.reset_column_information BlankComment.reset_column_information + PkCommented.reset_column_information end teardown do @@ -44,7 +52,7 @@ if ActiveRecord::Base.connection.supports_comments? @connection.drop_table "blank_comments", if_exists: true end - def test_primary_key_comment + def test_default_primary_key_comment column = Commented.columns_hash["id"] assert_nil column.comment end @@ -169,5 +177,17 @@ if ActiveRecord::Base.connection.supports_comments? column = Commented.columns_hash["name"] assert_nil column.comment end + + def test_comment_on_primary_key + column = PkCommented.columns_hash["id"] + assert_equal "Primary key comment", column.comment + assert_equal "Table comment", @connection.table_comment("pk_commenteds") + end + + def test_schema_dump_with_primary_key_comment + output = dump_table_schema "pk_commenteds" + assert_match %r[create_table "pk_commenteds",.*\s+comment: "Table comment"], output + assert_no_match %r[create_table "pk_commenteds",.*\s+comment: "Primary key comment"], output + end end end |