import { expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { readFileSync } from "node:fs"; const migration = readFileSync(new URL("../../../migrations/0047_billing_release.sql", import.meta.url), "utf8"); test("0047 backfills past_due_since for subscriptions already past_due at deploy", () => { const db = new Database(":memory:"); db.exec(`CREATE TABLE usage_days (account_id TEXT, meter TEXT, day TEXT, quantity REAL); CREATE TABLE billing_customers (account_id TEXT PRIMARY KEY, stripe_customer_id TEXT, subscription_status TEXT); INSERT INTO billing_customers VALUES ('a', 'cus_a', 'past_due'), ('b', 'cus_b', 'active');`); const before = Date.now() - 1000; db.exec(migration); const rows = db.query("SELECT past_due_since AS since FROM billing_customers ORDER BY account_id").all() as { since: number | null; }[]; expect(rows[0].since).toBeGreaterThanOrEqual(before); expect(rows[0].since).toBeLessThanOrEqual(Date.now() + 1000); expect(rows[1].since).toBeNull(); });