Files
generalFunctions/test/logger.test.js
2026-02-12 10:14:56 +01:00

66 lines
1.7 KiB
JavaScript

const test = require('node:test');
const assert = require('node:assert/strict');
const Logger = require('../src/helper/logger.js');
function withPatchedConsole(fn) {
const original = {
debug: console.debug,
info: console.info,
warn: console.warn,
error: console.error,
};
const calls = [];
console.debug = (...args) => calls.push(['debug', ...args]);
console.info = (...args) => calls.push(['info', ...args]);
console.warn = (...args) => calls.push(['warn', ...args]);
console.error = (...args) => calls.push(['error', ...args]);
try {
fn(calls);
} finally {
console.debug = original.debug;
console.info = original.info;
console.warn = original.warn;
console.error = original.error;
}
}
test('respects log level threshold', () => {
withPatchedConsole((calls) => {
const logger = new Logger(true, 'warn', 'T');
logger.debug('a');
logger.info('b');
logger.warn('c');
logger.error('d');
const levels = calls.map((c) => c[0]);
assert.deepEqual(levels, ['warn', 'error']);
});
});
test('toggleLogging disables output', () => {
withPatchedConsole((calls) => {
const logger = new Logger(true, 'debug', 'T');
logger.toggleLogging();
logger.debug('x');
logger.error('y');
assert.equal(calls.length, 0);
});
});
test('setLogLevel updates to valid level', () => {
const logger = new Logger(true, 'debug', 'T');
logger.setLogLevel('error');
assert.equal(logger.logLevel, 'error');
});
test('setLogLevel with invalid value should not throw', () => {
withPatchedConsole(() => {
const logger = new Logger(true, 'debug', 'T');
assert.doesNotThrow(() => logger.setLogLevel('invalid-level'));
assert.equal(logger.logLevel, 'debug');
});
});