import { describe, expect, it, vi, afterEach } from 'vitest'; describe('lib/sql.js', () => { afterEach(() => { vi.resetModules(); vi.unstubAllGlobals(); delete process.env.POSTGRES_URL; delete process.env.DATABASE_URL; }); it('throws when POSTGRES_URL is unset', async () => { const { sql } = await import('../../lib/sql.js'); await expect(sql`SELECT 1`).rejects.toThrow('POSTGRES_URL is not set'); }); it('returns rows in the vercel/postgres shape', async () => { process.env.POSTGRES_URL = 'postgresql://example.com/postgres'; const mockQuery = vi.fn(async () => { const result = [{ id: 1 }]; result.count = 1; return result; }); vi.doMock('postgres', () => ({ default: vi.fn(() => mockQuery), })); const { sql } = await import('../../lib/sql.js'); const response = await sql`SELECT id FROM users WHERE id = ${1}`; expect(response).toEqual({ rows: [{ id: 1 }], rowCount: 1 }); }); });