Skip to content

Commit 0d10106

Browse files
committed
Update test cases to handle new logic in fetchUtils
1 parent 6d66814 commit 0d10106

File tree

2 files changed

+118
-0
lines changed

2 files changed

+118
-0
lines changed

packages/replay-internal/test/unit/coreHandlers/handleNetworkBreadcrumbs.test.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ function getMockResponse(contentLength?: string, body?: string, headers?: Record
4040
...headers,
4141
};
4242

43+
const encoder = new TextEncoder();
44+
4345
const response = {
4446
headers: {
4547
has: (prop: string) => {
@@ -49,6 +51,24 @@ function getMockResponse(contentLength?: string, body?: string, headers?: Record
4951
return internalHeaders[prop.toLowerCase() ?? ''];
5052
},
5153
},
54+
body: {
55+
getReader: () => {
56+
return {
57+
read: () => {
58+
return Promise.resolve({
59+
done: true,
60+
value: encoder.encode(body),
61+
});
62+
},
63+
cancel: async () => {
64+
// noop
65+
},
66+
releaseLock: async () => {
67+
// noop
68+
},
69+
};
70+
},
71+
},
5272
clone: () => response,
5373
text: () => Promise.resolve(body),
5474
} as unknown as Response;
@@ -741,6 +761,7 @@ other-header: test`;
741761
options.networkCaptureBodies = true;
742762

743763
const largeBody = JSON.stringify({ a: LARGE_BODY });
764+
const encoder = new TextEncoder();
744765

745766
const breadcrumb: Breadcrumb = {
746767
category: 'fetch',
@@ -756,6 +777,24 @@ other-header: test`;
756777
get: () => '',
757778
},
758779
clone: () => mockResponse,
780+
body: {
781+
getReader: () => {
782+
return {
783+
read: () => {
784+
return Promise.resolve({
785+
done: true,
786+
value: encoder.encode(largeBody),
787+
});
788+
},
789+
cancel: async () => {
790+
// noop
791+
},
792+
releaseLock: async () => {
793+
// noop
794+
},
795+
};
796+
},
797+
},
759798
text: () => Promise.resolve(largeBody),
760799
} as unknown as Response;
761800

packages/replay-internal/test/unit/coreHandlers/util/fetchUtils.test.ts

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,19 @@ describe('Unit | coreHandlers | util | fetchUtils', () => {
4343
});
4444

4545
it('works with text body', async () => {
46+
const encoder = new TextEncoder();
47+
48+
const mockRead = vi
49+
.fn()
50+
.mockResolvedValueOnce({
51+
value: encoder.encode('text body'),
52+
done: false,
53+
})
54+
.mockResolvedValueOnce({
55+
value: null,
56+
done: true,
57+
});
58+
4659
const response = {
4760
headers: {
4861
has: () => {
@@ -52,6 +65,19 @@ describe('Unit | coreHandlers | util | fetchUtils', () => {
5265
return undefined;
5366
},
5467
},
68+
body: {
69+
getReader: () => {
70+
return {
71+
read: mockRead,
72+
cancel: async (reason?: any) => {
73+
mockRead.mockRejectedValue(new Error(reason));
74+
},
75+
releaseLock: async () => {
76+
// noop
77+
},
78+
};
79+
},
80+
},
5581
clone: () => response,
5682
text: () => Promise.resolve('text body'),
5783
} as unknown as Response;
@@ -74,6 +100,8 @@ describe('Unit | coreHandlers | util | fetchUtils', () => {
74100
});
75101

76102
it('works with body that fails', async () => {
103+
const mockRead = vi.fn().mockRejectedValueOnce(new Error('cannot read'));
104+
77105
const response = {
78106
headers: {
79107
has: () => {
@@ -83,6 +111,19 @@ describe('Unit | coreHandlers | util | fetchUtils', () => {
83111
return undefined;
84112
},
85113
},
114+
body: {
115+
getReader: () => {
116+
return {
117+
read: mockRead,
118+
cancel: async (_?: any) => {
119+
// noop
120+
},
121+
releaseLock: async () => {
122+
// noop
123+
},
124+
};
125+
},
126+
},
86127
clone: () => response,
87128
text: () => Promise.reject('cannot read'),
88129
} as unknown as Response;
@@ -105,6 +146,12 @@ describe('Unit | coreHandlers | util | fetchUtils', () => {
105146
});
106147

107148
it('works with body that times out', async () => {
149+
const encoder = new TextEncoder();
150+
const mockRead = vi.fn();
151+
152+
let cancelled = false;
153+
let cancellReason = '';
154+
108155
const response = {
109156
headers: {
110157
has: () => {
@@ -114,6 +161,38 @@ describe('Unit | coreHandlers | util | fetchUtils', () => {
114161
return undefined;
115162
},
116163
},
164+
body: {
165+
getReader: () => {
166+
return {
167+
read: async () => {
168+
if (cancelled) {
169+
mockRead.mockRejectedValue(new Error(cancellReason));
170+
} else {
171+
mockRead.mockResolvedValueOnce({
172+
value: encoder.encode('chunk'),
173+
done: false,
174+
});
175+
}
176+
177+
await new Promise(res => {
178+
setTimeout(() => {
179+
res(1);
180+
}, 200);
181+
});
182+
183+
// eslint-disable-next-line no-return-await
184+
return await mockRead();
185+
},
186+
cancel: async (reason?: any) => {
187+
cancelled = true;
188+
cancellReason = reason;
189+
},
190+
releaseLock: async () => {
191+
// noop
192+
},
193+
};
194+
},
195+
},
117196
clone: () => response,
118197
text: () => new Promise(resolve => setTimeout(() => resolve('text body'), 1000)),
119198
} as unknown as Response;

0 commit comments

Comments
 (0)