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