From 089989ba777a2d36d218981aae3ef7ce09d08270 Mon Sep 17 00:00:00 2001 From: Kyle Isom Date: Thu, 26 Mar 2026 21:19:51 -0700 Subject: [PATCH] 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) --- internal/db/migrate_test.go | 47 +++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 internal/db/migrate_test.go diff --git a/internal/db/migrate_test.go b/internal/db/migrate_test.go new file mode 100644 index 0000000..74a2c95 --- /dev/null +++ b/internal/db/migrate_test.go @@ -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)) + } +}