Add migration idempotency test
Verifies that calling Migrate() twice succeeds without error and that seed data (2 zones, 12 records) is present exactly once. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
47
internal/db/migrate_test.go
Normal file
47
internal/db/migrate_test.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestMigrateIdempotent(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
database, err := Open(filepath.Join(dir, "test.db"))
|
||||
if err != nil {
|
||||
t.Fatalf("open db: %v", err)
|
||||
}
|
||||
t.Cleanup(func() { _ = database.Close() })
|
||||
|
||||
if err := database.Migrate(); err != nil {
|
||||
t.Fatalf("first migrate: %v", err)
|
||||
}
|
||||
if err := database.Migrate(); err != nil {
|
||||
t.Fatalf("second migrate: %v", err)
|
||||
}
|
||||
|
||||
// Verify seed data is present exactly once.
|
||||
zones, err := database.ListZones()
|
||||
if err != nil {
|
||||
t.Fatalf("list zones: %v", err)
|
||||
}
|
||||
if len(zones) != 2 {
|
||||
t.Fatalf("got %d zones, want 2", len(zones))
|
||||
}
|
||||
|
||||
records, err := database.ListRecords("svc.mcp.metacircular.net", "", "")
|
||||
if err != nil {
|
||||
t.Fatalf("list records: %v", err)
|
||||
}
|
||||
if len(records) != 8 {
|
||||
t.Fatalf("got %d svc records, want 8", len(records))
|
||||
}
|
||||
|
||||
records, err = database.ListRecords("mcp.metacircular.net", "", "")
|
||||
if err != nil {
|
||||
t.Fatalf("list records: %v", err)
|
||||
}
|
||||
if len(records) != 4 {
|
||||
t.Fatalf("got %d mcp records, want 4", len(records))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user