diff --git a/tests/sync_test.go b/tests/sync_test.go index 907e0a5e..23d57183 100644 --- a/tests/sync_test.go +++ b/tests/sync_test.go @@ -11,6 +11,7 @@ import ( "xorm.io/xorm/schemas" ) +// Test Sync with unique index and normal index type TestSync1 struct { Id int64 ClassId int64 `xorm:"index"` @@ -29,9 +30,46 @@ func (TestSync2) TableName() string { return "test_sync" } -func TestSync(t *testing.T) { +func Test_SyncChangeIndexType(t *testing.T) { assert.NoError(t, testEngine.Sync(new(TestSync1))) + tables, err := testEngine.DBMetas() + assert.NoError(t, err) + var testTable *schemas.Table + for _, table := range tables { + if table.Name == "test_sync" { + testTable = table + break + } + } + assert.NotNil(t, testTable) + assert.Len(t, testTable.Columns(), 2) + + assert.Len(t, testTable.Indexes, 1) + index := testTable.Indexes["class_id"] + assert.NotNil(t, index) + assert.Len(t, index.Cols, 1) + assert.Equal(t, "class_id", index.Cols[0]) + assert.Equal(t, schemas.IndexType, index.Type) + assert.NoError(t, testEngine.Sync(new(TestSync2))) + tables, err = testEngine.DBMetas() + assert.NoError(t, err) + testTable = nil + for _, table := range tables { + if table.Name == "test_sync" { + testTable = table + break + } + } + assert.NotNil(t, testTable) + assert.Len(t, testTable.Columns(), 2) + + assert.Len(t, testTable.Indexes, 1) + index = testTable.Indexes["class_id"] + assert.NotNil(t, index) + assert.Len(t, index.Cols, 1) + assert.Equal(t, "class_id", index.Cols[0]) + assert.Equal(t, schemas.UniqueType, index.Type) } // Test Sync with varchar size changed @@ -183,7 +221,7 @@ func Test_SyncVarcharDefaultChange(t *testing.T) { } assert.NotNil(t, testTable) assert.Len(t, testTable.Columns(), 2) - assert.Equal(t, "1", testTable.GetColumn("name").Default) + assert.Equal(t, "'1'", testTable.GetColumn("name").Default) assert.NoError(t, testEngine.Sync(new(TestSync8))) @@ -198,5 +236,5 @@ func Test_SyncVarcharDefaultChange(t *testing.T) { } assert.NotNil(t, testTable) assert.Len(t, testTable.Columns(), 2) - assert.Equal(t, "2", testTable.GetColumn("name").Default) + assert.Equal(t, "'2'", testTable.GetColumn("name").Default) }