import React from "react"; import { fireEvent, render, screen } from "@testing-library/react-native"; import { CloseButton, CloseButtonProps } from "../CloseButton"; jest.mock("@applicaster/zapp-react-native-ui-components/Components", () => { const { Image } = require("react-native"); return { QBImage: Image }; }); const mockGetButtonA11yProps = jest.fn(() => ({ accessible: true, accessibilityLabel: "Close", accessibilityHint: "Closes the sheet", accessibilityRole: "button", })); jest.mock( "@applicaster/zapp-react-native-utils/appUtils/accessibilityManager", () => ({ AccessibilityManager: { getInstance: () => ({ getButtonAccessibilityProps: mockGetButtonA11yProps, }), }, }) ); const baseProps: CloseButtonProps = { enabled: true, close: jest.fn(), asset: "close.png", assetFocused: "close_focused.png", height: 24, width: 24, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, }; describe("ModalComponent Header CloseButton", () => { beforeEach(() => { jest.clearAllMocks(); }); it("renders as an accessible button reachable by screen readers", () => { render(); const button = screen.getByTestId("closeButton"); expect(button.props.accessible).toBe(true); expect(button.props.accessibilityRole).toBe("button"); expect(button.props.accessibilityLabel).toBe("Close"); expect(mockGetButtonA11yProps).toHaveBeenCalledWith("close"); }); it("invokes close on press", () => { const close = jest.fn(); render(); fireEvent.press(screen.getByTestId("closeButton")); expect(close).toHaveBeenCalledTimes(1); }); it("renders nothing when disabled", () => { render(); expect(screen.queryByTestId("closeButton")).toBeNull(); }); });