@brainbits/node-logger
Version:
Logger for node projects
74 lines (73 loc) • 2.32 kB
JavaScript
;
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);
});
});