]> git.r.bdr.sh - rbdr/cologne/blob - test/loggers/console.js
Add a License
[rbdr/cologne] / test / loggers / console.js
1 'use strict';
2
3 const Tap = require('tap');
4
5 const ConsoleLogger = require('../../lib/loggers/console');
6
7 // Prepare the test
8
9 const dummyFormatter = {
10 values: [],
11 format: function (log) {
12
13 this.values.push(log);
14 return 'lol';
15 }
16 };
17
18 const dummyConsole = {
19 values: {
20 log: 0,
21 warn: 0,
22 error: 0,
23 info: 0
24 },
25 _log: function (type, ...logs) {
26
27 this.values[type] += logs.length;
28 },
29 log: function (...logs) {
30
31 this._log('log', ...logs);
32 },
33 warn: function (...logs) {
34
35 this._log('warn', ...logs);
36 },
37 error: function (...logs) {
38
39 this._log('error', ...logs);
40 },
41 info: function (...logs) {
42
43 this._log('info', ...logs);
44 }
45 };
46
47 const logObjectA = {
48 _timestamp: Date.now() + .134,
49 _cologneLog: '1.0.0',
50 _from: 'Dummy Logger',
51 _level: 6,
52 _levelString: 'info',
53 message: 'MessageOne'
54 };
55
56 const logObjectB = {
57 _timestamp: Date.now() + .134,
58 _cologneLog: '1.0.0',
59 _from: 'Dummy Logger',
60 _level: 6,
61 _levelString: 'info',
62 message: 'MessageTwo'
63 };
64
65 const exampleLogs = [logObjectA, logObjectB];
66
67 const regularLogger = new ConsoleLogger({});
68 const overrideLogger = new ConsoleLogger({
69 console: dummyConsole
70 });
71 const formattedLogger = new ConsoleLogger({
72 console: dummyConsole,
73 formatter: dummyFormatter
74 });
75
76 /**
77 * TEST: #log() - regular
78 */
79
80 Tap.equal(regularLogger.console, global.console,
81 'It should default to the global console');
82
83 /**
84 * TEST: #log() - override
85 */
86
87 logObjectA._level = 5;
88 logObjectB._level = 6;
89 overrideLogger.log(...exampleLogs); // should go to info
90
91 logObjectA._level = 4;
92 logObjectB._level = 4;
93 overrideLogger.log(...exampleLogs); // should go to warn
94
95 logObjectA._level = 1;
96 logObjectB._level = 3;
97 overrideLogger.log(...exampleLogs); // should go to error
98
99 logObjectA._level = 0;
100 logObjectB._level = 2;
101 overrideLogger.log(...exampleLogs); // should go to error
102
103 logObjectA._level = 7;
104 logObjectB._level = 8;
105 overrideLogger.log(...exampleLogs); // should go to log
106
107 Tap.equal(dummyConsole.values.log, exampleLogs.length,
108 'It should send debug messages to console\'s #log');
109 Tap.equal(dummyConsole.values.info, exampleLogs.length,
110 'It should send info and notice messages to console\'s #info');
111 Tap.equal(dummyConsole.values.warn, exampleLogs.length,
112 'It should send warn messages to console\'s #warn');
113 Tap.equal(dummyConsole.values.error, exampleLogs.length * 2,
114 'It should send error messages to console\'s #error');
115
116 /**
117 * TEST: #log() - with formatter
118 */
119
120 formattedLogger.log(...exampleLogs); // should go to log
121
122 Tap.similar(dummyFormatter.values, exampleLogs,
123 'If available, it should send the objects to the formatter');