import { render, screen, waitFor } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { beforeEach, describe, expect, it } from "vitest"; import { setToken } from "../../auth/token.ts"; import { NewProjectDialog } from "../../projects/NewProjectDialog.tsx"; import { json, mockFetch } from "../../test/fetchMock.ts"; import { wikiModule } from "./index.tsx"; describe("модуль wiki", () => { beforeEach(() => setToken("tok")); it("описывает пункт панели и поле корня", () => { expect(wikiModule.nav.map((n) => [n.to, n.label])).toEqual([["/wiki", "Вики"]]); expect(wikiModule.projectFields).toEqual([ { name: "wiki_root", label: "Корень вики", hint: "DOC-… или ссылка на страницу Eva", kind: "text" }, ]); }); it("поле корня в окне нового проекта", async () => { const posts: unknown[] = []; mockFetch((method, _u, body) => { if (method === "POST") { posts.push(body); return json(201, { project: { label: "P", name: "Пэ", created_at: "" }, batch_id: 3 }); } return json(404, {}); }); render( {}} onCreated={() => {}} />); await userEvent.type(screen.getByLabelText("Метка"), "P"); await userEvent.type(screen.getByLabelText("Название"), "Пэ"); await userEvent.type(screen.getByLabelText("Корень вики"), "DOC-001234"); await userEvent.click(screen.getByRole("button", { name: "Создать" })); await waitFor(() => expect(posts).toHaveLength(1)); expect(posts[0]).toMatchObject({ label: "P", wiki_root: "DOC-001234" }); }); });