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