| 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" | |
| }); | |
| }); | |
| }); | |