diff options
Diffstat (limited to 'database_test.go')
| -rw-r--r-- | database_test.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/database_test.go b/database_test.go new file mode 100644 index 0000000..fce0c02 --- /dev/null +++ b/database_test.go @@ -0,0 +1,44 @@ +package main + +import ( + "fmt" + "os" + "path/filepath" + "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 { + name := fmt.Sprintf(migrationFilePattern, i+1) + path := filepath.Join(migrationDir, name) + + expectation := fmt.Sprintf("PRAGMA user_version = %d;", i+1) + if !strings.HasPrefix(migration, expectation) { + t.Fatalf("Expected '%s' at start of '%s'.", expectation, path) + } + + n := strings.Count(migration, `user_version`) + if n != 1 { + t.Fatalf( + "'user_version' was mentioned more than once in %s. "+ + "This is likely not intended.", + path, + ) + } + } +} |
