]> git.r.bdr.sh - rbdr/cologne/blobdiff - test/formatters/simple.js
Update the code.
[rbdr/cologne] / test / formatters / simple.js
diff --git a/test/formatters/simple.js b/test/formatters/simple.js
new file mode 100644 (file)
index 0000000..5829045
--- /dev/null
@@ -0,0 +1,72 @@
+'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');