@@ -3,12 +3,26 @@ import { LogRequestSeverity } from '../../src/logging/logRequest';
33import { ErrorCodes } from '../../src/logging/errorCodes' ;
44
55describe ( 'ReportingLogger' , ( ) => {
6- let apiClient : any ;
6+ let mpInstance : any ;
77 let logger : ReportingLogger ;
88 const sdkVersion = '1.2.3' ;
9+ let mockFetch : jest . Mock ;
910
1011 beforeEach ( ( ) => {
11- apiClient = { sendLogToServer : jest . fn ( ) } ;
12+ mockFetch = jest . fn ( ) . mockResolvedValue ( { ok : true } ) ;
13+ global . fetch = mockFetch ;
14+
15+ mpInstance = {
16+ _Helpers : {
17+ createServiceUrl : jest . fn ( ) . mockReturnValue ( 'https://test-url.com' )
18+ } ,
19+ _Store : {
20+ SDKConfig : {
21+ v2SecureServiceUrl : 'https://secure-service.com'
22+ } ,
23+ devToken : 'test-token'
24+ }
25+ } ;
1226
1327 delete ( globalThis as any ) . location ;
1428 ( globalThis as any ) . location = {
@@ -19,9 +33,10 @@ describe('ReportingLogger', () => {
1933 Object . assign ( globalThis , {
2034 navigator : { userAgent : 'ua' } ,
2135 mParticle : { config : { isWebSdkLoggingEnabled : true } } ,
22- ROKT_DOMAIN : 'set'
36+ ROKT_DOMAIN : 'set' ,
37+ fetch : mockFetch
2338 } ) ;
24- logger = new ReportingLogger ( apiClient , sdkVersion ) ;
39+ logger = new ReportingLogger ( mpInstance , sdkVersion ) ;
2540 } ) ;
2641
2742 afterEach ( ( ) => {
@@ -32,41 +47,49 @@ describe('ReportingLogger', () => {
3247
3348 it ( 'sends error logs with correct params' , ( ) => {
3449 logger . error ( 'msg' , ErrorCodes . UNHANDLED_EXCEPTION , 'stack' ) ;
35- expect ( apiClient . sendLogToServer ) . toHaveBeenCalledWith ( expect . objectContaining ( {
50+ expect ( mockFetch ) . toHaveBeenCalled ( ) ;
51+ const fetchCall = mockFetch . mock . calls [ 0 ] ;
52+ expect ( fetchCall [ 0 ] ) . toContain ( '/v1/log' ) ;
53+ const body = JSON . parse ( fetchCall [ 1 ] . body ) ;
54+ expect ( body ) . toMatchObject ( {
3655 severity : LogRequestSeverity . Error ,
3756 code : ErrorCodes . UNHANDLED_EXCEPTION ,
3857 stackTrace : 'stack'
39- } ) ) ;
58+ } ) ;
4059 } ) ;
4160
4261 it ( 'sends warning logs with correct params' , ( ) => {
4362 logger . warning ( 'warn' ) ;
44- expect ( apiClient . sendLogToServer ) . toHaveBeenCalledWith ( expect . objectContaining ( {
63+ expect ( mockFetch ) . toHaveBeenCalled ( ) ;
64+ const fetchCall = mockFetch . mock . calls [ 0 ] ;
65+ expect ( fetchCall [ 0 ] ) . toContain ( '/v1/log' ) ;
66+ const body = JSON . parse ( fetchCall [ 1 ] . body ) ;
67+ expect ( body ) . toMatchObject ( {
4568 severity : LogRequestSeverity . Warning
46- } ) ) ;
69+ } ) ;
4770 } ) ;
4871
4972 it ( 'does not log if ROKT_DOMAIN missing' , ( ) => {
5073 delete ( globalThis as any ) . ROKT_DOMAIN ;
51- logger = new ReportingLogger ( apiClient , sdkVersion ) ;
74+ logger = new ReportingLogger ( mpInstance , sdkVersion ) ;
5275 logger . error ( 'x' ) ;
53- expect ( apiClient . sendLogToServer ) . not . toHaveBeenCalled ( ) ;
76+ expect ( mockFetch ) . not . toHaveBeenCalled ( ) ;
5477 } ) ;
5578
5679 it ( 'does not log if feature flag and debug mode off' , ( ) => {
5780 window . mParticle . config . isWebSdkLoggingEnabled = false ;
5881 window . location . search = '' ;
59- logger = new ReportingLogger ( apiClient , sdkVersion ) ;
82+ logger = new ReportingLogger ( mpInstance , sdkVersion ) ;
6083 logger . error ( 'x' ) ;
61- expect ( apiClient . sendLogToServer ) . not . toHaveBeenCalled ( ) ;
84+ expect ( mockFetch ) . not . toHaveBeenCalled ( ) ;
6285 } ) ;
6386
6487 it ( 'logs if debug mode on even if feature flag off' , ( ) => {
6588 window . mParticle . config . isWebSdkLoggingEnabled = false ;
6689 window . location . search = '?mp_enable_logging=true' ;
67- logger = new ReportingLogger ( apiClient , sdkVersion ) ;
90+ logger = new ReportingLogger ( mpInstance , sdkVersion ) ;
6891 logger . error ( 'x' ) ;
69- expect ( apiClient . sendLogToServer ) . toHaveBeenCalled ( ) ;
92+ expect ( mockFetch ) . toHaveBeenCalled ( ) ;
7093 } ) ;
7194
7295 it ( 'rate limits after 3 errors' , ( ) => {
@@ -76,10 +99,10 @@ describe('ReportingLogger', () => {
7699 return ++ count > 3 ;
77100 } ) ,
78101 } ;
79- logger = new ReportingLogger ( apiClient , sdkVersion , mockRateLimiter ) ;
102+ logger = new ReportingLogger ( mpInstance , sdkVersion , mockRateLimiter ) ;
80103
81104 for ( let i = 0 ; i < 5 ; i ++ ) logger . error ( 'err' ) ;
82- expect ( apiClient . sendLogToServer ) . toHaveBeenCalledTimes ( 3 ) ;
105+ expect ( mockFetch ) . toHaveBeenCalledTimes ( 3 ) ;
83106 } ) ;
84107} ) ;
85108
0 commit comments