Skip to content

Commit 23007d2

Browse files
committed
tests
1 parent 5488d5d commit 23007d2

File tree

2 files changed

+98
-2
lines changed

2 files changed

+98
-2
lines changed

packages/openapi-fetch/test/common/response.test.ts

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,21 @@ describe("response", () => {
124124
}
125125
});
126126

127-
test("fallback on empty response", async () => {
127+
test("fallback on null response", async () => {
128128
const client = createObservedClient<paths>({}, async () => new Response(undefined, { status: 200 }));
129129

130130
const { data, error } = await client.GET("/error-empty-response");
131131
expect(data).toBe(undefined);
132132
expect(error).toBe(undefined);
133133
});
134+
135+
test("fallback on empty body steam", async () => {
136+
const client = createObservedClient<paths>({}, async () => new Response("", { status: 200 }));
137+
138+
const { data, error } = await client.GET("/error-empty-response");
139+
expect(data).toBe(undefined);
140+
expect(error).toBe(undefined);
141+
});
134142
});
135143

136144
describe("response object", () => {
@@ -143,7 +151,7 @@ describe("response", () => {
143151
});
144152
});
145153

146-
describe("parseAs", () => {
154+
describe("data parseAs", () => {
147155
const client = createObservedClient<paths>({}, async () => Response.json({}));
148156

149157
test("text", async () => {
@@ -200,4 +208,64 @@ describe("response", () => {
200208
}
201209
});
202210
});
211+
212+
describe("error parseAs", () => {
213+
const client = createObservedClient<paths>({}, async () => Response.json({}, { status: 500 }));
214+
215+
test("text", async () => {
216+
const { data, error } = (await client.GET("/resources", {
217+
parseAs: "text",
218+
})) satisfies { error?: string };
219+
if (data) {
220+
throw new Error("parseAs text: error");
221+
}
222+
expect(error).toBe("{}");
223+
});
224+
225+
test("arrayBuffer", async () => {
226+
const { data, error } = (await client.GET("/resources", {
227+
parseAs: "arrayBuffer",
228+
})) satisfies { error?: ArrayBuffer };
229+
if (data) {
230+
throw new Error("parseAs arrayBuffer: error");
231+
}
232+
expect(error.byteLength).toBe("{}".length);
233+
});
234+
235+
test("blob", async () => {
236+
const { data, error } = (await client.GET("/resources", {
237+
parseAs: "blob",
238+
})) satisfies { error?: Blob };
239+
if (data) {
240+
throw new Error("parseAs blob: error");
241+
}
242+
expect(error.constructor.name).toBe("Blob");
243+
});
244+
245+
test("stream", async () => {
246+
const { error } = (await client.GET("/resources", {
247+
parseAs: "stream",
248+
})) satisfies { error?: ReadableStream<Uint8Array> | null };
249+
if (!error) {
250+
throw new Error("parseAs stream: error");
251+
}
252+
253+
expect(error).toBeInstanceOf(ReadableStream);
254+
const reader = error.getReader();
255+
const result = await reader.read();
256+
expect(result.value?.length).toBe(2);
257+
});
258+
259+
test("use the selected content", async () => {
260+
const client = createObservedClient<paths, "application/ld+json">({}, async () =>
261+
Response.json({ bar: "bar" }, { status: 500 }),
262+
);
263+
const { error } = await client.GET("/media-multiple", {
264+
headers: { Accept: "application/ld+json" },
265+
});
266+
if (error) {
267+
assertType<{ bar: string }>(error);
268+
}
269+
});
270+
});
203271
});

packages/openapi-fetch/test/never-response/never-response.test.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,32 @@ describe("GET", () => {
140140
expect(data).toBeUndefined();
141141
expect(error).toBe("Unauthorized");
142142
});
143+
144+
describe("handles error as", () => {
145+
test("text", async () => {
146+
const client = createObservedClient<paths>({}, async () => new Response("Unauthorized", { status: 401 }));
147+
148+
const { data, error } = await client.GET("/posts", { parseAs: "text" });
149+
150+
expect(data).toBeUndefined();
151+
expect(error).toBe("Unauthorized");
152+
});
153+
154+
test("stream", async () => {
155+
const client = createObservedClient<paths>({}, async () => new Response("Unauthorized", { status: 401 }));
156+
157+
const { data, error } = (await client.GET("/posts", { parseAs: "stream" })) satisfies {
158+
error?: ReadableStream<Uint8Array> | null;
159+
};
160+
if (!error) {
161+
throw new Error("parseAs stream: error");
162+
}
163+
164+
expect(data).toBeUndefined();
165+
expect(error).toBeInstanceOf(ReadableStream);
166+
const reader = error.getReader();
167+
const result = await reader.read();
168+
expect(result.value?.length).toBe(12);
169+
});
170+
});
143171
});

0 commit comments

Comments
 (0)