import "@testing-library/jest-dom"; import { fireEvent, render, screen } from "@testing-library/react"; import MenuItem from "./MenuItem"; describe("MenuItem", () => { test("renders an external link correctly", () => { render( , ); const linkElement = screen.getByText("External Link"); expect(linkElement).toBeInTheDocument(); expect(linkElement).toHaveAttribute("href", "http://example.com"); expect(linkElement).toHaveAttribute("target", "_blank"); expect(linkElement).toHaveAttribute("rel", "noopener noreferrer"); }); test("renders an internal link correctly", () => { const MockLink = ({ children, ...props }: React.AnchorHTMLAttributes & { children?: React.ReactNode; }) => {children}; render( , ); const linkElement = screen.getByText("Internal Link"); expect(linkElement).toBeInTheDocument(); expect(linkElement).toHaveAttribute("href", "/internal"); }); test("renders a button with onClick handler correctly", () => { const handleClick = vi.fn(); render( , ); const buttonElement = screen.getByText("Button"); expect(buttonElement).toBeInTheDocument(); fireEvent.click(buttonElement); expect(handleClick).toHaveBeenCalledTimes(1); }); test("toggles menu on mobile when link is clicked", () => { const toggleMenu = vi.fn(); render( , ); const linkElement = screen.getByText("Mobile Link"); fireEvent.click(linkElement); expect(toggleMenu).toHaveBeenCalledTimes(1); }); });