...

Source file src/github.com/ory/x/dbal/migrate_test.go

Documentation: github.com/ory/x/dbal

     1  package dbal
     2  
     3  import (
     4  	"sort"
     5  	"strings"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  
    11  	"github.com/ory/x/logrusx"
    12  	"github.com/ory/x/stringslice"
    13  )
    14  
    15  func TestNewPackerMigrationSource(t *testing.T) {
    16  	m, err := NewPackerMigrationSource(logrusx.New("", ""), AssetNames(), Asset, []string{"stub/a", "stub/b"}, false)
    17  	require.NoError(t, err)
    18  	assert.True(t, stringslice.Has(m.Box.List(), "/migrations/sql/1.sql"), "%v", m.Box.List())
    19  	assert.True(t, stringslice.Has(m.Box.List(), "/migrations/sql/2.sql"), "%v", m.Box.List())
    20  	assert.True(t, stringslice.Has(m.Box.List(), "/migrations/sql/3.sql"), "%v", m.Box.List())
    21  
    22  	m, err = NewPackerMigrationSource(logrusx.New("", ""), AssetNames(), Asset, []string{"stub/a", "stub/c"}, false)
    23  	require.NoError(t, err)
    24  	assert.True(t, stringslice.Has(m.Box.List(), "/migrations/sql/1.sql"), "%v", m.Box.List())
    25  	assert.True(t, stringslice.Has(m.Box.List(), "/migrations/sql/2.sql"), "%v", m.Box.List())
    26  	assert.True(t, stringslice.Has(m.Box.List(), "/migrations/sql/3.sql"), "%v", m.Box.List())
    27  	assert.True(t, stringslice.Has(m.Box.List(), "/migrations/sql/4.sql"), "%v", m.Box.List())
    28  }
    29  
    30  func TestPackerOmitExtensionEnabled(t *testing.T) {
    31  	m, err := NewPackerMigrationSource(logrusx.New("", ""), AssetNames(), Asset, []string{"stub/a", "stub/b"}, true)
    32  	require.NoError(t, err)
    33  
    34  	ms, err := m.FindMigrations()
    35  	require.NoError(t, err)
    36  
    37  	for _, mm := range ms {
    38  		require.False(t, strings.Contains(mm.Id, ".sql"))
    39  	}
    40  }
    41  
    42  func TestPackerOmitExtensionDisabled(t *testing.T) {
    43  	m, err := NewPackerMigrationSource(logrusx.New("", ""), AssetNames(), Asset, []string{"stub/a", "stub/b"}, false)
    44  	require.NoError(t, err)
    45  
    46  	ms, err := m.FindMigrations()
    47  	require.NoError(t, err)
    48  
    49  	for _, mm := range ms {
    50  		require.True(t, strings.Contains(mm.Id, ".sql"))
    51  	}
    52  }
    53  
    54  func TestMigrationFileSort(t *testing.T) {
    55  	m := migrationFiles{
    56  		{Filename: "4.sql"},
    57  		{Filename: "1.sql"},
    58  		{Filename: "2.sql"},
    59  		{Filename: "6.sql"},
    60  	}
    61  	sort.Sort(m)
    62  	assert.EqualValues(t, migrationFiles{
    63  		{Filename: "1.sql"},
    64  		{Filename: "2.sql"},
    65  		{Filename: "4.sql"},
    66  		{Filename: "6.sql"},
    67  	}, m)
    68  }
    69  
    70  func TestFindMatchingTestMigrations(t *testing.T) {
    71  	m := map[string]*PackrMigrationSource{
    72  		DriverMySQL:       NewMustPackerMigrationSource(logrusx.New("", ""), AssetNames(), Asset, []string{"stub/a"}, false),
    73  		DriverPostgreSQL:  NewMustPackerMigrationSource(logrusx.New("", ""), AssetNames(), Asset, []string{"stub/a", "stub/b"}, false),
    74  		DriverCockroachDB: NewMustPackerMigrationSource(logrusx.New("", ""), AssetNames(), Asset, []string{"stub/a", "stub/c"}, false),
    75  	}
    76  
    77  	result := FindMatchingTestMigrations("stub/d/", m, AssetNames(), Asset)
    78  
    79  	mysql := result[DriverMySQL]
    80  	assert.True(t, stringslice.Has(mysql.Box.List(), "/migrations/sql/1_test.sql"), "%v", mysql.Box.List())
    81  	assert.True(t, stringslice.Has(mysql.Box.List(), "/migrations/sql/3_test.sql"), "%v", mysql.Box.List())
    82  	assert.True(t, len(mysql.Box.List()) == 2, "%v", len(mysql.Box.List()))
    83  
    84  	postgres := result[DriverPostgreSQL]
    85  	assert.True(t, stringslice.Has(postgres.Box.List(), "/migrations/sql/1_test.sql"), "%v", postgres.Box.List())
    86  	assert.True(t, stringslice.Has(postgres.Box.List(), "/migrations/sql/2_test.sql"), "%v", postgres.Box.List())
    87  	assert.True(t, stringslice.Has(postgres.Box.List(), "/migrations/sql/3_test.sql"), "%v", postgres.Box.List())
    88  	assert.True(t, len(postgres.Box.List()) == 3, "%v", len(postgres.Box.List()))
    89  
    90  	cockroach := result[DriverCockroachDB]
    91  	assert.True(t, stringslice.Has(cockroach.Box.List(), "/migrations/sql/1_test.sql"), "%v", cockroach.Box.List())
    92  	assert.True(t, stringslice.Has(cockroach.Box.List(), "/migrations/sql/2_test.sql"), "%v", cockroach.Box.List())
    93  	assert.True(t, stringslice.Has(cockroach.Box.List(), "/migrations/sql/3_test.sql"), "%v", cockroach.Box.List())
    94  	assert.True(t, stringslice.Has(cockroach.Box.List(), "/migrations/sql/4_test.sql"), "%v", cockroach.Box.List())
    95  	assert.True(t, len(cockroach.Box.List()) == 4, "%v", len(cockroach.Box.List()))
    96  }
    97  

View as plain text