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 { UploadImageInput } from "#/components/features/images/upload-image-input"; | |
| describe("UploadImageInput", () => { | |
| const user = userEvent.setup(); | |
| const onUploadMock = vi.fn(); | |
| afterEach(() => { | |
| vi.clearAllMocks(); | |
| }); | |
| it("should render an input", () => { | |
| render(<UploadImageInput onUpload={onUploadMock} />); | |
| expect(screen.getByTestId("upload-image-input")).toBeInTheDocument(); | |
| }); | |
| it("should call onUpload when a file is selected", async () => { | |
| render(<UploadImageInput onUpload={onUploadMock} />); | |
| const file = new File(["(ββ‘_β‘)"], "chucknorris.png", { type: "image/png" }); | |
| const input = screen.getByTestId("upload-image-input"); | |
| await user.upload(input, file); | |
| expect(onUploadMock).toHaveBeenNthCalledWith(1, [file]); | |
| }); | |
| it("should call onUpload when multiple files are selected", async () => { | |
| render(<UploadImageInput onUpload={onUploadMock} />); | |
| const files = [ | |
| new File(["(ββ‘_β‘)"], "chucknorris.png", { type: "image/png" }), | |
| new File(["(ββ‘_β‘)"], "chucknorris2.png", { type: "image/png" }), | |
| ]; | |
| const input = screen.getByTestId("upload-image-input"); | |
| await user.upload(input, files); | |
| expect(onUploadMock).toHaveBeenNthCalledWith(1, files); | |
| }); | |
| it("should not upload any file that is not an image", async () => { | |
| render(<UploadImageInput onUpload={onUploadMock} />); | |
| const file = new File(["(ββ‘_β‘)"], "chucknorris.txt", { | |
| type: "text/plain", | |
| }); | |
| const input = screen.getByTestId("upload-image-input"); | |
| await user.upload(input, file); | |
| expect(onUploadMock).not.toHaveBeenCalled(); | |
| }); | |
| it("should render custom labels", () => { | |
| const { rerender } = render(<UploadImageInput onUpload={onUploadMock} />); | |
| expect(screen.getByTestId("default-label")).toBeInTheDocument(); | |
| function CustomLabel() { | |
| return <span>Custom label</span>; | |
| } | |
| rerender( | |
| <UploadImageInput onUpload={onUploadMock} label={<CustomLabel />} />, | |
| ); | |
| expect(screen.getByText("Custom label")).toBeInTheDocument(); | |
| expect(screen.queryByTestId("default-label")).not.toBeInTheDocument(); | |
| }); | |
| }); | |