fix: unify project create form and timezone data
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { fireEvent, render, screen } from "@testing-library/react";
|
||||
import { fireEvent, render, screen, waitFor } from "@testing-library/react";
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import { MemoryRouter } from "react-router-dom";
|
||||
import { api } from "../api";
|
||||
|
||||
vi.mock("../components/AppShell", () => ({ AppShell: ({ children }: { children: React.ReactNode }) => <div>{children}</div> }));
|
||||
vi.mock("../hooks/usePollingResource", () => ({
|
||||
@@ -117,16 +118,44 @@ describe("AdminPage active tickets", () => {
|
||||
expect(screen.getByRole("button", { name: "保存项目" })).toBeVisible();
|
||||
});
|
||||
|
||||
it("创建项目使用独立表单", () => {
|
||||
it("创建项目与维护项目使用相同字段", () => {
|
||||
render(<MemoryRouter initialEntries={["/admin/projects/new"]}><AdminPage /></MemoryRouter>);
|
||||
expect(screen.getByRole("form", { name: "创建项目" })).toBeVisible();
|
||||
expect(screen.getByRole("textbox", { name: "项目名称" })).toBeVisible();
|
||||
expect(screen.getByRole("textbox", { name: "项目编码" })).toBeVisible();
|
||||
expect(screen.getByRole("combobox", { name: "票号格式" })).toHaveDisplayValue("00000");
|
||||
expect(screen.getByRole("combobox", { name: "项目状态" })).toHaveDisplayValue("未开放");
|
||||
expect(screen.getByRole("spinbutton", { name: "每次叫号数量" })).toHaveValue(1);
|
||||
expect(screen.getByRole("spinbutton", { name: "单个号码预计间隔时间(秒)" })).toHaveValue(60);
|
||||
expect(screen.getByRole("textbox", { name: "游客官方提示" })).toHaveValue("请您在景区附近等候,注意听从工作人员指引。");
|
||||
expect(screen.queryByRole("textbox", { name: "时区" })).not.toBeInTheDocument();
|
||||
expect(screen.getByRole("button", { name: "创建项目" })).toBeVisible();
|
||||
});
|
||||
|
||||
it("创建项目提交完整的默认配置", async () => {
|
||||
const createdProject = { id: "project-2", code: "NEW-RIDE", name: "新项目", status: "NOT_OPEN", batch_size: 1, timezone: "Asia/Shanghai", ticket_prefix: "A" };
|
||||
const createProject = vi.spyOn(api, "createProject").mockResolvedValue({ project: createdProject });
|
||||
const updateProjectSettings = vi.spyOn(api, "updateProjectSettings").mockResolvedValue({ project: createdProject });
|
||||
try {
|
||||
render(<MemoryRouter initialEntries={["/admin/projects/new"]}><AdminPage /></MemoryRouter>);
|
||||
fireEvent.change(screen.getByRole("textbox", { name: "项目名称" }), { target: { value: "新项目" } });
|
||||
fireEvent.change(screen.getByRole("textbox", { name: "项目编码" }), { target: { value: "new-ride" } });
|
||||
fireEvent.submit(screen.getByRole("form", { name: "创建项目" }));
|
||||
|
||||
await waitFor(() => expect(createProject).toHaveBeenCalledTimes(1));
|
||||
expect(createProject).toHaveBeenCalledWith({ name: "新项目", code: "NEW-RIDE", timezone: "Asia/Shanghai", ticket_prefix: "A" });
|
||||
expect(updateProjectSettings).toHaveBeenCalledWith("project-2", {
|
||||
status: "NOT_OPEN",
|
||||
call_batch_size: 1,
|
||||
grace_period_minutes: 5,
|
||||
eta_interval_seconds: 60,
|
||||
visitor_notice: "请您在景区附近等候,注意听从工作人员指引。",
|
||||
});
|
||||
} finally {
|
||||
vi.restoreAllMocks();
|
||||
}
|
||||
});
|
||||
|
||||
it("keeps the screen center free of contact details", () => {
|
||||
render(<MemoryRouter initialEntries={["/admin/display"]}><AdminPage /></MemoryRouter>);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user