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