Fix tests
This commit is contained in:
parent
85841b2975
commit
72ca34ffbe
|
@ -2,59 +2,18 @@ import { afterEach, assert, describe, it, vi } from "vitest";
|
|||
import { Fetch } from "../fetch-safe/fetch-safe";
|
||||
import type { CodexError } from "../async";
|
||||
|
||||
class MockResponse implements Response {
|
||||
headers: Headers = new Headers();
|
||||
ok: boolean;
|
||||
redirected = false;
|
||||
status: number;
|
||||
statusText = "";
|
||||
type = "basic" as "basic";
|
||||
url = "";
|
||||
body = null;
|
||||
bodyUsed = false;
|
||||
_text: string;
|
||||
|
||||
constructor(ok: boolean, status: number, text: string) {
|
||||
this.ok = ok;
|
||||
this.status = status;
|
||||
this._text = text;
|
||||
}
|
||||
|
||||
clone(): Response {
|
||||
throw new Error("Method not implemented.");
|
||||
}
|
||||
|
||||
arrayBuffer(): Promise<ArrayBuffer> {
|
||||
throw new Error("Method not implemented.");
|
||||
}
|
||||
|
||||
blob(): Promise<Blob> {
|
||||
throw new Error("Method not implemented.");
|
||||
}
|
||||
|
||||
formData(): Promise<FormData> {
|
||||
throw new Error("Method not implemented.");
|
||||
}
|
||||
|
||||
json(): Promise<any> {
|
||||
return Promise.resolve(JSON.parse(this._text));
|
||||
}
|
||||
|
||||
text(): Promise<string> {
|
||||
return Promise.resolve(this._text);
|
||||
}
|
||||
}
|
||||
|
||||
describe.only("fetch", () => {
|
||||
afterEach(() => {
|
||||
vi.restoreAllMocks();
|
||||
});
|
||||
|
||||
it("returns an error when the http call failed", async () => {
|
||||
const spy = vi.spyOn(global, "fetch");
|
||||
spy.mockImplementationOnce(() =>
|
||||
Promise.resolve(new MockResponse(false, 500, "error"))
|
||||
);
|
||||
const mockResponse = {
|
||||
ok: false,
|
||||
status: 500,
|
||||
text: async () => "error",
|
||||
} as Response;
|
||||
globalThis.fetch = vi.fn().mockResolvedValue(mockResponse);
|
||||
|
||||
const result = await Fetch.safeJson("http://localhost:3000/some-url", {
|
||||
method: "GET",
|
||||
|
@ -69,31 +28,31 @@ describe.only("fetch", () => {
|
|||
});
|
||||
|
||||
it.only("returns an error when the json parsing failed", async () => {
|
||||
const spy = vi.spyOn(global, "fetch");
|
||||
spy.mockImplementationOnce(() =>
|
||||
Promise.resolve(
|
||||
new MockResponse(false, 200, "Unexpected end of JSON input")
|
||||
)
|
||||
);
|
||||
const mockResponse = {
|
||||
ok: true,
|
||||
status: 200,
|
||||
json: async () => {
|
||||
return JSON.parse("{error");
|
||||
},
|
||||
} as any;
|
||||
globalThis.fetch = vi.fn().mockResolvedValue(mockResponse);
|
||||
|
||||
const result = await Fetch.safeJson("http://localhost:3000/some-url", {
|
||||
method: "GET",
|
||||
});
|
||||
|
||||
assert.ok(result.error);
|
||||
assert.deepStrictEqual(
|
||||
(result.data as CodexError).message,
|
||||
"Unexpected end of JSON input"
|
||||
);
|
||||
});
|
||||
|
||||
it("returns the data when the fetch succeed", async () => {
|
||||
const spy = vi.spyOn(global, "fetch");
|
||||
spy.mockImplementationOnce(() =>
|
||||
Promise.resolve(
|
||||
new MockResponse(true, 200, JSON.stringify({ hello: "world" }))
|
||||
)
|
||||
);
|
||||
const mockResponse = {
|
||||
ok: true,
|
||||
status: 200,
|
||||
json: async () => ({
|
||||
hello: "world",
|
||||
}),
|
||||
} as Response;
|
||||
globalThis.fetch = vi.fn().mockResolvedValue(mockResponse);
|
||||
|
||||
const result = await Fetch.safeJson("http://localhost:3000/some-url", {
|
||||
method: "GET",
|
||||
|
|
|
@ -9,8 +9,7 @@ export const Fetch = {
|
|||
return {
|
||||
error: true,
|
||||
data: {
|
||||
message:
|
||||
"The connection with the Codex node seems to be broken. Please check your node is running.",
|
||||
message: res.data.message,
|
||||
code: 502,
|
||||
},
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue