qerrors
Version:
Intelligent error handling middleware with AI-powered analysis, environment validation, caching, and production-ready logging. Provides OpenAI-based error suggestions, queue management, retry mechanisms, and comprehensive configuration options for Node.js
54 lines (50 loc) • 2.99 kB
JavaScript
const test = require('node:test'); //node test runner
const assert = require('node:assert/strict'); //assert helpers
const qtests = require('qtests'); //stub helper
function loadQerrors() {
delete require.cache[require.resolve('../lib/qerrors')];
return require('../lib/qerrors');
}
test('warn when limits exceed safe threshold', async () => {
const origConc = process.env.QERRORS_CONCURRENCY; //backup concurrency
const origQueue = process.env.QERRORS_QUEUE_LIMIT; //backup queue limit
process.env.QERRORS_CONCURRENCY = '2000'; //excessive concurrency
process.env.QERRORS_QUEUE_LIMIT = '2000'; //excessive queue
const logger = await require('../lib/logger'); //logger instance
let warned = false; //track warn calls
const restoreWarn = qtests.stubMethod(logger, 'warn', () => { warned = true; });
try {
loadQerrors(); //module initialization triggers warning
await Promise.resolve(); //allow async logger call
} finally {
restoreWarn(); //restore logger.warn
if (origConc === undefined) { delete process.env.QERRORS_CONCURRENCY; } else { process.env.QERRORS_CONCURRENCY = origConc; }
if (origQueue === undefined) { delete process.env.QERRORS_QUEUE_LIMIT; } else { process.env.QERRORS_QUEUE_LIMIT = origQueue; }
delete require.cache[require.resolve('../lib/qerrors')]; //reset module
require('../lib/qerrors'); //reload defaults
}
assert.equal(warned, true); //expect warning emitted
});
test('limits below custom threshold do not warn', async () => { //verify config clamp usage
const origConc = process.env.QERRORS_CONCURRENCY; //backup concurrency value
const origQueue = process.env.QERRORS_QUEUE_LIMIT; //backup queue value
const origSafe = process.env.QERRORS_SAFE_THRESHOLD; //backup safe threshold
process.env.QERRORS_CONCURRENCY = '1500'; //value above default threshold
process.env.QERRORS_QUEUE_LIMIT = '1500'; //value above default threshold
process.env.QERRORS_SAFE_THRESHOLD = '2000'; //raise threshold so no warn expected
const logger = await require('../lib/logger'); //logger instance
let warned = false; //track warn state
const restoreWarn = qtests.stubMethod(logger, 'warn', () => { warned = true; });
try {
loadQerrors(); //reload with custom env values
await Promise.resolve(); //allow async logger call
} finally {
restoreWarn(); //restore logger.warn method
if (origConc === undefined) { delete process.env.QERRORS_CONCURRENCY; } else { process.env.QERRORS_CONCURRENCY = origConc; }
if (origQueue === undefined) { delete process.env.QERRORS_QUEUE_LIMIT; } else { process.env.QERRORS_QUEUE_LIMIT = origQueue; }
if (origSafe === undefined) { delete process.env.QERRORS_SAFE_THRESHOLD; } else { process.env.QERRORS_SAFE_THRESHOLD = origSafe; }
delete require.cache[require.resolve('../lib/qerrors')]; //reset cached module
require('../lib/qerrors'); //restore defaults
}
assert.equal(warned, false); //expect no warning when within custom threshold
});