@@ -15,7 +15,7 @@ async function advanceTimers(time: number) {
15
15
}
16
16
17
17
type MockTransportSend = jest . MockedFunction < Transport [ 'send' ] > ;
18
- type MockSendReplayRequest = jest . MockedFunction < ReplayContainer [ 'sendReplayRequest ' ] > ;
18
+ type MockSendReplayRequest = jest . MockedFunction < ReplayContainer [ '_sendReplayRequest ' ] > ;
19
19
20
20
describe ( 'Integration | rate-limiting behaviour' , ( ) => {
21
21
let replay : ReplayContainer ;
@@ -32,11 +32,12 @@ describe('Integration | rate-limiting behaviour', () => {
32
32
} ,
33
33
} ) ) ;
34
34
35
- jest . spyOn ( replay , 'sendReplayRequest' ) ;
35
+ // @ts -ignore private API
36
+ jest . spyOn ( replay , '_sendReplayRequest' ) ;
36
37
37
38
jest . runAllTimers ( ) ;
38
39
mockTransportSend = getCurrentHub ( ) ?. getClient ( ) ?. getTransport ( ) ?. send as MockTransportSend ;
39
- mockSendReplayRequest = replay . sendReplayRequest as MockSendReplayRequest ;
40
+ mockSendReplayRequest = replay [ '_sendReplayRequest' ] as MockSendReplayRequest ;
40
41
} ) ;
41
42
42
43
beforeEach ( ( ) => {
@@ -47,7 +48,7 @@ describe('Integration | rate-limiting behaviour', () => {
47
48
// Create a new session and clear mocks because a segment (from initial
48
49
// checkout) will have already been uploaded by the time the tests run
49
50
clearSession ( replay ) ;
50
- replay . loadSession ( { expiry : 0 } ) ;
51
+ replay [ '_loadSession' ] ( { expiry : 0 } ) ;
51
52
52
53
mockSendReplayRequest . mockClear ( ) ;
53
54
@@ -60,7 +61,7 @@ describe('Integration | rate-limiting behaviour', () => {
60
61
jest . setSystemTime ( new Date ( BASE_TIMESTAMP ) ) ;
61
62
clearSession ( replay ) ;
62
63
jest . clearAllMocks ( ) ;
63
- replay . loadSession ( { expiry : SESSION_IDLE_DURATION } ) ;
64
+ replay [ '_loadSession' ] ( { expiry : SESSION_IDLE_DURATION } ) ;
64
65
} ) ;
65
66
66
67
afterAll ( ( ) => {
@@ -93,11 +94,12 @@ describe('Integration | rate-limiting behaviour', () => {
93
94
'pauses recording and flushing a rate limit is hit and resumes both after the rate limit duration is over' ,
94
95
async rateLimitResponse => {
95
96
expect ( replay . session ?. segmentId ) . toBe ( 0 ) ;
96
- jest . spyOn ( replay , 'sendReplay' ) ;
97
97
jest . spyOn ( replay , 'pause' ) ;
98
98
jest . spyOn ( replay , 'resume' ) ;
99
99
// @ts -ignore private API
100
100
jest . spyOn ( replay , '_handleRateLimit' ) ;
101
+ // @ts -ignore private API
102
+ jest . spyOn ( replay , '_sendReplay' ) ;
101
103
102
104
const TEST_EVENT = { data : { } , timestamp : BASE_TIMESTAMP , type : 2 } ;
103
105
@@ -133,7 +135,7 @@ describe('Integration | rate-limiting behaviour', () => {
133
135
mockRecord . _emitter ( ev ) ;
134
136
await advanceTimers ( DEFAULT_FLUSH_MIN_DELAY ) ;
135
137
expect ( replay . isPaused ( ) ) . toBe ( true ) ;
136
- expect ( replay . sendReplay ) . toHaveBeenCalledTimes ( 1 ) ;
138
+ expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 1 ) ;
137
139
expect ( mockTransportSend ) . toHaveBeenCalledTimes ( 1 ) ;
138
140
}
139
141
@@ -145,7 +147,7 @@ describe('Integration | rate-limiting behaviour', () => {
145
147
expect ( replay . resume ) . toHaveBeenCalledTimes ( 1 ) ;
146
148
expect ( replay . isPaused ( ) ) . toBe ( false ) ;
147
149
148
- expect ( replay . sendReplay ) . toHaveBeenCalledTimes ( 2 ) ;
150
+ expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 2 ) ;
149
151
expect ( replay ) . toHaveLastSentReplay ( {
150
152
events : '[{"data":{"isCheckout":true},"timestamp":1580598035000,"type":2}]' ,
151
153
} ) ;
@@ -160,27 +162,28 @@ describe('Integration | rate-limiting behaviour', () => {
160
162
161
163
// T = base + 40
162
164
await advanceTimers ( DEFAULT_FLUSH_MIN_DELAY ) ;
163
- expect ( replay . sendReplay ) . toHaveBeenCalledTimes ( 3 ) ;
165
+ expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 3 ) ;
164
166
expect ( replay ) . toHaveLastSentReplay ( { events : JSON . stringify ( [ TEST_EVENT3 ] ) } ) ;
165
167
166
168
// nothing should happen afterwards
167
169
// T = base + 60
168
170
await advanceTimers ( 20_000 ) ;
169
- expect ( replay . sendReplay ) . toHaveBeenCalledTimes ( 3 ) ;
171
+ expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 3 ) ;
170
172
expect ( replay ) . toHaveLastSentReplay ( { events : JSON . stringify ( [ TEST_EVENT3 ] ) } ) ;
171
173
172
174
// events array should be empty
173
- expect ( replay . eventBuffer ?. length ) . toBe ( 0 ) ;
175
+ expect ( replay . eventBuffer ?. pendingLength ) . toBe ( 0 ) ;
174
176
} ,
175
177
) ;
176
178
177
179
it ( 'handles rate-limits from a plain 429 response without any retry time' , async ( ) => {
178
180
expect ( replay . session ?. segmentId ) . toBe ( 0 ) ;
179
- jest . spyOn ( replay , 'sendReplay' ) ;
180
181
jest . spyOn ( replay , 'pause' ) ;
181
182
jest . spyOn ( replay , 'resume' ) ;
182
183
// @ts -ignore private API
183
184
jest . spyOn ( replay , '_handleRateLimit' ) ;
185
+ // @ts -ignore private API
186
+ jest . spyOn ( replay , '_sendReplay' ) ;
184
187
185
188
const TEST_EVENT = { data : { } , timestamp : BASE_TIMESTAMP , type : 2 } ;
186
189
@@ -217,7 +220,7 @@ describe('Integration | rate-limiting behaviour', () => {
217
220
mockRecord . _emitter ( ev ) ;
218
221
await advanceTimers ( DEFAULT_FLUSH_MIN_DELAY ) ;
219
222
expect ( replay . isPaused ( ) ) . toBe ( true ) ;
220
- expect ( replay . sendReplay ) . toHaveBeenCalledTimes ( 1 ) ;
223
+ expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 1 ) ;
221
224
expect ( mockTransportSend ) . toHaveBeenCalledTimes ( 1 ) ;
222
225
}
223
226
@@ -229,7 +232,7 @@ describe('Integration | rate-limiting behaviour', () => {
229
232
expect ( replay . resume ) . toHaveBeenCalledTimes ( 1 ) ;
230
233
expect ( replay . isPaused ( ) ) . toBe ( false ) ;
231
234
232
- expect ( replay . sendReplay ) . toHaveBeenCalledTimes ( 2 ) ;
235
+ expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 2 ) ;
233
236
expect ( replay ) . toHaveLastSentReplay ( {
234
237
events : '[{"data":{"isCheckout":true},"timestamp":1580598065000,"type":2}]' ,
235
238
} ) ;
@@ -244,16 +247,16 @@ describe('Integration | rate-limiting behaviour', () => {
244
247
245
248
// T = base + 65
246
249
await advanceTimers ( DEFAULT_FLUSH_MIN_DELAY ) ;
247
- expect ( replay . sendReplay ) . toHaveBeenCalledTimes ( 3 ) ;
250
+ expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 3 ) ;
248
251
expect ( replay ) . toHaveLastSentReplay ( { events : JSON . stringify ( [ TEST_EVENT3 ] ) } ) ;
249
252
250
253
// nothing should happen afterwards
251
254
// T = base + 85
252
255
await advanceTimers ( 20_000 ) ;
253
- expect ( replay . sendReplay ) . toHaveBeenCalledTimes ( 3 ) ;
256
+ expect ( replay [ '_sendReplay' ] ) . toHaveBeenCalledTimes ( 3 ) ;
254
257
expect ( replay ) . toHaveLastSentReplay ( { events : JSON . stringify ( [ TEST_EVENT3 ] ) } ) ;
255
258
256
259
// events array should be empty
257
- expect ( replay . eventBuffer ?. length ) . toBe ( 0 ) ;
260
+ expect ( replay . eventBuffer ?. pendingLength ) . toBe ( 0 ) ;
258
261
} ) ;
259
262
} ) ;
0 commit comments