35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
import { mapDatabaseError } from "../src/errors.js";
|
|
|
|
test("database business errors map to stable API responses", () => {
|
|
const insufficient = mapDatabaseError({
|
|
code: "P0001",
|
|
message: "CONDON_INSUFFICIENT_BALANCE"
|
|
});
|
|
assert.equal(insufficient.statusCode, 422);
|
|
assert.equal(insufficient.code, "INSUFFICIENT_BALANCE");
|
|
|
|
const duplicate = mapDatabaseError({
|
|
code: "23505",
|
|
message: "CONDON_CONFIRMATION_NO_EXISTS"
|
|
});
|
|
assert.equal(duplicate.statusCode, 409);
|
|
assert.equal(duplicate.code, "CONFLICT");
|
|
|
|
const invalid = mapDatabaseError({
|
|
code: "22023",
|
|
message: "CONDON_CROSS_YEAR_STAY_NOT_SUPPORTED"
|
|
});
|
|
assert.equal(invalid.statusCode, 400);
|
|
assert.equal(invalid.code, "BUSINESS_RULE_VIOLATION");
|
|
|
|
const unknown = mapDatabaseError({
|
|
code: "XX000",
|
|
message: "internal database details"
|
|
});
|
|
assert.equal(unknown.statusCode, 500);
|
|
assert.equal(unknown.message, "An internal error occurred");
|
|
assert.equal(unknown.message.includes("database details"), false);
|
|
});
|