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  }