import { Database } from "@db/sqlite"; import { _resetDbForTest, _setDbForTest, addWebhookSubscription, upsertNote, type WebhookVerb, } from "../../src/data/db.ts"; import { applyMigrations } from "../../src/migrations/apply.ts"; import type { Note } from "../../src/data/note.ts"; export const withTestDb = ( fn: (db: Database) => Promise | void, ): () => Promise => { return async () => { const db = new Database(":memory:"); applyMigrations(db); _setDbForTest(db); try { await fn(db); } finally { _resetDbForTest(); db.close(); } }; }; let seedCounter = 0; export const seedNote = (overrides: Partial = {}): Note => { seedCounter++; const note: Note = { did: overrides.did ?? "did:plc:test", rkey: overrides.rkey ?? `seed${seedCounter.toString().padStart(6, "0")}`, title: overrides.title ?? "Test title", publishedAt: overrides.publishedAt ?? "2026-01-01T00:00:00.000Z", createdAt: overrides.createdAt ?? "2026-01-01T00:00:00.000Z", discoverable: overrides.discoverable, language: overrides.language, content: overrides.content, }; upsertNote(note); return note; }; export const seedWebhook = (overrides: { did?: string; method?: string; url?: string; token?: string; verb?: WebhookVerb; } = {}) => { return addWebhookSubscription({ did: overrides.did ?? "did:plc:test", method: overrides.method ?? "POST", url: overrides.url ?? "https://example.com/hook", token: overrides.token, verb: overrides.verb ?? "create", }); };