UNPKG

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
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 } });