@@ -46,6 +46,40 @@ class PrimaryKeyIntegerTest < ActiveRecord::TestCase
4646 class Barcode < ActiveRecord ::Base
4747 end
4848
49+ class CompositePrimaryKeyAutoGeneratedValuesTest < ActiveRecord ::TestCase
50+ self . use_transactional_tests = false
51+
52+ class CompositePkAutoValue < ActiveRecord ::Base
53+ self . table_name = :composite_pk_auto_values
54+ self . primary_key = %i[ id guid ]
55+ end
56+
57+ setup do
58+ @connection = ActiveRecord ::Base . lease_connection
59+ @connection . execute "DROP TABLE composite_pk_auto_values" if @connection . table_exists? ( :composite_pk_auto_values )
60+ @connection . execute <<~SQL
61+ CREATE TABLE composite_pk_auto_values (
62+ id bigint IDENTITY(1,1) NOT NULL,
63+ guid uniqueidentifier DEFAULT NEWID() NOT NULL,
64+ CONSTRAINT PK_composite_pk_auto_values PRIMARY KEY (id, guid)
65+ )
66+ SQL
67+ end
68+
69+ teardown do
70+ @connection . execute "DROP TABLE composite_pk_auto_values" if @connection . table_exists? ( :composite_pk_auto_values )
71+ end
72+
73+ test "assigns all returned values when composite primary key columns are database generated" do
74+ record = CompositePkAutoValue . create!
75+ persisted = CompositePkAutoValue . last
76+
77+ assert_equal persisted . id , record . id
78+ assert_equal persisted . guid , record . guid
79+ assert_not_nil record . guid
80+ end
81+ end
82+
4983 class Widget < ActiveRecord ::Base
5084 end
5185
0 commit comments