github.com/mg98/scriptup@v0.1.0/pkg/scriptup/down_test.go (about) 1 package scriptup 2 3 import ( 4 "errors" 5 "os" 6 "testing" 7 ) 8 9 func TestMigrateDown(t *testing.T) { 10 if err := os.WriteFile(createdTestFile, []byte("hello world\n1\n2\n3\n"), 0644); err != nil { 11 panic(err) 12 } 13 defer os.Remove(createdTestFile) 14 if err := os.WriteFile( 15 testCfg.FileDB, 16 []byte("20220618100116_create-file\n20220618104836_append-1-to-file\n20220618104839_append-2-to-file\n20220618104842_append-3-to-file\n"), 17 os.ModePerm, 18 ); err != nil { 19 panic(err) 20 } 21 defer os.Remove(testCfg.FileDB) 22 23 // down --steps=2 24 t.Run("2 steps", func(t *testing.T) { 25 if err := MigrateDown(testCfg, 2); err != nil { 26 t.Fatalf("command failed: %v", err) 27 } 28 fileBytes, err := os.ReadFile(createdTestFile) 29 if err != nil { 30 t.Fatalf("file should still exist after 2 steps") 31 } 32 if string(fileBytes) != "hello world\n1\n" { 33 t.Fatalf("migration ineffective: file does not have expected contents: %s", string(fileBytes)) 34 } 35 storageBytes, err := os.ReadFile(testCfg.FileDB) 36 if err != nil { 37 panic(err) 38 } 39 if string(storageBytes) != "20220618100116_create-file\n20220618104836_append-1-to-file\n" { 40 t.Fatalf("state file not as expected, got %s", string(storageBytes)) 41 } 42 }) 43 44 // down 45 t.Run("remaining", func(t *testing.T) { 46 if err := MigrateDown(testCfg, -1); err != nil { 47 t.Fatalf("command failed: %v", err) 48 } 49 if _, err := os.Stat(createdTestFile); !errors.Is(err, os.ErrNotExist) { 50 t.Fatalf("migration ineffective: %v", err) 51 } 52 }) 53 54 }