import { api } from "@/utils/apiUtils"; import { fetchWebSocketTicket } from "@/websocket/api/fetchWebSocketTicket"; jest.mock("@/utils/apiUtils"); describe("fetchWebSocketTicket", () => { const mockTicket = { clientAddress: "127.0.0.1", value: "test-ticket-123", generatedOn: "2025-01-12T10:00:00Z", validUntil: "2025-01-12T11:00:00Z", username: "testuser", }; beforeEach(() => { jest.clearAllMocks(); }); it("should fetch ticket successfully", async () => { (api.post as jest.Mock).mockResolvedValue({ ok: true, json: async () => mockTicket, }); const ticket = await fetchWebSocketTicket(); expect(api.post).toHaveBeenCalledWith("ws/ticket"); expect(ticket).toEqual(mockTicket); }); it("should throw error when response is not ok", async () => { (api.post as jest.Mock).mockResolvedValue({ ok: false, }); await expect(fetchWebSocketTicket()).rejects.toThrow( "Failed to fetch WebSocket ticket" ); }); it("should throw error when network fails", async () => { (api.post as jest.Mock).mockRejectedValue(new Error("Network error")); await expect(fetchWebSocketTicket()).rejects.toThrow("Network error"); }); });