import { expect, test } from "bun:test"; import { generateQueriesFile, parseQueries } from "../src/generate.ts"; const queries = parseQueries(`-- name: GetUser :one\nSELECT * FROM users WHERE email = :email;\n`); test("the generated header records the dialect it was built for", () => { // The same command emits different SQL per dialect, so a build under another // profile rewrites the committed file. The stamp makes that visible in the // diff instead of looking like unexplained churn. expect(generateQueriesFile(queries, [], "sqlite")).toContain("(dialect: sqlite)"); expect(generateQueriesFile(queries, [], "postgres")).toContain("(dialect: postgres)"); }); test("placeholder style follows the dialect", () => { expect(generateQueriesFile(queries, [], "sqlite")).toContain("email = ?"); expect(generateQueriesFile(queries, [], "postgres")).toContain("email = $1"); }); test("generation is deterministic for a fixed dialect", () => { const first = generateQueriesFile(queries, [], "postgres"); const second = generateQueriesFile(queries, [], "postgres"); expect(first).toBe(second); });