UNPKG

easy-config-logger

Version:

easy-config-logger is the logger with easy configuration. It is designed for both readability in development and json output in production.

181 lines (180 loc) 9.26 kB
"use strict"; /** * Logger Spec */ var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); var stdMocks = __importStar(require("std-mocks")); var chai_1 = require("chai"); var logger_1 = require("./logger"); describe('logger', function () { var message = 'test message'; var colorizedDebug = '\u001b[34mdebug\u001b[39m:'; var colorizedInfo = '\u001b[36minfo\u001b[39m:'; var colorizedWarn = '\u001b[33mwarn\u001b[39m:'; var colorizeError = '\u001b[31merror\u001b[39m:'; var colorizedTest = '\u001b[36mtest\u001b[39m:'; describe('Constructor', function () { it('should return Logger instance', function () { var options = { env: 'development', level: 'debug' }; var logger = new logger_1.Logger(options); chai_1.expect(logger).is.instanceof(logger_1.Logger); }); describe('options.level', function () { it('should print log when options.level is under log level', function () { var options = { env: 'development', level: 'debug' }; var logger = new logger_1.Logger(options); stdMocks.use(); logger.debug(message); stdMocks.restore(); var resultMessage = new Date().toISOString() + " - " + colorizedDebug + " " + message + "\n"; chai_1.expect(stdMocks.flush().stderr[0]).to.equal(resultMessage); }); it('should print log when options.level is over log level', function () { var options = { env: 'development', level: 'info' }; var logger = new logger_1.Logger(options); stdMocks.use(); logger.debug(message); stdMocks.restore(); chai_1.expect(stdMocks.flush().stderr.length).to.equal(0); }); it('should occur error when it receive unsupport level', function () { var wrongLevel = 'wrong level'; var options = { env: 'development', level: wrongLevel }; var errMsg = "Log Level '" + wrongLevel + "' is not available"; chai_1.expect(function () { return new logger_1.Logger(options); }).to.throw().with.property('message', errMsg); }); }); describe('options.env', function () { it('should print log as pretty print when options.env is development', function () { var options = { env: 'development', level: 'debug' }; var logger = new logger_1.Logger(options); stdMocks.use(); logger.debug(message); stdMocks.restore(); var resultMessage = new Date().toISOString() + " - " + colorizedDebug + " " + message + "\n"; chai_1.expect(stdMocks.flush().stderr[0]).to.equal(resultMessage); }); it('should print log as pretty print when options.env is test', function () { var options = { env: 'test', level: 'debug' }; var logger = new logger_1.Logger(options); stdMocks.use(); logger.debug(message); stdMocks.restore(); var resultMessage = new Date().toISOString() + " - " + colorizedDebug + " " + message + "\n"; chai_1.expect(stdMocks.flush().stderr[0]).to.equal(resultMessage); }); it('should print log as json format when options.env is stage', function () { var options = { env: 'stage', level: 'debug' }; var logger = new logger_1.Logger(options); stdMocks.use(); logger.debug(message); stdMocks.restore(); var result = { level: 'debug', message: message, timestamp: new Date() }; var resultMessage = JSON.stringify(result) + "\n"; chai_1.expect(stdMocks.flush().stderr[0]).to.equal(resultMessage); }); it('should print log as json format when options.env is production', function () { var options = { env: 'production', level: 'debug' }; var logger = new logger_1.Logger(options); stdMocks.use(); logger.debug(message); stdMocks.restore(); var result = { level: 'debug', message: message, timestamp: new Date() }; var resultMessage = JSON.stringify(result) + "\n"; chai_1.expect(stdMocks.flush().stderr[0]).to.equal(resultMessage); }); it('should occur error when it receive unsupport env', function () { var wrongEnv = 'wrong env'; var options = { env: wrongEnv, level: 'debug' }; var errMsg = "Environment '" + wrongEnv + "' is not available"; chai_1.expect(function () { return new logger_1.Logger(options); }).to.throw().with.property('message', errMsg); }); }); describe('baseMeta', function () { it('should be always appended meta', function () { var options = { env: 'development', level: 'debug' }; var baseMeta = { some_base_meta: 1 }; var logger = new logger_1.Logger(options, baseMeta); stdMocks.use(); logger.debug(message); stdMocks.restore(); var metaResult = "{ some_base_meta: \u001B[33m" + baseMeta.some_base_meta + "\u001B[39m }\n"; var resultMessage = new Date().toISOString() + " - " + colorizedDebug + " " + message + " \n" + metaResult; chai_1.expect(stdMocks.flush().stderr[0]).to.equal(resultMessage); }); }); }); describe('.debug', function () { it('should print log as \'debug\' level', function () { var options = { env: 'development', level: 'debug' }; var logger = new logger_1.Logger(options); stdMocks.use(); logger.debug(message); stdMocks.restore(); var resultMessage = new Date().toISOString() + " - " + colorizedDebug + " " + message + "\n"; chai_1.expect(stdMocks.flush().stderr[0]).to.equal(resultMessage); }); it('should add meta that appended to log', function () { var options = { env: 'development', level: 'debug' }; var meta = { some_meta: 1 }; var logger = new logger_1.Logger(options); stdMocks.use(); logger.debug(message, meta); stdMocks.restore(); var metaResult = "{ some_meta: \u001B[33m" + meta.some_meta + "\u001B[39m }\n"; var resultMessage = new Date().toISOString() + " - " + colorizedDebug + " " + message + " \n" + metaResult; chai_1.expect(stdMocks.flush().stderr[0]).to.equal(resultMessage); }); }); describe('.info', function () { it('should print log as \'info\' level', function () { var options = { env: 'development', level: 'debug' }; var logger = new logger_1.Logger(options); stdMocks.use(); logger.info(message); stdMocks.restore(); var resultMessage = new Date().toISOString() + " - " + colorizedInfo + " " + message + "\n"; chai_1.expect(stdMocks.flush().stdout[0]).to.equal(resultMessage); }); }); describe('.warn', function () { it('should print log as \'warn\' level', function () { var options = { env: 'development', level: 'debug' }; var logger = new logger_1.Logger(options); stdMocks.use(); logger.warn(message); stdMocks.restore(); var resultMessage = new Date().toISOString() + " - " + colorizedWarn + " " + message + "\n"; chai_1.expect(stdMocks.flush().stdout[0]).to.equal(resultMessage); }); }); describe('.error', function () { it('should print log as \'error\' level', function () { var options = { env: 'development', level: 'debug' }; var logger = new logger_1.Logger(options); stdMocks.use(); logger.error(message); stdMocks.restore(); var resultMessage = new Date().toISOString() + " - " + colorizeError + " " + message + "\n"; chai_1.expect(stdMocks.flush().stderr[0]).to.equal(resultMessage); }); }); describe('.test', function () { it('should print log as \'test\' level', function () { var options = { env: 'development', level: 'debug' }; var logger = new logger_1.Logger(options); stdMocks.use(); logger.test(message); stdMocks.restore(); var resultMessage = new Date().toISOString() + " - " + colorizedTest + " " + message + "\n"; chai_1.expect(stdMocks.flush().stdout[0]).to.equal(resultMessage); }); }); });