import React from "react"; import { fireEvent, render } from "@testing-library/react-native"; import { Card } from "./Card"; import { Text } from "../Text"; const cardHeaderTestID = "cardHeader"; const cardFooterTestID = "cardFooter"; it("renders with only a header title", () => { const title = "Foobar"; const { getByTestId, getByText, queryAllByRole } = render( , ); expect(getByText(title)).toBeDefined(); expect(getByTestId(cardHeaderTestID)).toBeDefined(); expect(queryAllByRole("button")).toEqual([]); }); it("renders with an icon action", () => { const iconName = "plus2"; const { getByTestId } = render( , ); expect(getByTestId(iconName)).toBeDefined(); }); it("renders with a button action", () => { const label = "Edit"; const { getByText } = render( , ); expect(getByText(label)).toBeDefined(); }); it("renders without a header and footer", () => { const content = "I am the content"; const { getByText, queryByTestId } = render( {content} , ); expect(getByText(content)).toBeDefined(); expect(queryByTestId(cardHeaderTestID)).toBeNull(); expect(queryByTestId(cardFooterTestID)).toBeNull(); }); it("should call the onPress when pressing the header", () => { const pressHandler = jest.fn(); const { getByText } = render( , ); fireEvent.press(getByText("Header")); expect(pressHandler).toHaveBeenCalled(); }); it("should call the onPress when pressing the action button", () => { const pressHandler = jest.fn(); const { getByText } = render( , ); fireEvent.press(getByText("Edit")); expect(pressHandler).toHaveBeenCalled(); }); it("renders with a footer", () => { const title = "View All"; const { getByText, getByTestId, queryByTestId } = render( , ); expect(getByText(title)).toBeDefined(); expect(getByTestId(cardFooterTestID)).toBeDefined(); expect(queryByTestId(cardHeaderTestID)).toBeNull(); }); it("should call the onPress when pressing the footer", () => { const headerPressHandler = jest.fn(); const footerPressHandler = jest.fn(); const { getByText } = render( , ); fireEvent.press(getByText("View All")); expect(footerPressHandler).toHaveBeenCalled(); });