125 lines
4.1 KiB
JavaScript
125 lines
4.1 KiB
JavaScript
|
/*
|
||
|
* Copyright (c) 2012 Trent Mick. All rights reserved.
|
||
|
*
|
||
|
* Test type checking on creation of the Logger.
|
||
|
*/
|
||
|
import { Eltro as t, assert} from 'eltro'
|
||
|
import bunyan from '../lib/bunyan.mjs'
|
||
|
|
||
|
t.test('ensure Logger creation options', function () {
|
||
|
assert.throws(function () { new bunyan(); },
|
||
|
/options \(object\) is required/,
|
||
|
'no options should throw');
|
||
|
|
||
|
assert.throws(function () { new bunyan({}); },
|
||
|
/options\.name \(string\) is required/,
|
||
|
'no options.name should throw');
|
||
|
|
||
|
new bunyan({name: 'foo'});
|
||
|
|
||
|
let options = {name: 'foo', stream: process.stdout, streams: []};
|
||
|
assert.throws(function () { new bunyan(options); },
|
||
|
/cannot mix "streams" and "stream" options/, // JSSTYLED
|
||
|
'cannot use "stream" and "streams"');
|
||
|
|
||
|
// https://github.com/trentm/node-bunyan/issues/3
|
||
|
options = {name: 'foo', streams: {}};
|
||
|
assert.throws(function () { new bunyan(options); },
|
||
|
/invalid options.streams: must be an array/,
|
||
|
'"streams" must be an array');
|
||
|
|
||
|
options = {name: 'foo', serializers: 'a string'};
|
||
|
assert.throws(function () { new bunyan(options); },
|
||
|
/invalid options.serializers: must be an object/,
|
||
|
'"serializers" cannot be a string');
|
||
|
|
||
|
options = {name: 'foo', serializers: [1, 2, 3]};
|
||
|
assert.throws(function () { new bunyan(options); },
|
||
|
/invalid options.serializers: must be an object/,
|
||
|
'"serializers" cannot be an array');
|
||
|
});
|
||
|
|
||
|
|
||
|
t.test('ensure Logger constructor is safe without new', function () {
|
||
|
bunyan({name: 'foo'})
|
||
|
});
|
||
|
|
||
|
|
||
|
t.test('ensure Logger creation options (createLogger)', function () {
|
||
|
assert.throws(function () { bunyan.createLogger(); },
|
||
|
/options \(object\) is required/,
|
||
|
'no options should throw');
|
||
|
|
||
|
assert.throws(function () { bunyan.createLogger({}); },
|
||
|
/options\.name \(string\) is required/,
|
||
|
'no options.name should throw');
|
||
|
|
||
|
bunyan.createLogger({name: 'foo'});
|
||
|
|
||
|
let options = {name: 'foo', stream: process.stdout, streams: []};
|
||
|
assert.throws(function () { bunyan.createLogger(options); },
|
||
|
/cannot mix "streams" and "stream" options/, // JSSTYLED
|
||
|
'cannot use "stream" and "streams"');
|
||
|
|
||
|
// https://github.com/trentm/node-bunyan/issues/3
|
||
|
options = {name: 'foo', streams: {}};
|
||
|
assert.throws(function () { bunyan.createLogger(options); },
|
||
|
/invalid options.streams: must be an array/,
|
||
|
'"streams" must be an array');
|
||
|
|
||
|
options = {name: 'foo', serializers: 'a string'};
|
||
|
assert.throws(function () { bunyan.createLogger(options); },
|
||
|
/invalid options.serializers: must be an object/,
|
||
|
'"serializers" cannot be a string');
|
||
|
|
||
|
options = {name: 'foo', serializers: [1, 2, 3]};
|
||
|
assert.throws(function () { bunyan.createLogger(options); },
|
||
|
/invalid options.serializers: must be an object/,
|
||
|
'"serializers" cannot be an array');
|
||
|
});
|
||
|
|
||
|
|
||
|
t.test('ensure Logger child() options', function () {
|
||
|
let log = new bunyan({name: 'foo'});
|
||
|
|
||
|
log.child();
|
||
|
|
||
|
log.child({});
|
||
|
|
||
|
assert.throws(function () { log.child({name: 'foo'}); },
|
||
|
/invalid options.name: child cannot set logger name/,
|
||
|
'child cannot change name');
|
||
|
|
||
|
let options = {stream: process.stdout, streams: []};
|
||
|
assert.throws(function () { log.child(options); },
|
||
|
/cannot mix "streams" and "stream" options/, // JSSTYLED
|
||
|
'cannot use "stream" and "streams"');
|
||
|
|
||
|
// https://github.com/trentm/node-bunyan/issues/3
|
||
|
options = {streams: {}};
|
||
|
assert.throws(function () { log.child(options); },
|
||
|
/invalid options.streams: must be an array/,
|
||
|
'"streams" must be an array');
|
||
|
|
||
|
options = {serializers: 'a string'};
|
||
|
assert.throws(function () { log.child(options); },
|
||
|
/invalid options.serializers: must be an object/,
|
||
|
'"serializers" cannot be a string');
|
||
|
|
||
|
options = {serializers: [1, 2, 3]};
|
||
|
assert.throws(function () { log.child(options); },
|
||
|
/invalid options.serializers: must be an object/,
|
||
|
'"serializers" cannot be an array');
|
||
|
});
|
||
|
|
||
|
|
||
|
t.test('ensure Logger() rejects non-Logger parents', function () {
|
||
|
let dad = new bunyan({name: 'dad', streams: []});
|
||
|
|
||
|
assert.throws(function () { new bunyan({}, {}); },
|
||
|
/invalid Logger creation: do not pass a second arg/,
|
||
|
'Logger arguments must be valid');
|
||
|
|
||
|
new bunyan(dad, {});
|
||
|
});
|