@@ -21,6 +21,51 @@ func TestNewMigration(t *testing.T) {
21
21
require .Equal (t , migration .Lock , new )
22
22
}
23
23
24
+ func TestMigrationOrder (t * testing.T ) {
25
+ a := mkTable ("a" ,
26
+ mkCol ("id" , SerialColumn , true , false , nil ),
27
+ mkCol ("name" , TextColumn , false , true , nil ),
28
+ )
29
+
30
+ b := mkTable ("b" ,
31
+ mkCol ("id" , SerialColumn , true , false , nil ),
32
+ mkCol ("a_id" , SerialColumn , false , true , mkRef ("a" , "id" , true )),
33
+ )
34
+
35
+ c := mkTable ("c" ,
36
+ mkCol ("id" , SerialColumn , true , false , nil ),
37
+ mkCol ("a_id" , SerialColumn , false , true , mkRef ("a" , "id" , true )),
38
+ mkCol ("b_id" , SerialColumn , false , true , mkRef ("b" , "id" , true )),
39
+ )
40
+
41
+ d := mkTable ("d" ,
42
+ mkCol ("id" , SerialColumn , true , false , nil ),
43
+ mkCol ("name" , TextColumn , false , true , nil ),
44
+ )
45
+
46
+ old := mkSchema ()
47
+ new := mkSchema (a , b , c , d )
48
+ migration , err := NewMigration (old , new )
49
+ require .NoError (t , err )
50
+
51
+ expectedUp := ChangeSet {
52
+ & CreateTable {a },
53
+ & CreateTable {b },
54
+ & CreateTable {c },
55
+ & CreateTable {d },
56
+ }
57
+
58
+ expectedDown := ChangeSet {
59
+ & DropTable {"d" },
60
+ & DropTable {"c" },
61
+ & DropTable {"b" },
62
+ & DropTable {"a" },
63
+ }
64
+
65
+ require .Equal (t , expectedUp , migration .Up )
66
+ require .Equal (t , expectedDown , migration .Down )
67
+ }
68
+
24
69
func TestNewMigration_SelfRef (t * testing.T ) {
25
70
old := mkSchema ()
26
71
new := mkSchema (mkTable (
0 commit comments