WitNote / dashboard /src /components /molecules /CreateProfileModal.test.tsx
AUXteam's picture
Upload folder using huggingface_hub
6a7089a verified
import { render, screen, waitFor } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { beforeEach, describe, expect, it, vi } from "vitest";
import CreateProfileModal from "./CreateProfileModal";
vi.mock("../../services/api", () => ({
createProfile: vi.fn(),
}));
describe("CreateProfileModal", () => {
beforeEach(() => {
vi.clearAllMocks();
});
it("submits the local form and returns the created profile key", async () => {
const { createProfile } = await import("../../services/api");
const onClose = vi.fn();
const onCreated = vi.fn();
vi.mocked(createProfile).mockResolvedValue({
status: "ok",
id: "prof_work",
name: "work",
});
render(
<CreateProfileModal
open={true}
onClose={onClose}
onCreated={onCreated}
/>,
);
await userEvent.type(
screen.getByPlaceholderText("e.g. personal, work, scraping"),
"work",
);
await userEvent.type(
screen.getByPlaceholderText(
"e.g. I need to access Gmail for the team account",
),
"Team account access",
);
await userEvent.click(screen.getByRole("button", { name: "Create" }));
await waitFor(() => {
expect(createProfile).toHaveBeenCalledWith({
name: "work",
useWhen: "Team account access",
});
});
expect(onClose).toHaveBeenCalledTimes(1);
expect(onCreated).toHaveBeenCalledWith("prof_work");
});
it("resets its local fields when closed and reopened", async () => {
const { rerender } = render(
<CreateProfileModal
open={true}
onClose={() => {}}
onCreated={() => {}}
/>,
);
const nameInput = screen.getByPlaceholderText(
"e.g. personal, work, scraping",
);
await userEvent.type(nameInput, "scratch");
rerender(
<CreateProfileModal
open={false}
onClose={() => {}}
onCreated={() => {}}
/>,
);
rerender(
<CreateProfileModal
open={true}
onClose={() => {}}
onCreated={() => {}}
/>,
);
expect(
screen.getByPlaceholderText("e.g. personal, work, scraping"),
).toHaveValue("");
});
});