UNPKG

@genie-solutions/genie-logger

Version:

Reusable Node.js logger for platform Lambda services.

77 lines (61 loc) 1.98 kB
import { createLoggerFromContext, Logger, LoggerMetaData } from "../lib/index"; export const createMockLogger = <T>(): Logger<T> => { const logger: Logger<T> = { debug: jest.fn(), info: jest.fn(), warn: jest.fn(), error: jest.fn(), profile: jest.fn(), extend: jest.fn() }; return logger; }; const loggerMock = createMockLogger(); const creator = (meta: LoggerMetaData, level: string): Logger<{}> => { return loggerMock; } export type Event = | Invoked | InvalidParams; export enum EventType { Invoked = "messages/get/INVOKED", InvalidParams = "messages/get/INVALID_PARAMS" } export interface Invoked { type: EventType.Invoked; } export interface InvalidParams { type: EventType.InvalidParams; } const createLogger = createLoggerFromContext("APP", "Stage", "debug", creator); const logger: Logger<Event> = createLogger("requestId"); describe("logger", () => { it('debug is called on the loggerMock', () => { logger.debug({ type: EventType.Invoked }); expect(loggerMock.debug).toBeCalledWith({ type: EventType.Invoked }); }); it('info is called on the loggerMock', () => { logger.info({ type: EventType.Invoked }); expect(loggerMock.info).toBeCalledWith({ type: EventType.Invoked }); }); it('warning is called on the loggerMock', () => { logger.warn({ type: EventType.Invoked }); expect(loggerMock.warn).toBeCalledWith({ type: EventType.Invoked }); }); it('error is called on the loggerMock', () => { logger.error({ type: EventType.InvalidParams }); expect(loggerMock.error).toBeCalledWith({ type: EventType.InvalidParams }); }); it('profile is called on the loggerMock', () => { logger.profile("profile id"); expect(loggerMock.profile).toBeCalledWith("profile id"); }); it('extend is called on the loggerMock to add to current context', () => { logger.extend({ id: 'abc' }); expect(loggerMock.extend).toBeCalledWith({ id: 'abc' }); }); });