UNPKG

@brainbits/node-logger

Version:
74 lines (73 loc) 2.32 kB
"use strict"; var _config = _interopRequireDefault(require("./config")); var _logger = _interopRequireDefault(require("./logger")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } jest.mock('./config', () => jest.fn(() => ({ channel: 'test', maxLevel: 'debug', levels: ['error', 'info', 'debug'], formatter(event) { return JSON.stringify(event); }, plugins: [], outputs: { error: 'stderr', info: 'stdout' } }))); const defaultConfig = (0, _config.default)(); describe('Logger', () => { const stdout = jest.spyOn(process.stdout, 'write').mockImplementation(() => null); const stderr = jest.spyOn(process.stderr, 'write').mockImplementation(() => null); const levels = ['error', 'info', 'debug']; const methods = ['start', 'stop']; beforeEach(() => { stdout.mockClear(); stderr.mockClear(); }); it.each(levels)('should have generate level `%s` as public method', level => { const logger = new _logger.default(); expect(logger).toHaveProperty(level, expect.any(Function)); }); it.each(methods)('should have public method `%s`', method => { const logger = new _logger.default(); expect(logger).toHaveProperty(method, expect.any(Function)); }); it('should pass the correct objects to the output', () => { const givenMessage = 'message'; const givenMeta = { meta: 'values' }; const expectedEvent = { channel: defaultConfig.channel, level: 'info', message: givenMessage, meta: givenMeta }; const logger = new _logger.default(); logger.info(givenMessage, givenMeta); expect(stdout).toHaveBeenCalledWith(`${JSON.stringify(expectedEvent)}\n`); }); it('should pass event to all plugins', () => { const givenPlugin = { log: jest.fn() }; const givenMessage = 'message'; const givenMeta = { meta: 'values' }; const expectedEvent = { channel: defaultConfig.channel, level: 'info', message: givenMessage, meta: givenMeta }; _config.default.mockReturnValue({ ...defaultConfig, plugins: [givenPlugin] }); const logger = new _logger.default(); logger.info(givenMessage, givenMeta); expect(givenPlugin.log).toHaveBeenCalledWith(expectedEvent); }); });