File tree Expand file tree Collapse file tree 2 files changed +15
-6
lines changed
Expand file tree Collapse file tree 2 files changed +15
-6
lines changed Original file line number Diff line number Diff line change @@ -12,15 +12,16 @@ export class ReportingLogger implements IReportingLogger {
1212 private readonly apiClient : IAPIClient ;
1313 private readonly reporter : string = 'mp-wsdk' ;
1414 private readonly integration : string = 'mp-wsdk' ;
15- private readonly rateLimiter : RateLimiter = new RateLimiter ( ) ;
15+ private readonly rateLimiter : RateLimiter ;
1616
1717 constructor (
1818 apiClient : IAPIClient ,
1919 private readonly sdkVersion : string ,
20+ rateLimiter ?: RateLimiter ,
2021 ) {
2122 this . isEnabled = this . isReportingEnabled ( ) ;
2223 this . apiClient = apiClient ;
23- this . rateLimiter = new RateLimiter ( ) ;
24+ this . rateLimiter = rateLimiter ?? new RateLimiter ( ) ;
2425 }
2526
2627 public error ( msg : string , code ?: ErrorCodes , stackTrace ?: string ) {
Original file line number Diff line number Diff line change @@ -10,7 +10,6 @@ describe('ReportingLogger', () => {
1010 beforeEach ( ( ) => {
1111 apiClient = { sendLogToServer : jest . fn ( ) } ;
1212
13- // Mock location object to allow modifying search property
1413 delete ( globalThis as any ) . location ;
1514 ( globalThis as any ) . location = {
1615 href : 'https://e.com' ,
@@ -70,9 +69,18 @@ describe('ReportingLogger', () => {
7069 expect ( apiClient . sendLogToServer ) . toHaveBeenCalled ( ) ;
7170 } ) ;
7271
73- it ( 'rate limits after 10 errors' , ( ) => {
74- for ( let i = 0 ; i < 12 ; i ++ ) logger . error ( 'err' ) ;
75- expect ( apiClient . sendLogToServer ) . toHaveBeenCalledTimes ( 10 ) ;
72+ it ( 'rate limits after 3 errors' , ( ) => {
73+ const mockRateLimiter = {
74+ incrementAndCheck : jest . fn ( ) . mockImplementation ( ( severity ) => {
75+ // allow only first 3, then start rate limiting
76+ mockRateLimiter . count = ( mockRateLimiter . count || 0 ) + 1 ;
77+ return mockRateLimiter . count > 3 ;
78+ } ) ,
79+ } ;
80+ logger = new ReportingLogger ( apiClient , sdkVersion , mockRateLimiter as any ) ;
81+
82+ for ( let i = 0 ; i < 5 ; i ++ ) logger . error ( 'err' ) ;
83+ expect ( apiClient . sendLogToServer ) . toHaveBeenCalledTimes ( 3 ) ;
7684 } ) ;
7785} ) ;
7886
You can’t perform that action at this time.
0 commit comments