import { render, screen, fireEvent } from "@testing-library/react"; import EditButton from "@/apps/new-ui/components/CustomeComponents/EditButton"; // Mock Tooltip jest.mock("@/components/ui/tooltip", () => ({ HoverTooltip: ({ label, children }: any) => (
{children}
), })); describe("EditButton Component", () => { const handleClick = jest.fn(); beforeEach(() => { jest.clearAllMocks(); }); it("renders icon type and triggers onclick", () => { render(); const button = screen.getByRole("button"); expect(button).toBeInTheDocument(); expect(screen.getByTestId("tooltip")).toHaveAttribute( "data-label", "ویرایش کردن" ); fireEvent.click(button); expect(handleClick).toHaveBeenCalledTimes(1); }); it("renders withBackground type and respects disabled state", () => { const { rerender } = render( ); const button = screen.getByRole("button"); expect(button).toBeDisabled(); rerender(); expect(screen.getByRole("button")).not.toBeDisabled(); }); it("renders accordion type and stops propagation", () => { const stopPropagation = jest.fn(); render(); const button = screen.getByRole("button"); // ساخت ایونت واقعی const event = new MouseEvent("click", { bubbles: true }); Object.defineProperty(event, "stopPropagation", { value: stopPropagation, }); fireEvent(button, event); expect(handleClick).toHaveBeenCalledTimes(1); expect(stopPropagation).toHaveBeenCalledTimes(1); }); });