UNPKG

moleculer

Version:

Fast & powerful microservices framework for Node.JS

260 lines (219 loc) 8.05 kB
const { wrap } = require("../../src/logger"); function callLogMethods(logger) { logger.trace("trace level"); logger.debug("debug level"); logger.info("info level"); logger.warn("warn level"); logger.error("error level"); logger.fatal("fatal level"); } describe("Test wrap", () => { it("should create a full logger without moduleName", () => { let con = { info: jest.fn(), error: jest.fn(), warn: jest.fn() }; let logger = wrap(con, null, "trace", false); expect(logger.fatal).toBeInstanceOf(Function); expect(logger.error).toBeInstanceOf(Function); expect(logger.warn).toBeInstanceOf(Function); expect(logger.info).toBeInstanceOf(Function); expect(logger.debug).toBeInstanceOf(Function); expect(logger.trace).toBeInstanceOf(Function); callLogMethods(logger); expect(con.warn).toHaveBeenCalledTimes(1); expect(con.warn).toHaveBeenCalledWith("warn level"); expect(con.error).toHaveBeenCalledTimes(2); expect(con.error).toHaveBeenCalledWith("error level"); expect(con.error).toHaveBeenCalledWith("fatal level"); expect(con.info).toHaveBeenCalledTimes(3); expect(con.info).toHaveBeenCalledWith("debug level"); expect(con.info).toHaveBeenCalledWith("info level"); expect(con.info).toHaveBeenCalledWith("trace level"); }); it("should create a full logger with missing methods", () => { let con = { info: jest.fn(), error: jest.fn(), }; let logger = wrap(con, null, "trace", false); expect(logger.fatal).toBeInstanceOf(Function); expect(logger.error).toBeInstanceOf(Function); expect(logger.warn).toBeInstanceOf(Function); expect(logger.info).toBeInstanceOf(Function); expect(logger.debug).toBeInstanceOf(Function); expect(logger.trace).toBeInstanceOf(Function); callLogMethods(logger); expect(con.error).toHaveBeenCalledTimes(3); expect(con.error).toHaveBeenCalledWith("error level"); expect(con.error).toHaveBeenCalledWith("warn level"); expect(con.error).toHaveBeenCalledWith("fatal level"); expect(con.info).toHaveBeenCalledTimes(3); expect(con.info).toHaveBeenCalledWith("debug level"); expect(con.info).toHaveBeenCalledWith("info level"); expect(con.info).toHaveBeenCalledWith("trace level"); }); it("should create a full logger from one-method logger", () => { let con = { info: jest.fn() }; let logger = wrap(con, null, "trace", false); expect(logger.fatal).toBeInstanceOf(Function); expect(logger.error).toBeInstanceOf(Function); expect(logger.warn).toBeInstanceOf(Function); expect(logger.info).toBeInstanceOf(Function); expect(logger.debug).toBeInstanceOf(Function); expect(logger.trace).toBeInstanceOf(Function); callLogMethods(logger); expect(con.info).toHaveBeenCalledTimes(6); expect(con.info).toHaveBeenCalledWith("fatal level"); expect(con.info).toHaveBeenCalledWith("error level"); expect(con.info).toHaveBeenCalledWith("warn level"); expect(con.info).toHaveBeenCalledWith("debug level"); expect(con.info).toHaveBeenCalledWith("info level"); expect(con.info).toHaveBeenCalledWith("trace level"); }); it("should create a full logger with moduleName", () => { let con = { trace: jest.fn(), debug: jest.fn(), info: jest.fn(), warn: jest.fn(), error: jest.fn(), fatal: jest.fn() }; let logger = wrap(con, "Module", "trace", false); expect(logger.fatal).toBeInstanceOf(Function); expect(logger.error).toBeInstanceOf(Function); expect(logger.warn).toBeInstanceOf(Function); expect(logger.info).toBeInstanceOf(Function); expect(logger.debug).toBeInstanceOf(Function); expect(logger.trace).toBeInstanceOf(Function); callLogMethods(logger); expect(con.fatal).toHaveBeenCalledTimes(1); expect(con.fatal).toHaveBeenCalledWith("[Module] fatal level"); expect(con.error).toHaveBeenCalledTimes(1); expect(con.error).toHaveBeenCalledWith("[Module] error level"); expect(con.warn).toHaveBeenCalledTimes(1); expect(con.warn).toHaveBeenCalledWith("[Module] warn level"); expect(con.info).toHaveBeenCalledTimes(1); expect(con.info).toHaveBeenCalledWith("[Module] info level"); expect(con.debug).toHaveBeenCalledTimes(1); expect(con.debug).toHaveBeenCalledWith("[Module] debug level"); expect(con.trace).toHaveBeenCalledTimes(1); expect(con.trace).toHaveBeenCalledWith("[Module] trace level"); }); }); describe("Test wrap with logLevels", () => { it("should create a filtered-level logger (warn)", () => { let con = { trace: jest.fn(), debug: jest.fn(), info: jest.fn(), warn: jest.fn(), error: jest.fn(), fatal: jest.fn() }; let logger = wrap(con, "Module", "warn", false); expect(logger.fatal).toBeInstanceOf(Function); expect(logger.error).toBeInstanceOf(Function); expect(logger.warn).toBeInstanceOf(Function); expect(logger.info).toBeInstanceOf(Function); expect(logger.debug).toBeInstanceOf(Function); expect(logger.trace).toBeInstanceOf(Function); callLogMethods(logger); expect(con.trace).toHaveBeenCalledTimes(0); expect(con.debug).toHaveBeenCalledTimes(0); expect(con.info).toHaveBeenCalledTimes(0); expect(con.warn).toHaveBeenCalledTimes(1); expect(con.warn).toHaveBeenCalledWith("[Module] warn level"); expect(con.error).toHaveBeenCalledTimes(1); expect(con.error).toHaveBeenCalledWith("[Module] error level"); expect(con.fatal).toHaveBeenCalledTimes(1); expect(con.fatal).toHaveBeenCalledWith("[Module] fatal level"); }); it("should create a filtered-level logger (module error)", () => { let con = { trace: jest.fn(), debug: jest.fn(), info: jest.fn(), warn: jest.fn(), error: jest.fn(), fatal: jest.fn(), }; let logger = wrap(con, "CTX", { "*": "debug", "CTX": "error" }, false); callLogMethods(logger); expect(con.debug).toHaveBeenCalledTimes(0); expect(con.info).toHaveBeenCalledTimes(0); expect(con.warn).toHaveBeenCalledTimes(0); expect(con.error).toHaveBeenCalledTimes(1); expect(con.fatal).toHaveBeenCalledTimes(1); }); it("should create a filtered-level logger ('*' info)", () => { let con = { trace: jest.fn(), debug: jest.fn(), info: jest.fn(), warn: jest.fn(), error: jest.fn(), fatal: jest.fn(), }; let logger = wrap(con, "SVC", { "*": "info", "CTX": "error" }, false); callLogMethods(logger); expect(con.trace).toHaveBeenCalledTimes(0); expect(con.debug).toHaveBeenCalledTimes(0); expect(con.info).toHaveBeenCalledTimes(1); expect(con.warn).toHaveBeenCalledTimes(1); expect(con.error).toHaveBeenCalledTimes(1); expect(con.fatal).toHaveBeenCalledTimes(1); }); it("should create an empty logger (false)", () => { let con = { trace: jest.fn(), debug: jest.fn(), info: jest.fn(), warn: jest.fn(), error: jest.fn(), fatal: jest.fn() }; let logger = wrap(con, "SVC", { "*": "info", "SVC": false }, false); callLogMethods(logger); expect(con.trace).toHaveBeenCalledTimes(0); expect(con.debug).toHaveBeenCalledTimes(0); expect(con.info).toHaveBeenCalledTimes(0); expect(con.warn).toHaveBeenCalledTimes(0); expect(con.error).toHaveBeenCalledTimes(0); expect(con.fatal).toHaveBeenCalledTimes(0); }); }); /* describe("Test wrap with crashOnFatal", () => { let con = { trace: jest.fn(), debug: jest.fn(), info: jest.fn(), warn: jest.fn(), error: jest.fn(), fatal: jest.fn() }; it("should wrap again if crashOnFatal is true", () => { let logger = wrap(con, "Module", "info", true); expect(logger.fatal).toBeInstanceOf(Function); process.exit = jest.fn(); logger.fatal("fatal level"); expect(con.fatal).toHaveBeenCalledTimes(2); expect(con.fatal).toHaveBeenCalledWith("[Module] fatal level"); expect(process.exit).toHaveBeenCalledTimes(1); expect(process.exit).toHaveBeenCalledWith(2); }); }); */