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
JavaScript
;
/**
* 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);
});
});
});