@@ -12,22 +12,59 @@ import (
12
12
)
13
13
14
14
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 ) {
16
16
// Setup in-memory fs
17
17
fsys := afero .NewMemMapFs ()
18
18
// Setup empty stdin
19
19
stdin , err := fsys .Create ("/dev/stdin" )
20
20
require .NoError (t , err )
21
21
// Run test
22
- assert .NoError (t , Run ("test_migrate" , stdin , fsys ))
22
+ assert .NoError (t , Run (false , "test_migrate" , stdin , fsys ))
23
23
// Validate output
24
24
files , err := afero .ReadDir (fsys , utils .MigrationsDir )
25
25
assert .NoError (t , err )
26
26
assert .Equal (t , 1 , len (files ))
27
27
assert .Regexp (t , `([0-9]{14})_test_migrate\.sql` , files [0 ].Name ())
28
28
})
29
29
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;\n drop 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 ) {
31
68
// Setup in-memory fs
32
69
fsys := afero .NewMemMapFs ()
33
70
// Setup stdin
@@ -38,7 +75,7 @@ func TestNewCommand(t *testing.T) {
38
75
require .NoError (t , err )
39
76
require .NoError (t , w .Close ())
40
77
// Run test
41
- assert .NoError (t , Run ("test_migrate " , r , fsys ))
78
+ assert .NoError (t , Run (true , "repeatable_test_migrate " , r , fsys ))
42
79
// Validate output
43
80
files , err := afero .ReadDir (fsys , utils .MigrationsDir )
44
81
assert .NoError (t , err )
@@ -56,7 +93,8 @@ func TestNewCommand(t *testing.T) {
56
93
stdin , err := fsys .Create ("/dev/stdin" )
57
94
require .NoError (t , err )
58
95
// 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 )))
60
98
})
61
99
62
100
t .Run ("throws error on closed pipe" , func (t * testing.T ) {
@@ -67,6 +105,7 @@ func TestNewCommand(t *testing.T) {
67
105
require .NoError (t , err )
68
106
require .NoError (t , r .Close ())
69
107
// 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 ))
71
110
})
72
111
}
0 commit comments