github.com/goravel/framework@v1.13.9/database/console/migrate_reset_command_test.go (about) 1 package console 2 3 import ( 4 "testing" 5 6 "github.com/ory/dockertest/v3" 7 "github.com/stretchr/testify/assert" 8 9 configmock "github.com/goravel/framework/contracts/config/mocks" 10 consolemocks "github.com/goravel/framework/contracts/console/mocks" 11 ormcontract "github.com/goravel/framework/contracts/database/orm" 12 "github.com/goravel/framework/database/gorm" 13 ) 14 15 func TestMigrateResetCommand(t *testing.T) { 16 if testing.Short() { 17 t.Skip("Skipping tests of using docker") 18 } 19 20 var ( 21 mockConfig *configmock.Config 22 pool *dockertest.Pool 23 resource *dockertest.Resource 24 query ormcontract.Query 25 ) 26 27 beforeEach := func() { 28 pool = nil 29 mockConfig = &configmock.Config{} 30 } 31 32 tests := []struct { 33 name string 34 setup func() 35 }{ 36 { 37 name: "mysql", 38 setup: func() { 39 var err error 40 docker := gorm.NewMysqlDocker() 41 pool, resource, query, err = docker.New() 42 assert.Nil(t, err) 43 mockConfig = docker.MockConfig 44 createMysqlMigrations() 45 46 }, 47 }, 48 { 49 name: "postgresql", 50 setup: func() { 51 var err error 52 docker := gorm.NewPostgresqlDocker() 53 pool, resource, query, err = docker.New() 54 assert.Nil(t, err) 55 mockConfig = docker.MockConfig 56 createPostgresqlMigrations() 57 }, 58 }, 59 { 60 name: "sqlserver", 61 setup: func() { 62 var err error 63 docker := gorm.NewSqlserverDocker() 64 pool, resource, query, err = docker.New() 65 assert.Nil(t, err) 66 mockConfig = docker.MockConfig 67 createSqlserverMigrations() 68 }, 69 }, 70 { 71 name: "sqlite", 72 setup: func() { 73 var err error 74 docker := gorm.NewSqliteDocker("goravel") 75 pool, resource, query, err = docker.New() 76 assert.Nil(t, err) 77 mockConfig = docker.MockConfig 78 createSqliteMigrations() 79 }, 80 }, 81 } 82 83 for _, test := range tests { 84 t.Run(test.name, func(t *testing.T) { 85 beforeEach() 86 test.setup() 87 88 mockContext := &consolemocks.Context{} 89 90 migrateCommand := NewMigrateCommand(mockConfig) 91 assert.Nil(t, migrateCommand.Handle(mockContext)) 92 93 migrateResetCommand := NewMigrateResetCommand(mockConfig) 94 assert.Nil(t, migrateResetCommand.Handle(mockContext)) 95 96 var agent Agent 97 err := query.Where("name", "goravel").FirstOrFail(&agent) 98 assert.Error(t, err) 99 100 if pool != nil && test.name != "sqlite" { 101 assert.Nil(t, pool.Purge(resource)) 102 } 103 104 removeMigrations() 105 }) 106 } 107 }