import DeleteButton from "@/apps/new-ui/components/CustomeComponents/DeleteButton"; import { render, screen, fireEvent } from "@testing-library/react"; // Mock Tooltip component to simplify test rendering jest.mock("@/components/ui/tooltip", () => ({ HoverTooltip: ({ label, children }: any) => (
{children}
), })); describe("DeleteButton Component", () => { const handleClick = jest.fn(); beforeEach(() => { jest.clearAllMocks(); }); it("renders icon type correctly and triggers onclick", () => { render(); const button = screen.getByRole("button"); expect(button).toBeInTheDocument(); expect(screen.getByTestId("tooltip")).toBeInTheDocument(); expect(screen.getByTestId("tooltip")).toHaveAttribute("data-label", "حذف"); fireEvent.click(button); expect(handleClick).toHaveBeenCalledTimes(1); }); it("renders withBackground type and becomes disabled when loading", () => { const { rerender } = render( ); let button = screen.getByRole("button"); expect(button).toBeDisabled(); rerender( ); button = screen.getByRole("button"); expect(button).toBeDisabled(); }); it("renders accordion type and stops propagation", () => { const stopPropagation = jest.fn(); render(); const button = screen.getByRole("button"); // ساخت ایونت واقعی با mock stopPropagation const event = new MouseEvent("click", { bubbles: true }); Object.defineProperty(event, "stopPropagation", { value: stopPropagation, }); fireEvent(button, event); expect(handleClick).toHaveBeenCalledTimes(1); expect(stopPropagation).toHaveBeenCalledTimes(1); }); });