github.com/goravel/framework@v1.13.9/database/console/migrate_creator_test.go (about) 1 package console 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 9 configmock "github.com/goravel/framework/contracts/config/mocks" 10 "github.com/goravel/framework/support/carbon" 11 "github.com/goravel/framework/support/file" 12 ) 13 14 func TestCreate(t *testing.T) { 15 mockConfig := &configmock.Config{} 16 mockConfig.On("GetString", "database.default").Return("mysql").Times(3) 17 mockConfig.On("GetString", "database.connections.mysql.driver").Return("mysql").Once() 18 mockConfig.On("GetString", "database.connections.mysql.charset").Return("utf8mb4").Twice() 19 now := carbon.Now() 20 carbon.SetTestNow(carbon.Now()) 21 22 migrateCreator := NewMigrateCreator(mockConfig) 23 assert.Nil(t, migrateCreator.Create("create_users_table", "users", true)) 24 assert.True(t, file.Exists(fmt.Sprintf("database/migrations/%s_%s.%s.sql", now.ToShortDateTimeString(), "create_users_table", "up"))) 25 assert.True(t, file.Exists(fmt.Sprintf("database/migrations/%s_%s.%s.sql", now.ToShortDateTimeString(), "create_users_table", "down"))) 26 assert.Nil(t, file.Remove("database")) 27 carbon.UnsetTestNow() 28 29 mockConfig.AssertExpectations(t) 30 } 31 32 func TestPopulateStub(t *testing.T) { 33 mockConfig := &configmock.Config{} 34 mockConfig.On("GetString", "database.default").Return("mysql").Twice() 35 mockConfig.On("GetString", "database.connections.mysql.charset").Return("utf8mb4").Twice() 36 37 migrateCreator := NewMigrateCreator(mockConfig) 38 assert.Equal(t, "DummyTable ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;", migrateCreator.populateStub("DummyTable ENGINE = InnoDB DEFAULT CHARSET = DummyDatabaseCharset;", "")) 39 assert.Equal(t, "users ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;", migrateCreator.populateStub("DummyTable ENGINE = InnoDB DEFAULT CHARSET = DummyDatabaseCharset;", "users")) 40 mockConfig.AssertExpectations(t) 41 }