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
43 lines (39 loc) • 2.24 kB
JavaScript
const test = require('node:test'); //node test runner
const assert = require('node:assert/strict'); //assert helpers
const qtests = require('qtests'); //stubbing helper
const winston = require('winston'); //stubbed winston module
function reloadLogger() { //reload logger with current env
delete require.cache[require.resolve('../lib/logger')];
delete require.cache[require.resolve('../lib/config')];
return require('../lib/logger');
}
test('logger uses QERRORS_SERVICE_NAME env var', async () => {
const orig = process.env.QERRORS_SERVICE_NAME; //save original value
process.env.QERRORS_SERVICE_NAME = 'svc'; //set custom name
let captured; //will capture config passed to createLogger
const restore = qtests.stubMethod(winston, 'createLogger', (cfg) => { captured = cfg; return { defaultMeta: cfg.defaultMeta, warn() {}, info() {}, error() {} }; }); //include warn for startup check
const logger = await reloadLogger(); //reload module and await
try {
assert.equal(captured.defaultMeta.service, 'svc'); //verify custom service
assert.equal((await logger).defaultMeta.service, 'svc'); //logger carries meta
} finally {
restore(); //restore stubbed method
if (orig === undefined) { delete process.env.QERRORS_SERVICE_NAME; } else { process.env.QERRORS_SERVICE_NAME = orig; }
reloadLogger(); //reset cache
}
});
test('logger defaults QERRORS_SERVICE_NAME when unset', async () => {
const orig = process.env.QERRORS_SERVICE_NAME; //store original
delete process.env.QERRORS_SERVICE_NAME; //unset for default test
let captured; //capture config
const restore = qtests.stubMethod(winston, 'createLogger', (cfg) => { captured = cfg; return { defaultMeta: cfg.defaultMeta, warn() {}, info() {}, error() {} }; }); //include warn for startup check
const logger = await reloadLogger(); //reload module and await
try {
assert.equal(captured.defaultMeta.service, 'qerrors'); //uses default
assert.equal((await logger).defaultMeta.service, 'qerrors'); //logger meta default
} finally {
restore(); //restore stub
if (orig === undefined) { delete process.env.QERRORS_SERVICE_NAME; } else { process.env.QERRORS_SERVICE_NAME = orig; }
reloadLogger(); //restore cache
}
});