UNPKG

pelias-mock-logger

Version:

Mock logger for testing logging behavior in Pelias projects

114 lines (88 loc) 3.82 kB
# Pelias Mock Logger [![Greenkeeper badge](https://badges.greenkeeper.io/pelias/mock-logger.svg)](https://greenkeeper.io/) ![Travis CI Status](https://travis-ci.org/pelias/mock-logger.svg) This module is used for testing logging events in Pelias projects. [proxyquire](https://www.npmjs.com/package/proxyquire) is the supported module for overriding dependencies in which this module is used. ## Installation ```bash $ npm install pelias-mock-logger --save-dev ``` [![NPM](https://nodei.co/npm/pelias-mock-logger.png?downloads=true&stars=true)](https://nodei.co/npm/pelias-mock-logger) ## NPM Module The `pelias-mock-logger` npm module can be found here: [https://npmjs.org/package/pelias-mock-logger](https://npmjs.org/package/pelias-mock-logger) ## Usage Traditionally, testing logging events required quite a bit of setup with proxyquire: ```javascript const errorMessages = []; var service = proxyquire('../../../service/interpolation', { 'pelias-logger': { get: () => { return { error: (msg) => { errorMessages.push(msg); }, info: (msg) => {} }; } } }).search(); t.deepEquals(errorMessages, ['RequireTransport: failed to connect to interpolation service']); ``` Using the `pelias-mock-logger` module, this code can be shortened to: ```javascript const logger = require('pelias-mock-logger')(); var adapter = proxyquire('../../../service/interpolation', { 'pelias-logger': logger }).search(); t.deepEquals(logger.getErrorMessages(), ['RequireTransport: failed to connect to interpolation service']); ``` ## Functions * logging events * `error(msg)` * `warn(msg)` * `info(msg)` * `verbose(msg)` * `debug(msg)` * `silly(msg)` * `getLayer()`: returns the value passed to `.get()` in `require( 'pelias-logger' ).get( 'api' )` * `getLevels()`: returns the supported logging levels: `error`, `warn`, `info`, `verbose`, `debug`, and `silly` * `getMessages(level, pattern)`: returns all messages logged at a level, optionally matching a pattern * Examples: * `getMessages('error')` * `getMessages('error', /backend error occurred/)` * `hasMessages(level, pattern)`: returns whether messages were logged at a level, optionally matching a pattern * Examples: * `hasMessages('error')` * `hasMessages('error', /backend error occurred/)` * `isMessage(level, pattern)`: returns whether the supplied pattern matches or is equal to any messages logged at the specified level * Examples * `isMessage('error', /backend error occurred)` * `isMessage('error', 'a backend error occurred, contact the Pelias team for assistance')` * level-specific functions * getMessages: returns all messages logged at the level specified in function name, optionally matching a pattern * `getErrorMessages(pattern)` * `getWarnMessages(pattern)` * `getInfoMessages(pattern)` * `getVerboseMessages(pattern)` * `getDebugMessages(pattern)` * `getSillyMessages(pattern)` * hasMessages: returns whether messages were logged at the level specified in function name, optionally matching a pattern * `hasErrorMessages(pattern)` * `hasWarnMessages(pattern)` * `hasInfoMessages(pattern)` * `hasVerboseMessages(pattern)` * `hasDebugMessages(pattern)` * `hasSillyMessages(pattern)` * isMessage: returns whether the supplied pattern matches or is equal to any messages logged at the level specified in the function name * `isErrorMessages(pattern)` * `isWarnMessages(pattern)` * `isInfoMessages(pattern)` * `isVerboseMessages(pattern)` * `isDebugMessages(pattern)` * `isSillyMessages(pattern)` ## Contributing Please fork and pull request against upstream master on a feature branch. Provide unit tests in the `test` directory. ### Running Unit Tests ```bash $ npm test ```