my_gradio / client /js /src /test /spaces.test.ts
xray918's picture
Upload folder using huggingface_hub
0ad74ed verified
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"
});
});
});