@@ -8,6 +8,7 @@ import { PaymentsGleanService } from './glean.service';
88import { MockPaymentsGleanFactory } from './glean.test-provider' ;
99import {
1010 MockPaymentsGleanConfigProvider ,
11+ PaymentsGleanConfig ,
1112} from './glean.config' ;
1213import {
1314 AccountsMetricsDataFactory ,
@@ -64,6 +65,7 @@ describe('PaymentsGleanService', () => {
6465 let accountManager : AccountManager ;
6566 let customerManager : CustomerManager ;
6667 let nimbusManager : NimbusManager ;
68+ let gleanConfig : PaymentsGleanConfig ;
6769 let logger : Logger ;
6870
6971 beforeEach ( async ( ) => {
@@ -102,9 +104,70 @@ describe('PaymentsGleanService', () => {
102104 accountManager = moduleRef . get ( AccountManager ) ;
103105 customerManager = moduleRef . get ( CustomerManager ) ;
104106 nimbusManager = moduleRef . get ( NimbusManager ) ;
107+ gleanConfig = moduleRef . get ( PaymentsGleanConfig ) ;
105108 logger = moduleRef . get ( Logger ) ;
106109 } ) ;
107110
111+ describe ( 'handleUserDelete' , ( ) => {
112+ const mockUid = 'test-uid-123' ;
113+ const mockNimbusIds = [ 'nimbus-id-1' , 'nimbus-id-2' ] ;
114+
115+ beforeEach ( ( ) => {
116+ jest
117+ . spyOn ( nimbusManager , 'generateAllNimbusIdsForDeletion' )
118+ . mockReturnValue ( mockNimbusIds ) ;
119+ jest . spyOn ( logger , 'log' ) . mockImplementation ( ( ) => { } ) ;
120+ } ) ;
121+
122+ it ( 'logs one entry per nimbus user id' , ( ) => {
123+ paymentsGleanService . handleUserDelete ( mockUid ) ;
124+
125+ expect (
126+ nimbusManager . generateAllNimbusIdsForDeletion
127+ ) . toHaveBeenCalledWith ( mockUid ) ;
128+ expect ( logger . log ) . toHaveBeenCalledTimes ( mockNimbusIds . length ) ;
129+ for ( const nimbusUserId of mockNimbusIds ) {
130+ expect ( logger . log ) . toHaveBeenCalledWith ( 'glean.user.delete' , {
131+ uid : mockUid ,
132+ nimbus_user_id : nimbusUserId ,
133+ } ) ;
134+ }
135+ } ) ;
136+
137+ it ( 'still logs deletion even when glean is disabled' , ( ) => {
138+ gleanConfig . enabled = false ;
139+
140+ paymentsGleanService . handleUserDelete ( mockUid ) ;
141+
142+ expect (
143+ nimbusManager . generateAllNimbusIdsForDeletion
144+ ) . toHaveBeenCalledWith ( mockUid ) ;
145+ expect ( logger . log ) . toHaveBeenCalledTimes ( mockNimbusIds . length ) ;
146+ for ( const nimbusUserId of mockNimbusIds ) {
147+ expect ( logger . log ) . toHaveBeenCalledWith ( 'glean.user.delete' , {
148+ uid : mockUid ,
149+ nimbus_user_id : nimbusUserId ,
150+ } ) ;
151+ }
152+
153+ gleanConfig . enabled = true ;
154+ } ) ;
155+
156+ it ( 'logs a single entry when one namespace is configured' , ( ) => {
157+ jest
158+ . spyOn ( nimbusManager , 'generateAllNimbusIdsForDeletion' )
159+ . mockReturnValue ( [ 'single-nimbus-id' ] ) ;
160+
161+ paymentsGleanService . handleUserDelete ( mockUid ) ;
162+
163+ expect ( logger . log ) . toHaveBeenCalledTimes ( 1 ) ;
164+ expect ( logger . log ) . toHaveBeenCalledWith ( 'glean.user.delete' , {
165+ uid : mockUid ,
166+ nimbus_user_id : 'single-nimbus-id' ,
167+ } ) ;
168+ } ) ;
169+ } ) ;
170+
108171 describe ( 'recordGenericSubManageEvent' , ( ) => {
109172 const mockEventData = GenericGleanSubManageEventFactory ( ) ;
110173
0 commit comments