All checks were successful
Build and Publish Docker Image / build-and-push (push) Successful in 46s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
32 lines
1.5 KiB
TypeScript
32 lines
1.5 KiB
TypeScript
// Points the app at a throwaway database and uploads directory before any app
|
|
// module is evaluated. api/config.ts reads the environment and api/model/db.ts
|
|
// opens the database at import time, 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.
|
|
import { DatabaseSync } from "node:sqlite";
|
|
|
|
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 = () => {};
|
|
}
|
|
|
|
// A fresh database is built from schema.sql, exactly as api/db/init.ts does.
|
|
const db = new DatabaseSync(`${TEST_DIR}/gerbeur.db`);
|
|
db.exec(
|
|
Deno.readTextFileSync(new URL("../db/schema.sql", import.meta.url)),
|
|
);
|
|
db.close();
|