Spaces:
Build error
Build error
| import { afterEach, describe, expect, it, vi } from "vitest"; | |
| // Mock useParams before importing components | |
| vi.mock("react-router", async () => { | |
| const actual = await vi.importActual("react-router"); | |
| return { | |
| ...(actual as object), | |
| useParams: () => ({ conversationId: "test-conversation-id" }), | |
| }; | |
| }); | |
| import { screen } from "@testing-library/react"; | |
| import userEvent from "@testing-library/user-event"; | |
| import { renderWithProviders } from "test-utils"; | |
| import { FeedbackForm } from "#/components/features/feedback/feedback-form"; | |
| import { I18nKey } from "#/i18n/declaration"; | |
| describe("FeedbackForm", () => { | |
| const user = userEvent.setup(); | |
| const onCloseMock = vi.fn(); | |
| afterEach(() => { | |
| vi.clearAllMocks(); | |
| }); | |
| it("should render correctly", () => { | |
| renderWithProviders( | |
| <FeedbackForm polarity="positive" onClose={onCloseMock} />, | |
| ); | |
| screen.getByLabelText(I18nKey.FEEDBACK$EMAIL_LABEL); | |
| screen.getByLabelText(I18nKey.FEEDBACK$PRIVATE_LABEL); | |
| screen.getByLabelText(I18nKey.FEEDBACK$PUBLIC_LABEL); | |
| screen.getByRole("button", { name: I18nKey.FEEDBACK$SHARE_LABEL }); | |
| screen.getByRole("button", { name: I18nKey.FEEDBACK$CANCEL_LABEL }); | |
| }); | |
| it("should switch between private and public permissions", async () => { | |
| renderWithProviders( | |
| <FeedbackForm polarity="positive" onClose={onCloseMock} />, | |
| ); | |
| const privateRadio = screen.getByLabelText(I18nKey.FEEDBACK$PRIVATE_LABEL); | |
| const publicRadio = screen.getByLabelText(I18nKey.FEEDBACK$PUBLIC_LABEL); | |
| expect(privateRadio).toBeChecked(); // private is the default value | |
| expect(publicRadio).not.toBeChecked(); | |
| await user.click(publicRadio); | |
| expect(publicRadio).toBeChecked(); | |
| expect(privateRadio).not.toBeChecked(); | |
| await user.click(privateRadio); | |
| expect(privateRadio).toBeChecked(); | |
| expect(publicRadio).not.toBeChecked(); | |
| }); | |
| it("should call onClose when the close button is clicked", async () => { | |
| renderWithProviders( | |
| <FeedbackForm polarity="positive" onClose={onCloseMock} />, | |
| ); | |
| await user.click( | |
| screen.getByRole("button", { name: I18nKey.FEEDBACK$CANCEL_LABEL }), | |
| ); | |
| expect(onCloseMock).toHaveBeenCalled(); | |
| }); | |
| }); | |