Spaces:
Build error
Build error
| import { render, screen } from "@testing-library/react"; | |
| import userEvent from "@testing-library/user-event"; | |
| import { afterEach, describe, expect, it, vi } from "vitest"; | |
| import { SuggestionItem } from "#/components/features/suggestions/suggestion-item"; | |
| import { I18nKey } from "#/i18n/declaration"; | |
| vi.mock("react-i18next", () => ({ | |
| useTranslation: () => ({ | |
| t: (key: string) => { | |
| const translations: Record<string, string> = { | |
| SUGGESTIONS$TODO_APP: "ToDoリストアプリを開発する", | |
| LANDING$BUILD_APP_BUTTON: "プルリクエストを表示するアプリを開発する", | |
| SUGGESTIONS$HACKER_NEWS: | |
| "Hacker Newsのトップ記事を表示するbashスクリプトを作成する", | |
| }; | |
| return translations[key] || key; | |
| }, | |
| }), | |
| })); | |
| describe("SuggestionItem", () => { | |
| const suggestionItem = { label: "suggestion1", value: "a long text value" }; | |
| const onClick = vi.fn(); | |
| afterEach(() => { | |
| vi.clearAllMocks(); | |
| }); | |
| it("should render a suggestion", () => { | |
| render(<SuggestionItem suggestion={suggestionItem} onClick={onClick} />); | |
| expect(screen.getByTestId("suggestion")).toBeInTheDocument(); | |
| expect(screen.getByText(/suggestion1/i)).toBeInTheDocument(); | |
| }); | |
| it("should render a translated suggestion when using I18nKey", async () => { | |
| const translatedSuggestion = { | |
| label: I18nKey.SUGGESTIONS$TODO_APP, | |
| value: "todo app value", | |
| }; | |
| render( | |
| <SuggestionItem suggestion={translatedSuggestion} onClick={onClick} />, | |
| ); | |
| expect(screen.getByText("ToDoリストアプリを開発する")).toBeInTheDocument(); | |
| }); | |
| it("should call onClick when clicking a suggestion", async () => { | |
| const user = userEvent.setup(); | |
| render(<SuggestionItem suggestion={suggestionItem} onClick={onClick} />); | |
| const suggestion = screen.getByTestId("suggestion"); | |
| await user.click(suggestion); | |
| expect(onClick).toHaveBeenCalledWith("a long text value"); | |
| }); | |
| }); | |