mirror of
https://github.com/ent/ent.git
synced 2026-05-04 00:20:58 +03:00
62 lines
1.9 KiB
Go
62 lines
1.9 KiB
Go
// Copyright 2019-present Facebook Inc. All rights reserved.
|
|
// This source code is licensed under the Apache 2.0 license found
|
|
// in the LICENSE file in the root directory of this source tree.
|
|
|
|
package schema
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"entgo.io/ent/dialect/sql"
|
|
"github.com/DATA-DOG/go-sqlmock"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestMigrateHookOmitTable(t *testing.T) {
|
|
db, mk, err := sqlmock.New()
|
|
require.NoError(t, err)
|
|
|
|
tables := []*Table{{Name: "users"}, {Name: "pets"}}
|
|
mock := mysqlMock{mk}
|
|
mock.start("5.7.23")
|
|
mock.tableExists("pets", false)
|
|
mock.ExpectExec(escape("CREATE TABLE IF NOT EXISTS `pets`() CHARACTER SET utf8mb4 COLLATE utf8mb4_bin")).
|
|
WillReturnResult(sqlmock.NewResult(0, 1))
|
|
mock.ExpectCommit()
|
|
|
|
migrate, err := NewMigrate(sql.OpenDB("mysql", db), WithHooks(func(next Creator) Creator {
|
|
return CreateFunc(func(ctx context.Context, tables ...*Table) error {
|
|
return next.Create(ctx, tables[1])
|
|
})
|
|
}))
|
|
require.NoError(t, err)
|
|
err = migrate.Create(context.Background(), tables...)
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func TestMigrateHookAddTable(t *testing.T) {
|
|
db, mk, err := sqlmock.New()
|
|
require.NoError(t, err)
|
|
|
|
tables := []*Table{{Name: "users"}}
|
|
mock := mysqlMock{mk}
|
|
mock.start("5.7.23")
|
|
mock.tableExists("users", false)
|
|
mock.ExpectExec(escape("CREATE TABLE IF NOT EXISTS `users`() CHARACTER SET utf8mb4 COLLATE utf8mb4_bin")).
|
|
WillReturnResult(sqlmock.NewResult(0, 1))
|
|
mock.tableExists("pets", false)
|
|
mock.ExpectExec(escape("CREATE TABLE IF NOT EXISTS `pets`() CHARACTER SET utf8mb4 COLLATE utf8mb4_bin")).
|
|
WillReturnResult(sqlmock.NewResult(0, 1))
|
|
mock.ExpectCommit()
|
|
|
|
migrate, err := NewMigrate(sql.OpenDB("mysql", db), WithHooks(func(next Creator) Creator {
|
|
return CreateFunc(func(ctx context.Context, tables ...*Table) error {
|
|
return next.Create(ctx, tables[0], &Table{Name: "pets"})
|
|
})
|
|
}))
|
|
require.NoError(t, err)
|
|
err = migrate.Create(context.Background(), tables...)
|
|
require.NoError(t, err)
|
|
}
|