@@ -15,9 +15,9 @@ describe('ContextLogger', () => {
15
15
16
16
beforeEach ( ( ) => {
17
17
jest . clearAllMocks ( ) ;
18
-
18
+
19
19
jest . spyOn ( ContextStore , 'getContext' ) . mockReturnValue ( CONTEXT ) ;
20
-
20
+
21
21
mockLogger = {
22
22
log : spyLog ,
23
23
debug : spyDebug ,
@@ -29,7 +29,7 @@ describe('ContextLogger', () => {
29
29
// Reset the internal logger for each test to ensure clean state
30
30
( ContextLogger as any ) . internalLogger = null ;
31
31
ContextLogger . init ( mockLogger ) ;
32
-
32
+
33
33
contextLogger = new ContextLogger ( MODULE_NAME ) ;
34
34
} ) ;
35
35
@@ -59,7 +59,7 @@ describe('ContextLogger', () => {
59
59
60
60
expect ( mockLogger . log ) . toHaveBeenCalledWith ( CONTEXT , message , MODULE_NAME ) ;
61
61
} ) ;
62
-
62
+
63
63
it ( 'should call log method when info is called' , ( ) => {
64
64
const message = 'Test message' ;
65
65
const bindings = { someBinding : 'value' } ;
@@ -245,7 +245,7 @@ describe('ContextLogger', () => {
245
245
// Reset the internal logger for each test to ensure clean state
246
246
( ContextLogger as any ) . internalLogger = null ;
247
247
} ) ;
248
-
248
+
249
249
it ( 'should group only bindings when bindingsKey provided' , ( ) => {
250
250
const logger = new ContextLogger ( MODULE_NAME ) ;
251
251
ContextLogger . init ( mockLogger , { groupFields : { bindingsKey : 'params' } } ) ;
@@ -318,7 +318,7 @@ describe('ContextLogger', () => {
318
318
// Reset the internal logger for each test to ensure clean state
319
319
( ContextLogger as any ) . internalLogger = null ;
320
320
} ) ;
321
-
321
+
322
322
it ( 'should group both bindings and context under specified keys' , ( ) => {
323
323
const logger = new ContextLogger ( MODULE_NAME ) ;
324
324
ContextLogger . init ( mockLogger , {
@@ -369,7 +369,7 @@ describe('ContextLogger', () => {
369
369
// Reset the internal logger for each test to ensure clean state
370
370
( ContextLogger as any ) . internalLogger = null ;
371
371
} ) ;
372
-
372
+
373
373
it ( 'should adapt context when adapter is provided' , ( ) => {
374
374
const logger = new ContextLogger ( MODULE_NAME ) ;
375
375
ContextLogger . init ( mockLogger , {
@@ -413,7 +413,7 @@ describe('ContextLogger', () => {
413
413
// Reset the internal logger for each test to ensure clean state
414
414
( ContextLogger as any ) . internalLogger = null ;
415
415
} ) ;
416
-
416
+
417
417
it ( 'should ignore bootstrap logs when ignoreBootstrapLogs is true' , ( ) => {
418
418
const logger = new ContextLogger ( MODULE_NAME ) ;
419
419
ContextLogger . init ( mockLogger , { ignoreBootstrapLogs : true } ) ;
@@ -452,4 +452,65 @@ describe('ContextLogger', () => {
452
452
) ;
453
453
} ) ;
454
454
} ) ;
455
+
456
+ describe ( 'hook functions' , ( ) => {
457
+ it ( 'should call hook function when provided' , ( ) => {
458
+ const logger = new ContextLogger ( MODULE_NAME ) ;
459
+ const logMessage = 'Test message' ;
460
+ const bindings = { someBinding : 'value' } ;
461
+ const hookSpy = jest . fn ( ) ;
462
+
463
+ ContextLogger . init ( mockLogger , {
464
+ hooks : {
465
+ log : [ hookSpy ] ,
466
+ } ,
467
+ } ) ;
468
+
469
+ logger . log ( logMessage , bindings ) ;
470
+
471
+ expect ( hookSpy ) . toHaveBeenCalledWith ( logMessage , { ...bindings , ...CONTEXT } ) ;
472
+ } ) ;
473
+
474
+ it ( 'should call multiple hook function when provided' , ( ) => {
475
+ const logger = new ContextLogger ( MODULE_NAME ) ;
476
+ const logMessage = 'Test message' ;
477
+ const bindings = { someBinding : 'value' } ;
478
+ const hookSpy1 = jest . fn ( ) ;
479
+ const hookSpy2 = jest . fn ( ) ;
480
+ const hookSpy3 = jest . fn ( ) ;
481
+
482
+ ContextLogger . init ( mockLogger , {
483
+ hooks : {
484
+ log : [ hookSpy1 , hookSpy2 , hookSpy3 ] ,
485
+ } ,
486
+ } ) ;
487
+
488
+ logger . log ( logMessage , bindings ) ;
489
+
490
+ expect ( hookSpy1 ) . toHaveBeenCalledWith ( logMessage , { ...bindings , ...CONTEXT } ) ;
491
+ expect ( hookSpy2 ) . toHaveBeenCalledWith ( logMessage , { ...bindings , ...CONTEXT } ) ;
492
+ expect ( hookSpy3 ) . toHaveBeenCalledWith ( logMessage , { ...bindings , ...CONTEXT } ) ;
493
+ } ) ;
494
+
495
+ it ( 'should call \'all\' hook function when provided' , ( ) => {
496
+ const logger = new ContextLogger ( MODULE_NAME ) ;
497
+ const logMessage = 'Test message' ;
498
+ const bindings = { someBinding : 'value' } ;
499
+ const hookSpy = jest . fn ( ) ;
500
+ const allHookSpy = jest . fn ( ) ;
501
+
502
+ ContextLogger . init ( mockLogger , {
503
+ hooks : {
504
+ log : [ hookSpy ] ,
505
+ all : [ allHookSpy ] ,
506
+ } ,
507
+ } ) ;
508
+
509
+ logger . log ( logMessage , bindings ) ;
510
+ logger . debug ( logMessage , bindings ) ;
511
+
512
+ expect ( hookSpy ) . toHaveBeenCalledTimes ( 1 ) ;
513
+ expect ( allHookSpy ) . toHaveBeenCalledTimes ( 2 ) ;
514
+ } ) ;
515
+ } ) ;
455
516
} ) ;
0 commit comments