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>
48 lines
1.0 KiB
Go
48 lines
1.0 KiB
Go
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))
|
|
}
|
|
}
|