11import { beforeEach , describe , expect , it , vi } from 'vitest'
22
3- import { logPrEvent } from './pr-lifecycle-getDefaultLogger() .mts'
3+ import { logPrEvent } from './pr-lifecycle-logger .mts'
44
55// Mock logger.
6+ const mockLogger = vi . hoisted ( ( ) => ( {
7+ success : vi . fn ( ) ,
8+ info : vi . fn ( ) ,
9+ warn : vi . fn ( ) ,
10+ error : vi . fn ( ) ,
11+ log : vi . fn ( ) ,
12+ fail : vi . fn ( ) ,
13+ } ) )
14+
615vi . mock ( '@socketsecurity/lib/logger' , ( ) => ( {
7- logger : {
8- success : vi . fn ( ) ,
9- info : vi . fn ( ) ,
10- warn : vi . fn ( ) ,
11- error : vi . fn ( ) ,
12- } ,
16+ logger : mockLogger ,
17+ getDefaultLogger : ( ) => mockLogger ,
1318} ) )
1419
1520// Mock colors.
@@ -38,92 +43,92 @@ describe('pr-lifecycle-logger', () => {
3843 'https://github.com/org/repo/pull/123' ,
3944 )
4045
41- expect ( getDefaultLogger ( ) . success ) . toHaveBeenCalledWith (
46+ expect ( mockLogger . success ) . toHaveBeenCalledWith (
4247 expect . stringContaining ( 'PR #123' ) ,
4348 )
44- expect ( getDefaultLogger ( ) . success ) . toHaveBeenCalledWith (
49+ expect ( mockLogger . success ) . toHaveBeenCalledWith (
4550 expect . stringContaining ( 'GHSA-1234-5678-90ab' ) ,
4651 )
47- expect ( getDefaultLogger ( ) . success ) . toHaveBeenCalledWith (
52+ expect ( mockLogger . success ) . toHaveBeenCalledWith (
4853 expect . stringContaining ( 'https://github.com/org/repo/pull/123' ) ,
4954 )
5055 } )
5156
5257 it ( 'logs merged event with success logger' , async ( ) => {
5358 logPrEvent ( 'merged' , 456 , 'GHSA-abcd-efgh-ijkl' , 'Branch cleaned up' )
5459
55- expect ( getDefaultLogger ( ) . success ) . toHaveBeenCalledWith (
60+ expect ( mockLogger . success ) . toHaveBeenCalledWith (
5661 expect . stringContaining ( 'PR #456' ) ,
5762 )
58- expect ( getDefaultLogger ( ) . success ) . toHaveBeenCalledWith (
63+ expect ( mockLogger . success ) . toHaveBeenCalledWith (
5964 expect . stringContaining ( 'GHSA-abcd-efgh-ijkl' ) ,
6065 )
61- expect ( getDefaultLogger ( ) . success ) . toHaveBeenCalledWith (
66+ expect ( mockLogger . success ) . toHaveBeenCalledWith (
6267 expect . stringContaining ( 'Branch cleaned up' ) ,
6368 )
6469 } )
6570
6671 it ( 'logs closed event with info logger' , async ( ) => {
6772 logPrEvent ( 'closed' , 789 , 'GHSA-test-test-test' )
6873
69- expect ( getDefaultLogger ( ) . info ) . toHaveBeenCalledWith (
74+ expect ( mockLogger . info ) . toHaveBeenCalledWith (
7075 expect . stringContaining ( 'PR #789' ) ,
7176 )
72- expect ( getDefaultLogger ( ) . info ) . toHaveBeenCalledWith (
77+ expect ( mockLogger . info ) . toHaveBeenCalledWith (
7378 expect . stringContaining ( 'GHSA-test-test-test' ) ,
7479 )
7580 } )
7681
7782 it ( 'logs updated event with info logger' , async ( ) => {
7883 logPrEvent ( 'updated' , 111 , 'GHSA-update-test' , 'Updated from base branch' )
7984
80- expect ( getDefaultLogger ( ) . info ) . toHaveBeenCalledWith (
85+ expect ( mockLogger . info ) . toHaveBeenCalledWith (
8186 expect . stringContaining ( 'PR #111' ) ,
8287 )
83- expect ( getDefaultLogger ( ) . info ) . toHaveBeenCalledWith (
88+ expect ( mockLogger . info ) . toHaveBeenCalledWith (
8489 expect . stringContaining ( 'GHSA-update-test' ) ,
8590 )
86- expect ( getDefaultLogger ( ) . info ) . toHaveBeenCalledWith (
91+ expect ( mockLogger . info ) . toHaveBeenCalledWith (
8792 expect . stringContaining ( 'Updated from base branch' ) ,
8893 )
8994 } )
9095
9196 it ( 'logs superseded event with warn logger' , async ( ) => {
9297 logPrEvent ( 'superseded' , 222 , 'GHSA-supersede' )
9398
94- expect ( getDefaultLogger ( ) . warn ) . toHaveBeenCalledWith (
99+ expect ( mockLogger . warn ) . toHaveBeenCalledWith (
95100 expect . stringContaining ( 'PR #222' ) ,
96101 )
97- expect ( getDefaultLogger ( ) . warn ) . toHaveBeenCalledWith (
102+ expect ( mockLogger . warn ) . toHaveBeenCalledWith (
98103 expect . stringContaining ( 'GHSA-supersede' ) ,
99104 )
100105 } )
101106
102107 it ( 'logs failed event with error logger' , async ( ) => {
103108 logPrEvent ( 'failed' , 333 , 'GHSA-fail-test' , 'API error' )
104109
105- expect ( getDefaultLogger ( ) . error ) . toHaveBeenCalledWith (
110+ expect ( mockLogger . error ) . toHaveBeenCalledWith (
106111 expect . stringContaining ( 'PR #333' ) ,
107112 )
108- expect ( getDefaultLogger ( ) . error ) . toHaveBeenCalledWith (
113+ expect ( mockLogger . error ) . toHaveBeenCalledWith (
109114 expect . stringContaining ( 'GHSA-fail-test' ) ,
110115 )
111- expect ( getDefaultLogger ( ) . error ) . toHaveBeenCalledWith (
116+ expect ( mockLogger . error ) . toHaveBeenCalledWith (
112117 expect . stringContaining ( 'API error' ) ,
113118 )
114119 } )
115120
116121 it ( 'handles missing details parameter' , async ( ) => {
117122 logPrEvent ( 'created' , 444 , 'GHSA-no-details' )
118123
119- expect ( getDefaultLogger ( ) . success ) . toHaveBeenCalledWith (
124+ expect ( mockLogger . success ) . toHaveBeenCalledWith (
120125 expect . stringContaining ( 'PR #444' ) ,
121126 )
122- expect ( getDefaultLogger ( ) . success ) . toHaveBeenCalledWith (
127+ expect ( mockLogger . success ) . toHaveBeenCalledWith (
123128 expect . stringContaining ( 'GHSA-no-details' ) ,
124129 )
125130 // Should not include a colon when no details.
126- expect ( getDefaultLogger ( ) . success ) . toHaveBeenCalledWith (
131+ expect ( mockLogger . success ) . toHaveBeenCalledWith (
127132 expect . not . stringContaining ( ': undefined' ) ,
128133 )
129134 } )
@@ -132,7 +137,7 @@ describe('pr-lifecycle-logger', () => {
132137 logPrEvent ( 'created' , 100 , 'GHSA-colors' )
133138
134139 // Should include colored checkmark for success.
135- expect ( getDefaultLogger ( ) . success ) . toHaveBeenCalledWith (
140+ expect ( mockLogger . success ) . toHaveBeenCalledWith (
136141 expect . stringContaining ( '[green]✓[/green]' ) ,
137142 )
138143 } )
0 commit comments