package main import ( "fmt" "os" "strings" "testing" ) func TestMigrationNumber(t *testing.T) { n := len(migrations) entries, err := os.ReadDir(migrationDir) if err != nil { t.Fatalf("Failed to determine number of migration files: %v", err) } expectation := len(entries) if n != expectation { t.Fatalf("Expected %d migration files but got %d.", expectation, n) } } func TestMigrationContent(t *testing.T) { for i, migration := range migrations { path := migrationPath(i) expectation := fmt.Sprintf("PRAGMA user_version = %d;", i+1) if !strings.HasPrefix(migration, expectation) { t.Fatalf("Expected '%s' at start of '%s'.", expectation, path) } } } func TestMigrations(t *testing.T) { db, _ := emptyDB(t) userVersion, err := UserVersion(db) if err != nil { t.Fatalf("Failed to get initial user_version: %v", err) } if userVersion != 0 { t.Fatalf("Expected user_version 0 but got %d.", userVersion) } for i := range migrations { path := migrationPath(i) err := Migrate(db, i) if err != nil { t.Fatalf("Failed to execute migration %s: %v", path, err) } userVersion, err = UserVersion(db) if err != nil { t.Fatalf("Failed to get user_version after migration: %v", err) } expected := i + 1 if userVersion != expected { t.Fatalf( "Expected user_version %d after running %s but got %d.", expected, path, userVersion, ) } } }