11const { createLogger } = require ( '../../lib/logger/index' )
22const os = require ( 'os' )
33const lolex = require ( '@sinonjs/fake-timers' )
4+ const { Writable } = require ( 'stream' )
5+ const tty = require ( 'tty' )
6+ const { stripAnsi } = require ( '../helper/strip-ansi' )
7+
8+ const stripMessages = ( messages ) => messages . map ( ( message ) => stripAnsi ( message [ 0 ] ) )
49
510describe ( 'Test logger module.' , ( ) => {
611 let clock
@@ -23,7 +28,13 @@ describe('Test logger module.', () => {
2328 } )
2429 logger . info ( 'test' )
2530 expect ( consoleStdOutSpy ) . toBeCalledTimes ( 1 )
26- expect ( consoleStdOutSpy . mock . calls [ 0 ] ) . toEqual ( [ '{"level":30,"time":0,"service":"test","version":1,"message":"test"}' + os . EOL ] )
31+
32+ if ( tty . isatty ( 0 ) ) {
33+ const strippedMessage = stripAnsi ( consoleStdOutSpy . mock . calls [ 0 ] [ 0 ] )
34+ expect ( strippedMessage ) . toEqual ( 'INFO [1970-01-01T00:00:00.000Z] test' + os . EOL )
35+ } else {
36+ expect ( consoleStdOutSpy . mock . calls [ 0 ] ) . toEqual ( [ '{"level":4,"time":0,"service":"test","version":1,"message":"test"}' + os . EOL ] )
37+ }
2738 consoleStdOutSpy . mockReset ( )
2839 } )
2940
@@ -82,8 +93,14 @@ describe('Test logger module.', () => {
8293 logger . info ( LogObject )
8394
8495 expect ( consoleStdOutSpy ) . toBeCalledTimes ( 2 )
85- expect ( consoleStdOutSpy . mock . calls [ 0 ] ) . toEqual ( [ '{"0":"item1","1":"item2","level":30,"time":0,"service":"test","version":1}' + os . EOL ] )
86- expect ( consoleStdOutSpy . mock . calls [ 1 ] ) . toEqual ( [ '{"level":30,"time":0,"service":"test","version":1,"user":"hans","rooms":[1,2,3,4],"lastLogin":"2021-03-31T13:41:01.210Z","settings":{"app":{"darkMode":true,"lang":"de"}}}' + os . EOL ] )
96+ if ( tty . isatty ( 0 ) ) {
97+ const strippedMessage = stripMessages ( consoleStdOutSpy . mock . calls )
98+ expect ( strippedMessage [ 0 ] ) . toEqual ( 'INFO [1970-01-01T00:00:00.000Z] \n{\n "0": "item1",\n "1": "item2"\n}' + os . EOL )
99+ expect ( strippedMessage [ 1 ] ) . toEqual ( 'INFO [1970-01-01T00:00:00.000Z] \n{\n "user": "hans",\n "rooms": [\n 1,\n 2,\n 3,\n 4\n ],\n "lastLogin": "2021-03-31T13:41:01.210Z",\n "settings": {\n "app": {\n "darkMode": true,\n "lang": "de"\n }\n }\n}' + os . EOL )
100+ } else {
101+ expect ( consoleStdOutSpy . mock . calls [ 0 ] ) . toEqual ( [ '{"0":"item1","1":"item2","level":4,"time":0,"service":"test","version":1}' + os . EOL ] )
102+ expect ( consoleStdOutSpy . mock . calls [ 1 ] ) . toEqual ( [ '{"level":4,"time":0,"service":"test","version":1,"user":"hans","rooms":[1,2,3,4],"lastLogin":"2021-03-31T13:41:01.210Z","settings":{"app":{"darkMode":true,"lang":"de"}}}' + os . EOL ] )
103+ }
87104
88105 consoleStdOutSpy . mockReset ( )
89106 } )
@@ -101,7 +118,12 @@ describe('Test logger module.', () => {
101118 logger . info ( 'message1 %s' , 'message2' )
102119
103120 expect ( consoleStdOutSpy ) . toBeCalledTimes ( 1 )
104- expect ( consoleStdOutSpy . mock . calls [ 0 ] ) . toEqual ( [ '{"level":30,"time":0,"service":"test","version":1,"message":"message1 message2"}' + os . EOL ] )
121+ if ( tty . isatty ( 0 ) ) {
122+ const strippedMessage = stripMessages ( consoleStdOutSpy . mock . calls )
123+ expect ( strippedMessage [ 0 ] ) . toEqual ( 'INFO [1970-01-01T00:00:00.000Z] message1 message2' + os . EOL )
124+ } else {
125+ expect ( consoleStdOutSpy . mock . calls [ 0 ] ) . toEqual ( [ '{"level":4,"time":0,"service":"test","version":1,"message":"message1 message2"}' + os . EOL ] )
126+ }
105127 consoleStdOutSpy . mockReset ( )
106128 } )
107129
@@ -118,7 +140,12 @@ describe('Test logger module.', () => {
118140 logger . fatal ( 'Fatal error' )
119141
120142 expect ( consoleStdOutSpy ) . toBeCalledTimes ( 1 )
121- expect ( consoleStdOutSpy . mock . calls [ 0 ] ) . toEqual ( [ '{"level":60,"time":0,"service":"test","version":1,"message":"Fatal error"}' + os . EOL ] )
143+ if ( tty . isatty ( 0 ) ) {
144+ const strippedMessage = stripMessages ( consoleStdOutSpy . mock . calls )
145+ expect ( strippedMessage [ 0 ] ) . toEqual ( 'FATAL [1970-01-01T00:00:00.000Z] Fatal error' + os . EOL )
146+ } else {
147+ expect ( consoleStdOutSpy . mock . calls [ 0 ] ) . toEqual ( [ '{"level":1,"time":0,"service":"test","version":1,"message":"Fatal error"}' + os . EOL ] )
148+ }
122149 consoleStdOutSpy . mockReset ( )
123150 } )
124151
@@ -131,15 +158,21 @@ describe('Test logger module.', () => {
131158 version : 1
132159 }
133160 } )
134-
135- logger . fatal ( new Error ( 'Fatal error' ) , 'override message' )
136- const logObj = JSON . parse ( consoleStdOutSpy . mock . calls [ 0 ] )
137- expect ( consoleStdOutSpy ) . toBeCalledTimes ( 1 )
138- expect ( logObj . level ) . toBe ( 60 )
139- expect ( logObj . message ) . toBe ( 'override message' )
140- expect ( logObj . stack ) . toBeDefined ( )
141- expect ( logObj . type ) . toBe ( 'Error' )
142- expect ( logObj . time ) . toBe ( 0 )
161+ const error = new Error ( 'Fatal error' )
162+ error . stack = 'Here could be your stack!'
163+ logger . fatal ( error , 'override message' )
164+ if ( tty . isatty ( 0 ) ) {
165+ const strippedMessage = stripMessages ( consoleStdOutSpy . mock . calls )
166+ expect ( strippedMessage [ 0 ] ) . toEqual ( 'FATAL [1970-01-01T00:00:00.000Z] override message\n{\n "stack": "Here could be your stack!",\n "type": "Error"\n}' + os . EOL )
167+ } else {
168+ const logObj = JSON . parse ( consoleStdOutSpy . mock . calls [ 0 ] )
169+ expect ( consoleStdOutSpy ) . toBeCalledTimes ( 1 )
170+ expect ( logObj . level ) . toBe ( 1 )
171+ expect ( logObj . message ) . toBe ( 'override message' )
172+ expect ( logObj . stack ) . toBe ( 'Here could be your stack!' )
173+ expect ( logObj . type ) . toBe ( 'Error' )
174+ expect ( logObj . time ) . toBe ( 0 )
175+ }
143176
144177 consoleStdOutSpy . mockReset ( )
145178 } )
0 commit comments