@@ -7,6 +7,7 @@ import { BASE_TIMESTAMP, mockSdk } from '../index';
77import { mockRrweb } from '../mocks/mockRrweb' ;
88import { clearSession } from '../utils/clearSession' ;
99import { useFakeTimers } from '../utils/use-fake-timers' ;
10+ import * as SendReplayRequest from '../../src/util/sendReplayRequest' ;
1011
1112useFakeTimers ( ) ;
1213
@@ -16,12 +17,11 @@ async function advanceTimers(time: number) {
1617}
1718
1819type MockTransportSend = jest . MockedFunction < Transport [ 'send' ] > ;
19- type MockSendReplayRequest = jest . MockedFunction < ReplayContainer [ '_sendReplayRequest' ] > ;
2020
2121describe ( 'Integration | rate-limiting behaviour' , ( ) => {
2222 let replay : ReplayContainer ;
2323 let mockTransportSend : MockTransportSend ;
24- let mockSendReplayRequest : MockSendReplayRequest ;
24+ let mockSendReplayRequest : jest . MockedFunction < any > ;
2525 const { record : mockRecord } = mockRrweb ( ) ;
2626
2727 beforeAll ( async ( ) => {
@@ -33,12 +33,9 @@ describe('Integration | rate-limiting behaviour', () => {
3333 } ,
3434 } ) ) ;
3535
36- // @ts -ignore private API
37- jest . spyOn ( replay , '_sendReplayRequest' ) ;
38-
3936 jest . runAllTimers ( ) ;
4037 mockTransportSend = getCurrentHub ( ) ?. getClient ( ) ?. getTransport ( ) ?. send as MockTransportSend ;
41- mockSendReplayRequest = replay [ '_sendReplayRequest' ] as MockSendReplayRequest ;
38+ mockSendReplayRequest = jest . spyOn ( SendReplayRequest , 'sendReplayRequest' ) ;
4239 } ) ;
4340
4441 beforeEach ( ( ) => {
@@ -52,8 +49,6 @@ describe('Integration | rate-limiting behaviour', () => {
5249 replay [ '_loadSession' ] ( { expiry : 0 } ) ;
5350
5451 mockSendReplayRequest . mockClear ( ) ;
55-
56- replay [ '_rateLimits' ] = { } ;
5752 } ) ;
5853
5954 afterEach ( async ( ) => {
@@ -92,15 +87,13 @@ describe('Integration | rate-limiting behaviour', () => {
9287 } ,
9388 } ,
9489 ] as TransportMakeRequestResponse [ ] ) (
95- 'pauses recording and flushing a rate limit is hit and resumes both after the rate limit duration is over' ,
90+ 'pauses recording and flushing a rate limit is hit and resumes both after the rate limit duration is over %j ' ,
9691 async rateLimitResponse => {
9792 expect ( replay . session ?. segmentId ) . toBe ( 0 ) ;
9893 jest . spyOn ( replay , 'pause' ) ;
9994 jest . spyOn ( replay , 'resume' ) ;
10095 // @ts -ignore private API
10196 jest . spyOn ( replay , '_handleRateLimit' ) ;
102- // @ts -ignore private API
103- jest . spyOn ( replay , '_sendReplay' ) ;
10497
10598 const TEST_EVENT = { data : { } , timestamp : BASE_TIMESTAMP , type : 2 } ;
10699
@@ -115,7 +108,7 @@ describe('Integration | rate-limiting behaviour', () => {
115108
116109 expect ( mockRecord . takeFullSnapshot ) . not . toHaveBeenCalled ( ) ;
117110 expect ( mockTransportSend ) . toHaveBeenCalledTimes ( 1 ) ;
118- expect ( replay ) . toHaveLastSentReplay ( { events : JSON . stringify ( [ TEST_EVENT ] ) } ) ;
111+ expect ( replay ) . toHaveLastSentReplay ( { recordingData : JSON . stringify ( [ TEST_EVENT ] ) } ) ;
119112
120113 expect ( replay [ '_handleRateLimit' ] ) . toHaveBeenCalledTimes ( 1 ) ;
121114 // resume() was called once before we even started
@@ -136,7 +129,7 @@ describe('Integration | rate-limiting behaviour', () => {
136129 mockRecord . _emitter ( ev ) ;
137130 await advanceTimers ( DEFAULT_FLUSH_MIN_DELAY ) ;
138131 expect ( replay . isPaused ( ) ) . toBe ( true ) ;
139- expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 1 ) ;
132+ expect ( mockSendReplayRequest ) . toHaveBeenCalledTimes ( 1 ) ;
140133 expect ( mockTransportSend ) . toHaveBeenCalledTimes ( 1 ) ;
141134 }
142135
@@ -148,9 +141,9 @@ describe('Integration | rate-limiting behaviour', () => {
148141 expect ( replay . resume ) . toHaveBeenCalledTimes ( 1 ) ;
149142 expect ( replay . isPaused ( ) ) . toBe ( false ) ;
150143
151- expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 2 ) ;
144+ expect ( mockSendReplayRequest ) . toHaveBeenCalledTimes ( 2 ) ;
152145 expect ( replay ) . toHaveLastSentReplay ( {
153- events : JSON . stringify ( [
146+ recordingData : JSON . stringify ( [
154147 { data : { isCheckout : true } , timestamp : BASE_TIMESTAMP + DEFAULT_FLUSH_MIN_DELAY * 7 , type : 2 } ,
155148 ] ) ,
156149 } ) ;
@@ -165,14 +158,14 @@ describe('Integration | rate-limiting behaviour', () => {
165158
166159 // T = base + 40
167160 await advanceTimers ( DEFAULT_FLUSH_MIN_DELAY ) ;
168- expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 3 ) ;
169- expect ( replay ) . toHaveLastSentReplay ( { events : JSON . stringify ( [ TEST_EVENT3 ] ) } ) ;
161+ expect ( mockSendReplayRequest ) . toHaveBeenCalledTimes ( 3 ) ;
162+ expect ( replay ) . toHaveLastSentReplay ( { recordingData : JSON . stringify ( [ TEST_EVENT3 ] ) } ) ;
170163
171164 // nothing should happen afterwards
172165 // T = base + 60
173166 await advanceTimers ( 20_000 ) ;
174- expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 3 ) ;
175- expect ( replay ) . toHaveLastSentReplay ( { events : JSON . stringify ( [ TEST_EVENT3 ] ) } ) ;
167+ expect ( mockSendReplayRequest ) . toHaveBeenCalledTimes ( 3 ) ;
168+ expect ( replay ) . toHaveLastSentReplay ( { recordingData : JSON . stringify ( [ TEST_EVENT3 ] ) } ) ;
176169
177170 // events array should be empty
178171 expect ( replay . eventBuffer ?. pendingLength ) . toBe ( 0 ) ;
@@ -185,8 +178,6 @@ describe('Integration | rate-limiting behaviour', () => {
185178 jest . spyOn ( replay , 'resume' ) ;
186179 // @ts -ignore private API
187180 jest . spyOn ( replay , '_handleRateLimit' ) ;
188- // @ts -ignore private API
189- jest . spyOn ( replay , '_sendReplay' ) ;
190181
191182 const TEST_EVENT = { data : { } , timestamp : BASE_TIMESTAMP , type : 2 } ;
192183
@@ -201,7 +192,7 @@ describe('Integration | rate-limiting behaviour', () => {
201192
202193 expect ( mockRecord . takeFullSnapshot ) . not . toHaveBeenCalled ( ) ;
203194 expect ( mockTransportSend ) . toHaveBeenCalledTimes ( 1 ) ;
204- expect ( replay ) . toHaveLastSentReplay ( { events : JSON . stringify ( [ TEST_EVENT ] ) } ) ;
195+ expect ( replay ) . toHaveLastSentReplay ( { recordingData : JSON . stringify ( [ TEST_EVENT ] ) } ) ;
205196
206197 expect ( replay [ '_handleRateLimit' ] ) . toHaveBeenCalledTimes ( 1 ) ;
207198 // resume() was called once before we even started
@@ -223,7 +214,7 @@ describe('Integration | rate-limiting behaviour', () => {
223214 mockRecord . _emitter ( ev ) ;
224215 await advanceTimers ( DEFAULT_FLUSH_MIN_DELAY ) ;
225216 expect ( replay . isPaused ( ) ) . toBe ( true ) ;
226- expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 1 ) ;
217+ expect ( mockSendReplayRequest ) . toHaveBeenCalledTimes ( 1 ) ;
227218 expect ( mockTransportSend ) . toHaveBeenCalledTimes ( 1 ) ;
228219 }
229220
@@ -235,9 +226,9 @@ describe('Integration | rate-limiting behaviour', () => {
235226 expect ( replay . resume ) . toHaveBeenCalledTimes ( 1 ) ;
236227 expect ( replay . isPaused ( ) ) . toBe ( false ) ;
237228
238- expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 2 ) ;
229+ expect ( mockSendReplayRequest ) . toHaveBeenCalledTimes ( 2 ) ;
239230 expect ( replay ) . toHaveLastSentReplay ( {
240- events : JSON . stringify ( [
231+ recordingData : JSON . stringify ( [
241232 { data : { isCheckout : true } , timestamp : BASE_TIMESTAMP + DEFAULT_FLUSH_MIN_DELAY * 13 , type : 2 } ,
242233 ] ) ,
243234 } ) ;
@@ -252,14 +243,14 @@ describe('Integration | rate-limiting behaviour', () => {
252243
253244 // T = base + 65
254245 await advanceTimers ( DEFAULT_FLUSH_MIN_DELAY ) ;
255- expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 3 ) ;
256- expect ( replay ) . toHaveLastSentReplay ( { events : JSON . stringify ( [ TEST_EVENT3 ] ) } ) ;
246+ expect ( mockSendReplayRequest ) . toHaveBeenCalledTimes ( 3 ) ;
247+ expect ( replay ) . toHaveLastSentReplay ( { recordingData : JSON . stringify ( [ TEST_EVENT3 ] ) } ) ;
257248
258249 // nothing should happen afterwards
259250 // T = base + 85
260251 await advanceTimers ( 20_000 ) ;
261- expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 3 ) ;
262- expect ( replay ) . toHaveLastSentReplay ( { events : JSON . stringify ( [ TEST_EVENT3 ] ) } ) ;
252+ expect ( mockSendReplayRequest ) . toHaveBeenCalledTimes ( 3 ) ;
253+ expect ( replay ) . toHaveLastSentReplay ( { recordingData : JSON . stringify ( [ TEST_EVENT3 ] ) } ) ;
263254
264255 // events array should be empty
265256 expect ( replay . eventBuffer ?. pendingLength ) . toBe ( 0 ) ;
@@ -291,7 +282,7 @@ describe('Integration | rate-limiting behaviour', () => {
291282 expect ( mockRecord . takeFullSnapshot ) . not . toHaveBeenCalled ( ) ;
292283 expect ( mockTransportSend ) . toHaveBeenCalledTimes ( 1 ) ;
293284
294- expect ( replay ) . toHaveLastSentReplay ( { events : JSON . stringify ( [ TEST_EVENT ] ) } ) ;
285+ expect ( replay ) . toHaveLastSentReplay ( { recordingData : JSON . stringify ( [ TEST_EVENT ] ) } ) ;
295286
296287 expect ( replay [ '_handleRateLimit' ] ) . toHaveBeenCalledTimes ( 1 ) ;
297288 expect ( replay . resume ) . not . toHaveBeenCalled ( ) ;
0 commit comments