@@ -304,6 +304,37 @@ describe('makeOfflineTransport', () => {
304
304
START_DELAY + 2_000 ,
305
305
) ;
306
306
307
+ it (
308
+ 'Updates sent_at envelope header on retry' ,
309
+ async ( ) => {
310
+ const testStartTime = new Date ( ) ;
311
+
312
+ // Create an envelope with a sent_at header very far in the past
313
+ const env : EventEnvelope = [ ...ERROR_ENVELOPE ] ;
314
+ env [ 0 ] . sent_at = new Date ( 2020 , 1 , 1 ) . toISOString ( ) ;
315
+
316
+ const { getCalls, store } = createTestStore ( ERROR_ENVELOPE ) ;
317
+ const { getSentEnvelopes, baseTransport } = createTestTransport ( { statusCode : 200 } ) ;
318
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
319
+ const _transport = makeOfflineTransport ( baseTransport ) ( {
320
+ ...transportOptions ,
321
+ createStore : store ,
322
+ flushAtStartup : true ,
323
+ } ) ;
324
+
325
+ await waitUntil ( ( ) => getCalls ( ) . length >= 1 , START_DELAY * 2 ) ;
326
+ expect ( getCalls ( ) ) . toEqual ( [ 'shift' ] ) ;
327
+
328
+ // When it gets shifted out of the store, the sent_at header should be updated
329
+ const envelopes = getSentEnvelopes ( ) . map ( parseEnvelope ) as EventEnvelope [ ] ;
330
+ expect ( envelopes [ 0 ] [ 0 ] ) . toBeDefined ( ) ;
331
+ const sent_at = new Date ( envelopes [ 0 ] [ 0 ] . sent_at ) ;
332
+
333
+ expect ( sent_at . getTime ( ) ) . toBeGreaterThan ( testStartTime . getTime ( ) ) ;
334
+ } ,
335
+ START_DELAY + 2_000 ,
336
+ ) ;
337
+
307
338
it ( 'shouldStore can stop envelopes from being stored on send failure' , async ( ) => {
308
339
const { getCalls, store } = createTestStore ( ) ;
309
340
const { getSendCount, baseTransport } = createTestTransport ( new Error ( ) ) ;
0 commit comments