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);
});
});