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 { UserAvatar } from "#/components/features/sidebar/user-avatar"; | |
| describe("UserAvatar", () => { | |
| const onClickMock = vi.fn(); | |
| afterEach(() => { | |
| onClickMock.mockClear(); | |
| }); | |
| it("(default) should render the placeholder avatar when the user is logged out", () => { | |
| render(<UserAvatar onClick={onClickMock} />); | |
| expect(screen.getByTestId("user-avatar")).toBeInTheDocument(); | |
| expect( | |
| screen.getByLabelText("USER$AVATAR_PLACEHOLDER"), | |
| ).toBeInTheDocument(); | |
| }); | |
| it("should call onClick when clicked", async () => { | |
| const user = userEvent.setup(); | |
| render(<UserAvatar onClick={onClickMock} />); | |
| const userAvatarContainer = screen.getByTestId("user-avatar"); | |
| await user.click(userAvatarContainer); | |
| expect(onClickMock).toHaveBeenCalledOnce(); | |
| }); | |
| it("should display the user's avatar when available", () => { | |
| render( | |
| <UserAvatar | |
| onClick={onClickMock} | |
| avatarUrl="https://example.com/avatar.png" | |
| />, | |
| ); | |
| expect(screen.getByAltText("AVATAR$ALT_TEXT")).toBeInTheDocument(); | |
| expect( | |
| screen.queryByLabelText("USER$AVATAR_PLACEHOLDER"), | |
| ).not.toBeInTheDocument(); | |
| }); | |
| it("should display a loading spinner instead of an avatar when isLoading is true", () => { | |
| const { rerender } = render(<UserAvatar onClick={onClickMock} />); | |
| expect(screen.queryByTestId("loading-spinner")).not.toBeInTheDocument(); | |
| expect( | |
| screen.getByLabelText("USER$AVATAR_PLACEHOLDER"), | |
| ).toBeInTheDocument(); | |
| rerender(<UserAvatar onClick={onClickMock} isLoading />); | |
| expect(screen.getByTestId("loading-spinner")).toBeInTheDocument(); | |
| expect( | |
| screen.queryByLabelText("USER$AVATAR_PLACEHOLDER"), | |
| ).not.toBeInTheDocument(); | |
| rerender( | |
| <UserAvatar | |
| onClick={onClickMock} | |
| avatarUrl="https://example.com/avatar.png" | |
| isLoading | |
| />, | |
| ); | |
| expect(screen.getByTestId("loading-spinner")).toBeInTheDocument(); | |
| expect(screen.queryByAltText("AVATAR$ALT_TEXT")).not.toBeInTheDocument(); | |
| }); | |
| }); | |