import { SPACE_STATUS_ERROR_MSG } from "../constants"; import { discussions_enabled, get_space_hardware, set_space_timeout, check_space_status } from "../helpers/spaces"; import { beforeAll, afterEach, afterAll, it, expect, describe } from "vitest"; import { initialise_server } from "./server"; import { hardware_sleeptime_response } from "./test_data"; import { vi } from "vitest"; const server = initialise_server(); beforeAll(() => server.listen()); afterEach(() => server.resetHandlers()); afterAll(() => server.close()); describe("set_space_timeout", () => { it("should set the sleep timeout for a space", async () => { const space_id = "hmb/hello_world"; const timeout = 60; const hf_token = "hf_123"; const response = await set_space_timeout(space_id, timeout, hf_token); expect(response).toEqual(hardware_sleeptime_response); }); it("should throw an error if the fetch call fails", async () => { const space_id = "hmb/server_test"; const timeout = 60; const hf_token = "hf_123"; await expect( set_space_timeout(space_id, timeout, hf_token) ).rejects.toThrow( "Could not set sleep timeout on duplicated Space. Please visit *ADD HF LINK TO SETTINGS* to set a timeout manually to reduce billing charges." ); }); }); describe("get_space_hardware", () => { it("should return the current hardware for a space", async () => { const space_id = "hmb/hello_world"; const hf_token = "hf_123"; const hardware = await get_space_hardware(space_id, hf_token); expect(hardware).toEqual(hardware_sleeptime_response.hardware.current); }); it("should throw an error if the fetch call fails", async () => { const space_id = "hmb/bye_world"; await expect(get_space_hardware(space_id)).rejects.toThrow( "Space hardware could not be obtained." ); }); }); describe("discussions_enabled", () => { it("should return true if discussions are enabled for the space", async () => { const space_id = "hmb/hello_world"; const result = await discussions_enabled(space_id); expect(result).toBe(true); }); it("should return false if discussions are disabled for the space", async () => { const space_id = "hmb/bye_world"; const result = await discussions_enabled(space_id); expect(result).toBe(false); }); }); describe("check_space_status", () => { const status_callback = vi.fn(); it("should handle a successful response with RUNNING stage", async () => { const id = "hmb/hello_world"; const type = "space_name"; await check_space_status(id, type, status_callback); expect(status_callback).toHaveBeenCalledWith({ status: "running", load_status: "complete", message: "Space is running.", detail: "RUNNING" }); }); it("should handle a successful response with PAUSED stage", async () => { const id = "hmb/paused_space"; const type = "space_name"; await check_space_status(id, type, status_callback); expect(status_callback).toHaveBeenCalledWith({ status: "paused", load_status: "error", message: "This space has been paused by the author. If you would like to try this demo, consider duplicating the space.", detail: "PAUSED", discussions_enabled: true }); }); it("should handle a successful response with BUILDING stage", async () => { const id = "hmb/building_space"; const type = "space_name"; await check_space_status(id, type, status_callback); expect(status_callback).toHaveBeenCalledWith({ status: "building", load_status: "pending", message: "Space is building...", detail: "BUILDING" }); }); it("should handle a successful response with STOPPED stage", async () => { const id = "hmb/stopped_space"; const type = "space_name"; await check_space_status(id, type, status_callback); expect(status_callback).toHaveBeenCalledWith({ status: "sleeping", load_status: "pending", message: "Space is asleep. Waking it up...", detail: "STOPPED" }); }); it("should handle a failed response", async () => { const id = "hmb/failed_space"; const type = "space_name"; await check_space_status(id, type, status_callback); expect(status_callback).toHaveBeenCalledWith({ status: "error", load_status: "error", message: SPACE_STATUS_ERROR_MSG, detail: "NOT_FOUND" }); }); });