github.com/gogriddy/goose@v0.0.0-20180817174216-2c751e0981c8/cmd/goose/cmd_create_integration_test.go (about)

     1  package main
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path/filepath"
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/CloudCom/goose/lib/goose"
    11  	"github.com/stretchr/testify/assert"
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  func TestIntegrationCreate_sql(t *testing.T) {
    16  	td, err := ioutil.TempDir("", "goose-test-")
    17  	require.NoError(t, err)
    18  	defer os.RemoveAll(td)
    19  
    20  	migrationsDir := filepath.Join(td, "migrations")
    21  	err = os.MkdirAll(migrationsDir, 0700)
    22  	require.NoError(t, err)
    23  
    24  	status, out, err := run(
    25  		[]string{"create", "-type", "sql", "mymigration"},
    26  		map[string]string{
    27  			"DB_DRIVER":         "sqlite3",
    28  			"DB_MIGRATIONS_DIR": migrationsDir,
    29  		},
    30  	)
    31  	require.NoError(t, err)
    32  
    33  	assert.Equal(t, 0, status)
    34  
    35  	require.Contains(t, out, migrationsDir)
    36  	i := strings.Index(out, migrationsDir)
    37  	fn := out[i:]
    38  	fn = strings.Fields(fn)[0]
    39  
    40  	fBS, err := ioutil.ReadFile(fn)
    41  	require.NoError(t, err)
    42  
    43  	tmplBS, err := goose.Asset("templates/migration.sql.tmpl")
    44  	require.NoError(t, err)
    45  	assert.Equal(t, string(tmplBS), string(fBS))
    46  }