Skip to content

Commit 5d236f4

Browse files
committed
[ADD] tests for new migration to include repeatable flag
1 parent 3d5a48e commit 5d236f4

File tree

1 file changed

+45
-6
lines changed

1 file changed

+45
-6
lines changed

internal/migration/new/new_test.go

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,59 @@ import (
1212
)
1313

1414
func TestNewCommand(t *testing.T) {
15-
t.Run("creates new migration file", func(t *testing.T) {
15+
t.Run("creates new common migration file", func(t *testing.T) {
1616
// Setup in-memory fs
1717
fsys := afero.NewMemMapFs()
1818
// Setup empty stdin
1919
stdin, err := fsys.Create("/dev/stdin")
2020
require.NoError(t, err)
2121
// Run test
22-
assert.NoError(t, Run("test_migrate", stdin, fsys))
22+
assert.NoError(t, Run(false, "test_migrate", stdin, fsys))
2323
// Validate output
2424
files, err := afero.ReadDir(fsys, utils.MigrationsDir)
2525
assert.NoError(t, err)
2626
assert.Equal(t, 1, len(files))
2727
assert.Regexp(t, `([0-9]{14})_test_migrate\.sql`, files[0].Name())
2828
})
2929

30-
t.Run("streams content from pipe", func(t *testing.T) {
30+
t.Run("creates new repeatable migration file", func(t *testing.T) {
31+
// Setup in-memory fs
32+
fsys := afero.NewMemMapFs()
33+
// Setup empty stdin
34+
stdin, err := fsys.Create("/dev/stdin")
35+
require.NoError(t, err)
36+
// Run test
37+
assert.NoError(t, Run(true, "repeatable_test_migrate", stdin, fsys))
38+
// Validate output
39+
files, err := afero.ReadDir(fsys, utils.MigrationsDir)
40+
assert.NoError(t, err)
41+
assert.Equal(t, 1, len(files))
42+
assert.Regexp(t, `r_repeatable_test_migrate\.sql`, files[0].Name())
43+
})
44+
45+
t.Run("streams content from pipe to common migration", func(t *testing.T) {
46+
// Setup in-memory fs
47+
fsys := afero.NewMemMapFs()
48+
// Setup stdin
49+
r, w, err := os.Pipe()
50+
require.NoError(t, err)
51+
script := "create table pet;\ndrop table pet;\n"
52+
_, err = w.WriteString(script)
53+
require.NoError(t, err)
54+
require.NoError(t, w.Close())
55+
// Run test
56+
assert.NoError(t, Run(false, "test_migrate", r, fsys))
57+
// Validate output
58+
files, err := afero.ReadDir(fsys, utils.MigrationsDir)
59+
assert.NoError(t, err)
60+
assert.Equal(t, 1, len(files))
61+
path := filepath.Join(utils.MigrationsDir, files[0].Name())
62+
contents, err := afero.ReadFile(fsys, path)
63+
assert.NoError(t, err)
64+
assert.Equal(t, []byte(script), contents)
65+
})
66+
67+
t.Run("streams content from pipe to repeatable migration", func(t *testing.T) {
3168
// Setup in-memory fs
3269
fsys := afero.NewMemMapFs()
3370
// Setup stdin
@@ -38,7 +75,7 @@ func TestNewCommand(t *testing.T) {
3875
require.NoError(t, err)
3976
require.NoError(t, w.Close())
4077
// Run test
41-
assert.NoError(t, Run("test_migrate", r, fsys))
78+
assert.NoError(t, Run(true, "repeatable_test_migrate", r, fsys))
4279
// Validate output
4380
files, err := afero.ReadDir(fsys, utils.MigrationsDir)
4481
assert.NoError(t, err)
@@ -56,7 +93,8 @@ func TestNewCommand(t *testing.T) {
5693
stdin, err := fsys.Create("/dev/stdin")
5794
require.NoError(t, err)
5895
// Run test
59-
assert.Error(t, Run("test_migrate", stdin, afero.NewReadOnlyFs(fsys)))
96+
assert.Error(t, Run(false, "test_migrate", stdin, afero.NewReadOnlyFs(fsys)))
97+
assert.Error(t, Run(true, "repeatable_test_migrate", stdin, afero.NewReadOnlyFs(fsys)))
6098
})
6199

62100
t.Run("throws error on closed pipe", func(t *testing.T) {
@@ -67,6 +105,7 @@ func TestNewCommand(t *testing.T) {
67105
require.NoError(t, err)
68106
require.NoError(t, r.Close())
69107
// Run test
70-
assert.Error(t, Run("test_migrate", r, fsys))
108+
assert.Error(t, Run(false, "test_migrate", r, fsys))
109+
assert.Error(t, Run(true, "repeatable_test_migrate", r, fsys))
71110
})
72111
}

0 commit comments

Comments
 (0)