Skärp testdatabas: TEST_DATABASE_URL endast, cibello_test, auto-migrate

This commit is contained in:
Sven (AAMOS AI)
2026-08-06 17:01:17 +07:00
parent 03e30755dc
commit fd5c828f96
5 changed files with 24 additions and 8 deletions
+1 -1
View File
@@ -11,7 +11,7 @@
},
"scripts": {
"typecheck": "tsc --noEmit",
"test": "vitest run --passWithNoTests",
"test": "tsx src/migrate.ts && vitest run --passWithNoTests",
"db:generate": "drizzle-kit generate",
"db:migrate": "tsx src/migrate.ts",
"db:seed": "tsx src/seed/run.ts"
+9 -2
View File
@@ -12,17 +12,24 @@ let sharedPool: pg.Pool | undefined;
* (minsta möjliga privilegier, spec §52).
*/
export function createDatabase(connectionString?: string) {
const isTest = process.env.NODE_ENV === "test" || process.env.VITEST !== undefined;
const url = connectionString ?? process.env.TEST_DATABASE_URL ?? process.env.DATABASE_URL;
if (!url) {
if (process.env.NODE_ENV === "test" || process.env.VITEST !== undefined) {
if (isTest) {
throw new Error(
"Missing DATABASE_URL / TEST_DATABASE_URL. Database tests must run against an explicit database URL and are not allowed to fall back to the dev database.",
"Sätt TEST_DATABASE_URL till en dedikerad testdatabas. Tester får aldrig använda DATABASE_URL.",
);
}
throw new Error("Missing DATABASE_URL. Set it in your .env or environment before starting the app.");
}
if (isTest && !process.env.TEST_DATABASE_URL) {
throw new Error(
"Sätt TEST_DATABASE_URL till en dedikerad testdatabas. Tester får aldrig använda DATABASE_URL.",
);
}
const pool = new pg.Pool({
connectionString: url,
max: Number(process.env.DATABASE_POOL_MAX ?? 10),