geocrop-platform./apps/nextgen/server/tests/setup.js

32 lines
1.2 KiB
JavaScript

// Shared server-test bootstrap.
//
// The Express app transitively imports every controller at top level, and
// several controllers immediately issue SQL queries (e.g. attachments listing
// during attach-route registration). The simplest reliable way to satisfy
// those is to point DB_PATH at the real, fully-populated dev database
// (data/school.db) so every controller sees the full schema + demo data.
//
// The real DB is the dev DB; tests are read-mostly and use demo accounts.
// We never modify real data — login tests use the seeded admin creds.
const path = require('path');
const fs = require('fs');
function pointAtDevDb() {
// The worktree may not have a real data/school.db. Fall back to the
// main checkout's copy if needed.
let dbFile = path.join(__dirname, '..', 'data', 'school.db');
if (!fs.existsSync(dbFile)) {
const mainCheckout = path.resolve(__dirname, '..', '..', '..', 'server', 'data', 'school.db');
if (fs.existsSync(mainCheckout)) {
fs.mkdirSync(path.dirname(dbFile), { recursive: true });
fs.copyFileSync(mainCheckout, dbFile);
} else {
throw new Error(`No dev database found at ${dbFile} or ${mainCheckout}`);
}
}
process.env.DB_PATH = dbFile;
}
module.exports = { pointAtDevDb };