You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					219 lines
				
				4.0 KiB
			
		
		
			
		
	
	
					219 lines
				
				4.0 KiB
			| 
											3 years ago
										 | 'use strict' | ||
|  | const test = require('tape') | ||
|  | const pino = require('../browser') | ||
|  | 
 | ||
|  | test('set the level by string', ({ end, same, is }) => { | ||
|  |   const expected = [ | ||
|  |     { | ||
|  |       level: 50, | ||
|  |       msg: 'this is an error' | ||
|  |     }, | ||
|  |     { | ||
|  |       level: 60, | ||
|  |       msg: 'this is fatal' | ||
|  |     } | ||
|  |   ] | ||
|  |   const instance = pino({ | ||
|  |     browser: { | ||
|  |       write (actual) { | ||
|  |         checkLogObjects(is, same, actual, expected.shift()) | ||
|  |       } | ||
|  |     } | ||
|  |   }) | ||
|  | 
 | ||
|  |   instance.level = 'error' | ||
|  |   instance.info('hello world') | ||
|  |   instance.error('this is an error') | ||
|  |   instance.fatal('this is fatal') | ||
|  | 
 | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('set the level by string. init with silent', ({ end, same, is }) => { | ||
|  |   const expected = [ | ||
|  |     { | ||
|  |       level: 50, | ||
|  |       msg: 'this is an error' | ||
|  |     }, | ||
|  |     { | ||
|  |       level: 60, | ||
|  |       msg: 'this is fatal' | ||
|  |     } | ||
|  |   ] | ||
|  |   const instance = pino({ | ||
|  |     level: 'silent', | ||
|  |     browser: { | ||
|  |       write (actual) { | ||
|  |         checkLogObjects(is, same, actual, expected.shift()) | ||
|  |       } | ||
|  |     } | ||
|  |   }) | ||
|  | 
 | ||
|  |   instance.level = 'error' | ||
|  |   instance.info('hello world') | ||
|  |   instance.error('this is an error') | ||
|  |   instance.fatal('this is fatal') | ||
|  | 
 | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('set the level by string. init with silent and transmit', ({ end, same, is }) => { | ||
|  |   const expected = [ | ||
|  |     { | ||
|  |       level: 50, | ||
|  |       msg: 'this is an error' | ||
|  |     }, | ||
|  |     { | ||
|  |       level: 60, | ||
|  |       msg: 'this is fatal' | ||
|  |     } | ||
|  |   ] | ||
|  |   const instance = pino({ | ||
|  |     level: 'silent', | ||
|  |     browser: { | ||
|  |       write (actual) { | ||
|  |         checkLogObjects(is, same, actual, expected.shift()) | ||
|  |       } | ||
|  |     }, | ||
|  |     transmit: { | ||
|  |       send () {} | ||
|  |     } | ||
|  |   }) | ||
|  | 
 | ||
|  |   instance.level = 'error' | ||
|  |   instance.info('hello world') | ||
|  |   instance.error('this is an error') | ||
|  |   instance.fatal('this is fatal') | ||
|  | 
 | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('set the level via constructor', ({ end, same, is }) => { | ||
|  |   const expected = [ | ||
|  |     { | ||
|  |       level: 50, | ||
|  |       msg: 'this is an error' | ||
|  |     }, | ||
|  |     { | ||
|  |       level: 60, | ||
|  |       msg: 'this is fatal' | ||
|  |     } | ||
|  |   ] | ||
|  |   const instance = pino({ | ||
|  |     level: 'error', | ||
|  |     browser: { | ||
|  |       write (actual) { | ||
|  |         checkLogObjects(is, same, actual, expected.shift()) | ||
|  |       } | ||
|  |     } | ||
|  |   }) | ||
|  | 
 | ||
|  |   instance.info('hello world') | ||
|  |   instance.error('this is an error') | ||
|  |   instance.fatal('this is fatal') | ||
|  | 
 | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('the wrong level throws', ({ end, throws }) => { | ||
|  |   const instance = pino() | ||
|  |   throws(() => { | ||
|  |     instance.level = 'kaboom' | ||
|  |   }) | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('the wrong level by number throws', ({ end, throws }) => { | ||
|  |   const instance = pino() | ||
|  |   throws(() => { | ||
|  |     instance.levelVal = 55 | ||
|  |   }) | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('exposes level string mappings', ({ end, is }) => { | ||
|  |   is(pino.levels.values.error, 50) | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('exposes level number mappings', ({ end, is }) => { | ||
|  |   is(pino.levels.labels[50], 'error') | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('returns level integer', ({ end, is }) => { | ||
|  |   const instance = pino({ level: 'error' }) | ||
|  |   is(instance.levelVal, 50) | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('silent level via constructor', ({ end, fail }) => { | ||
|  |   const instance = pino({ | ||
|  |     level: 'silent', | ||
|  |     browser: { | ||
|  |       write () { | ||
|  |         fail('no data should be logged') | ||
|  |       } | ||
|  |     } | ||
|  |   }) | ||
|  | 
 | ||
|  |   Object.keys(pino.levels.values).forEach((level) => { | ||
|  |     instance[level]('hello world') | ||
|  |   }) | ||
|  | 
 | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('silent level by string', ({ end, fail }) => { | ||
|  |   const instance = pino({ | ||
|  |     browser: { | ||
|  |       write () { | ||
|  |         fail('no data should be logged') | ||
|  |       } | ||
|  |     } | ||
|  |   }) | ||
|  | 
 | ||
|  |   instance.level = 'silent' | ||
|  | 
 | ||
|  |   Object.keys(pino.levels.values).forEach((level) => { | ||
|  |     instance[level]('hello world') | ||
|  |   }) | ||
|  | 
 | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('exposed levels', ({ end, same }) => { | ||
|  |   same(Object.keys(pino.levels.values), [ | ||
|  |     'fatal', | ||
|  |     'error', | ||
|  |     'warn', | ||
|  |     'info', | ||
|  |     'debug', | ||
|  |     'trace' | ||
|  |   ]) | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('exposed labels', ({ end, same }) => { | ||
|  |   same(Object.keys(pino.levels.labels), [ | ||
|  |     '10', | ||
|  |     '20', | ||
|  |     '30', | ||
|  |     '40', | ||
|  |     '50', | ||
|  |     '60' | ||
|  |   ]) | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | function checkLogObjects (is, same, actual, expected) { | ||
|  |   is(actual.time <= Date.now(), true, 'time is greater than Date.now()') | ||
|  | 
 | ||
|  |   const actualCopy = Object.assign({}, actual) | ||
|  |   const expectedCopy = Object.assign({}, expected) | ||
|  |   delete actualCopy.time | ||
|  |   delete expectedCopy.time | ||
|  | 
 | ||
|  |   same(actualCopy, expectedCopy) | ||
|  | } |