'use strict'; const Tap = require('tap'); const SimpleFormatter = require('../../lib/formatters/simple'); // Prepare the test Tap.plan(12); const logObject = { _timestamp: BigInt(Date.now()) * 1000000n, _cologneLog: '1.0.0', _from: 'Dummy Logger', _level: 3, _levelString: 'error', message: 'testing stuff!' }; const isoDate = (new Date(Number(logObject._timestamp) / 1000000)).toISOString(); const plainFormatter = new SimpleFormatter(); const colorFormatter = new SimpleFormatter({ colorize: true }); /** * TEST: #format() - plain */ const plainFormattedString = plainFormatter.format(logObject); Tap.equal(typeof plainFormattedString, 'string', '#format() should output a string in plain mode'); Tap.ok(plainFormattedString.match(logObject._from), '#format() should include the from property in plain mode'); Tap.ok(plainFormattedString.match(isoDate), '#format() should include the timestamp property in iso format in plain mode'); Tap.ok(plainFormattedString.match(logObject._levelString), '#format() should include the level string property in plain mode'); Tap.ok(plainFormattedString.match(logObject.message), '#format() should include the message property in plain mode'); /** * TEST: #format() - colorized */ const colorFormattedString = colorFormatter.format(logObject); Tap.equal(typeof colorFormattedString, 'string', '#format() should output a string in color mode'); Tap.ok(colorFormattedString.match(logObject._from), '#format() should include the from property in color mode'); Tap.ok(colorFormattedString.match(isoDate), '#format() should include the timestamp property in iso format in color mode'); Tap.ok(colorFormattedString.match(logObject._levelString), '#format() should include the level string property in color mode'); Tap.ok(colorFormattedString.match(logObject.message), '#format() should include the message property in color mode'); Tap.equal(colorFormattedString.split(String.fromCharCode(27) + '[31m').length, 2, '#format() should colorize the string'); Tap.equal(colorFormattedString.split(String.fromCharCode(27) + '[0m').length, 2, '#format() should colorize only a bit of the string');