185 lines
6.1 KiB
JavaScript
185 lines
6.1 KiB
JavaScript
const assert = require("assert");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const { loadModule, createRes } = require("../phase21/_shared.cjs");
|
|
|
|
const rootDir = path.resolve(__dirname, "..", "..");
|
|
|
|
const tests = [];
|
|
const test = (name, fn) => tests.push({ name, fn });
|
|
|
|
const read = (relativePath) =>
|
|
fs.readFileSync(path.join(rootDir, relativePath), "utf8");
|
|
|
|
test("cases get-incident-by-id facade delegates to legacy handler", async () => {
|
|
const calls = [];
|
|
const mod = loadModule("pages/api/cases/get-incident-by-id.js", {
|
|
legacyGetIncidentByIdHandler: async (req, res) => {
|
|
calls.push({ req, res });
|
|
return res.status(200).json({ ok: true, route: "incident-by-id" });
|
|
}
|
|
});
|
|
|
|
const req = { method: "GET", query: { searchString: "abc-123" } };
|
|
const res = createRes();
|
|
await mod.default(req, res);
|
|
|
|
assert.strictEqual(calls.length, 1);
|
|
assert.strictEqual(calls[0].req, req);
|
|
assert.strictEqual(calls[0].res, res);
|
|
});
|
|
|
|
test("cases get-case-message facade delegates to legacy handler", async () => {
|
|
const calls = [];
|
|
const mod = loadModule("pages/api/cases/get-case-message.js", {
|
|
legacyGetCaseMessageHandler: async (req, res) => {
|
|
calls.push({ req, res });
|
|
return res.status(200).json({ ok: true, route: "case-message" });
|
|
}
|
|
});
|
|
|
|
const req = { method: "GET", query: { id: "case-1" } };
|
|
const res = createRes();
|
|
await mod.default(req, res);
|
|
|
|
assert.strictEqual(calls.length, 1);
|
|
assert.strictEqual(calls[0].req, req);
|
|
assert.strictEqual(calls[0].res, res);
|
|
});
|
|
|
|
test("cases get-linked-cases facade delegates to legacy handler", async () => {
|
|
const calls = [];
|
|
const mod = loadModule("pages/api/cases/get-linked-cases.js", {
|
|
legacyGetLinkedCasesHandler: async (req, res) => {
|
|
calls.push({ req, res });
|
|
return res.status(200).json({ ok: true, route: "linked-cases" });
|
|
}
|
|
});
|
|
|
|
const req = { method: "GET", query: { parentincidentid: "parent-1" } };
|
|
const res = createRes();
|
|
await mod.default(req, res);
|
|
|
|
assert.strictEqual(calls.length, 1);
|
|
assert.strictEqual(calls[0].req, req);
|
|
assert.strictEqual(calls[0].res, res);
|
|
});
|
|
|
|
test("cases get-sips-events facade delegates to legacy handler", async () => {
|
|
const calls = [];
|
|
const mod = loadModule("pages/api/cases/get-sips-events.js", {
|
|
legacyGetSipsEventsHandler: async (req, res) => {
|
|
calls.push({ req, res });
|
|
return res.status(200).json({ ok: true, route: "sips-events" });
|
|
}
|
|
});
|
|
|
|
const req = { method: "GET", query: { caseid: "sips-1" } };
|
|
const res = createRes();
|
|
await mod.default(req, res);
|
|
|
|
assert.strictEqual(calls.length, 1);
|
|
assert.strictEqual(calls[0].req, req);
|
|
assert.strictEqual(calls[0].res, res);
|
|
});
|
|
|
|
test("cases get-sips-media facade delegates to legacy handler", async () => {
|
|
const calls = [];
|
|
const mod = loadModule("pages/api/cases/get-sips-media.js", {
|
|
legacyGetSipsMediaHandler: async (req, res) => {
|
|
calls.push({ req, res });
|
|
return res.status(200).json({ ok: true, route: "sips-media" });
|
|
}
|
|
});
|
|
|
|
const req = { method: "GET", query: { caseid: "sips-2" } };
|
|
const res = createRes();
|
|
await mod.default(req, res);
|
|
|
|
assert.strictEqual(calls.length, 1);
|
|
assert.strictEqual(calls[0].req, req);
|
|
assert.strictEqual(calls[0].res, res);
|
|
});
|
|
|
|
test("legacy case-details endpoint handlers remain present", async () => {
|
|
const legacyFiles = [
|
|
"pages/api/endpoint/getincidentbyid_api.js",
|
|
"pages/api/endpoint/getcasemessage_api.js",
|
|
"pages/api/endpoint/getlinkedcases_api.js",
|
|
"pages/api/endpoint/getsipsevents_api.js",
|
|
"pages/api/endpoint/getsipsmedia_api.js",
|
|
"pages/api/endpoint/getbasicsearch_api.js",
|
|
"pages/api/endpoint/getbasicsearchdetails_api.js",
|
|
"pages/api/endpoint/getsearchdocumentdetails_api.js"
|
|
];
|
|
|
|
legacyFiles.forEach((filePath) => {
|
|
assert.strictEqual(
|
|
fs.existsSync(path.join(rootDir, filePath)),
|
|
true,
|
|
filePath
|
|
);
|
|
});
|
|
});
|
|
|
|
test("caseDirectService adopted case-details reads now target grouped cases routes", async () => {
|
|
const source = read("actions/services/caseDirectService.js");
|
|
|
|
assert.match(source, /\/api\/cases\/get-incident-by-id/);
|
|
assert.match(source, /\/api\/cases\/get-case-message/);
|
|
assert.match(source, /\/api\/cases\/get-sips-events/);
|
|
assert.match(source, /\/api\/cases\/get-sips-media/);
|
|
});
|
|
|
|
test("searchDirectService linked-cases read now targets grouped cases route", async () => {
|
|
const source = read("actions/services/searchDirectService.js");
|
|
|
|
assert.match(source, /\/api\/cases\/get-linked-cases\?/);
|
|
});
|
|
|
|
test("case-details service contracts remain unchanged", async () => {
|
|
const caseSource = read("actions/services/caseDirectService.js");
|
|
const searchSource = read("actions/services/searchDirectService.js");
|
|
|
|
assert.match(caseSource, /id: searchString/);
|
|
assert.match(caseSource, /searchString/);
|
|
assert.match(caseSource, /caseid/);
|
|
assert.match(searchSource, /parentincidentid=/);
|
|
});
|
|
|
|
test("adjacent search and documents routes remain outside case-details adoption scope", async () => {
|
|
const caseSource = read("actions/services/caseDirectService.js");
|
|
const searchSource = read("actions/services/searchDirectService.js");
|
|
|
|
assert.match(searchSource, /\/api\/endpoint\/getbasicsearch_api/);
|
|
assert.match(searchSource, /\/api\/endpoint\/getbasicsearchdetails_api/);
|
|
assert.match(
|
|
searchSource,
|
|
/\/api\/documents\/get-search-document-details\?/
|
|
);
|
|
assert.doesNotMatch(caseSource, /\/api\/cases\/get-case"/);
|
|
assert.doesNotMatch(caseSource, /\/api\/cases\/get-case-by-id/);
|
|
});
|
|
|
|
async function run() {
|
|
let failures = 0;
|
|
|
|
for (const { name, fn } of tests) {
|
|
try {
|
|
await fn();
|
|
console.log(`✓ ${name}`);
|
|
} catch (error) {
|
|
failures += 1;
|
|
console.error(`✗ ${name}`);
|
|
console.error(error);
|
|
}
|
|
}
|
|
|
|
if (failures > 0) {
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
run();
|