simple-leveled-log-methods
Version:
a simple and opinionated logging library. plays well with aws lambda + cloudwatch.
50 lines • 2.28 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("./constants");
const generateLogMethod_1 = require("./generateLogMethod");
describe('generateLogMethod', () => {
beforeEach(() => jest.clearAllMocks());
it('should generate a method that outputs to console.log if below warn level', () => {
const spy = jest.spyOn(console, 'log');
const logError = (0, generateLogMethod_1.generateLogMethod)({
level: constants_1.LogLevel.INFO,
minimalLogLevel: constants_1.LogLevel.DEBUG,
});
logError('testMessage');
expect(spy).toHaveBeenCalledTimes(1);
});
it('should generate a method that outputs to console.warn if at or above warn level', () => {
const spy = jest.spyOn(console, 'warn');
const logError = (0, generateLogMethod_1.generateLogMethod)({
level: constants_1.LogLevel.ERROR,
minimalLogLevel: constants_1.LogLevel.DEBUG,
});
logError('testMessage');
expect(spy).toHaveBeenCalledTimes(1);
});
it('should generate a method that outputs timestamp, level, message, and metadata', () => {
const spy = jest.spyOn(console, 'warn');
const logError = (0, generateLogMethod_1.generateLogMethod)({
level: constants_1.LogLevel.ERROR,
minimalLogLevel: constants_1.LogLevel.DEBUG,
});
logError('testMessage', { nested: { object: true } });
expect(spy).toHaveBeenCalledTimes(1);
expect(spy).toHaveBeenCalledWith(expect.objectContaining({
level: constants_1.LogLevel.ERROR,
message: 'testMessage',
metadata: JSON.stringify({ nested: { object: true } }),
}));
expect(spy.mock.calls[0][0]).toHaveProperty('timestamp');
});
it('should not output anything if level is below minimum', () => {
const spy = jest.spyOn(console, 'log');
const logDebug = (0, generateLogMethod_1.generateLogMethod)({
level: constants_1.LogLevel.DEBUG,
minimalLogLevel: constants_1.LogLevel.WARN,
});
logDebug('testMessage');
expect(spy).not.toHaveBeenCalled();
});
});
//# sourceMappingURL=generateLogMethod.test.js.map
;