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