// Points the app at a throwaway database and uploads directory before any app // module is evaluated. api/config.ts reads the environment and api/db/connection.ts // opens the database at import time, creating it from schema.sql, so this // module must be the first import of every test file — directly, or as // helpers.ts's first import. It imports nothing from the app itself, and it is // synchronous on purpose: a module with a top-level await doesn't hold back // the sibling imports that follow it. export const TEST_DIR = Deno.makeTempDirSync({ prefix: "gerbeur-test-" }); Deno.env.set("GERBEUR_DB_PATH", `${TEST_DIR}/gerbeur.db`); Deno.env.set("GERBEUR_UPLOADS_DIR", `${TEST_DIR}/uploads`); Deno.env.set("GERBEUR_JWT_SECRET", "test-secret-test-secret-test-secret"); Deno.env.set("GERBEUR_PUBLIC_URL", "http://gerbeur.test"); Deno.env.set("GERBEUR_ALLOWED_ORIGINS", "http://allowed.test"); // The suite never sends mail; the routes behave as on an instance without SMTP. Deno.env.delete("GERBEUR_SMTPS_URL"); // The migrations, the error middleware and failed fetches all log; a passing // run shouldn't drown in them. TEST_VERBOSE=1 brings them back for debugging. if (!Deno.env.get("TEST_VERBOSE")) { console.log = () => {}; console.error = () => {}; }