github.com/goravel/framework@v1.13.9/database/console/migrate_make_command_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  	consolemocks "github.com/goravel/framework/contracts/console/mocks"
    11  	"github.com/goravel/framework/support/carbon"
    12  	"github.com/goravel/framework/support/file"
    13  )
    14  
    15  func TestMigrateMakeCommand(t *testing.T) {
    16  	now := carbon.Now()
    17  	up := fmt.Sprintf("database/migrations/%s_%s.%s.sql", now.ToShortDateTimeString(), "create_users_table", "up")
    18  	down := fmt.Sprintf("database/migrations/%s_%s.%s.sql", now.ToShortDateTimeString(), "create_users_table", "down")
    19  
    20  	mockConfig := &configmock.Config{}
    21  	mockConfig.On("GetString", "database.default").Return("mysql").Times(3)
    22  	mockConfig.On("GetString", "database.connections.mysql.driver").Return("mysql").Once()
    23  	mockConfig.On("GetString", "database.connections.mysql.charset").Return("utf8mb4").Twice()
    24  
    25  	migrateMakeCommand := NewMigrateMakeCommand(mockConfig)
    26  	mockContext := &consolemocks.Context{}
    27  	mockContext.On("Argument", 0).Return("").Once()
    28  	assert.Nil(t, migrateMakeCommand.Handle(mockContext))
    29  	assert.False(t, file.Exists(up))
    30  	assert.False(t, file.Exists(down))
    31  
    32  	mockContext.On("Argument", 0).Return("create_users_table").Once()
    33  	assert.Nil(t, migrateMakeCommand.Handle(mockContext))
    34  	assert.True(t, file.Exists(up))
    35  	assert.True(t, file.Exists(down))
    36  	assert.Nil(t, file.Remove("database"))
    37  
    38  	mockConfig.AssertExpectations(t)
    39  }