54 lines
2.1 KiB
TypeScript
54 lines
2.1 KiB
TypeScript
import { makeRequest } from "../../../src/core/fetcher/makeRequest";
|
|
|
|
describe("Test makeRequest", () => {
|
|
const mockPostUrl = "https://httpbin.org/post";
|
|
const mockGetUrl = "https://httpbin.org/get";
|
|
const mockHeaders = { "Content-Type": "application/json" };
|
|
const mockBody = JSON.stringify({ key: "value" });
|
|
|
|
let mockFetch: import("vitest").Mock;
|
|
|
|
beforeEach(() => {
|
|
mockFetch = vi.fn();
|
|
mockFetch.mockResolvedValue(new Response(JSON.stringify({ test: "successful" }), { status: 200 }));
|
|
});
|
|
|
|
it("should handle POST request correctly", async () => {
|
|
const response = await makeRequest(mockFetch, mockPostUrl, "POST", mockHeaders, mockBody);
|
|
const responseBody = await response.json();
|
|
expect(responseBody).toEqual({ test: "successful" });
|
|
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
const [calledUrl, calledOptions] = mockFetch.mock.calls[0];
|
|
expect(calledUrl).toBe(mockPostUrl);
|
|
expect(calledOptions).toEqual(
|
|
expect.objectContaining({
|
|
method: "POST",
|
|
headers: mockHeaders,
|
|
body: mockBody,
|
|
credentials: undefined,
|
|
}),
|
|
);
|
|
expect(calledOptions.signal).toBeDefined();
|
|
expect(calledOptions.signal).toBeInstanceOf(AbortSignal);
|
|
});
|
|
|
|
it("should handle GET request correctly", async () => {
|
|
const response = await makeRequest(mockFetch, mockGetUrl, "GET", mockHeaders, undefined);
|
|
const responseBody = await response.json();
|
|
expect(responseBody).toEqual({ test: "successful" });
|
|
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
const [calledUrl, calledOptions] = mockFetch.mock.calls[0];
|
|
expect(calledUrl).toBe(mockGetUrl);
|
|
expect(calledOptions).toEqual(
|
|
expect.objectContaining({
|
|
method: "GET",
|
|
headers: mockHeaders,
|
|
body: undefined,
|
|
credentials: undefined,
|
|
}),
|
|
);
|
|
expect(calledOptions.signal).toBeDefined();
|
|
expect(calledOptions.signal).toBeInstanceOf(AbortSignal);
|
|
});
|
|
});
|