import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { describe, expect, it, vi, beforeEach } from "vitest"; import { DeleteConfirmationModal } from "#/components/features/settings/delete-confirmation-modal"; const onClose = vi.fn(); const onDelete = vi.fn(); beforeEach(() => { onClose.mockReset(); onDelete.mockReset(); }); describe("DeleteConfirmationModal", () => { it("renders nothing when not open", () => { const { container } = render( , ); expect(container).toBeEmptyDOMElement(); }); it("renders title and message with item name", () => { render( , ); expect( screen.getByText("SETTINGS$DELETE_CONFIRMATION_TITLE"), ).toBeInTheDocument(); // The message contains the itemName via interpolation expect( screen.getByText(/SETTINGS\$DELETE_CONFIRMATION_MESSAGE/i), ).toBeInTheDocument(); }); it("calls onDelete when delete button is clicked", async () => { render( , ); await userEvent.click(screen.getByTestId("confirm-delete-button")); expect(onDelete).toHaveBeenCalledTimes(1); expect(onClose).not.toHaveBeenCalled(); }); it("calls onClose when cancel button is clicked", async () => { render( , ); await userEvent.click(screen.getByRole("button", { name: "BUTTON$CANCEL" })); expect(onClose).toHaveBeenCalledTimes(1); expect(onDelete).not.toHaveBeenCalled(); }); it("disables buttons when isDeleting is true", () => { render( , ); expect(screen.getByTestId("confirm-delete-button")).toBeDisabled(); expect(screen.getByRole("button", { name: "BUTTON$CANCEL" })).toBeDisabled(); }); });