@crossed/ui
Version:
A universal & performant styling library for React Native, Next.js & React
49 lines (48 loc) • 1.66 kB
JavaScript
import { jsx } from "react/jsx-runtime";
import { render, fireEvent, screen } from "@crossed/test";
import { DayButton } from "../DayButton";
describe("DayButton", () => {
const mockDay = {
date: new Date(2025, 1, 15),
isToday: false,
isSelected: false,
isAdjacentMonth: false
};
const mockOnPress = jest.fn();
test("renders correctly with given day", () => {
render(/* @__PURE__ */ jsx(DayButton, { day: mockDay, onPress: mockOnPress }));
expect(screen.getByText("15")).toBeInTheDocument();
});
test("calls onPress when clicked", () => {
render(/* @__PURE__ */ jsx(DayButton, { day: mockDay, onPress: mockOnPress }));
fireEvent.click(screen.getByRole("button"));
expect(mockOnPress).toHaveBeenCalled();
});
test("disables button if day is adjacent month", () => {
render(
/* @__PURE__ */ jsx(
DayButton,
{
day: { ...mockDay, isAdjacentMonth: true },
onPress: mockOnPress
}
)
);
expect(screen.getByRole("button")).toBeDisabled();
});
test("applies correct styles when day is today", () => {
render(
/* @__PURE__ */ jsx(DayButton, { day: { ...mockDay, isToday: true }, onPress: mockOnPress })
);
expect(screen.getByText("15")).toHaveStyle("borderWidth: 2");
});
test("applies correct styles when day is selected", () => {
render(
/* @__PURE__ */ jsx(DayButton, { day: { ...mockDay, isSelected: true }, onPress: mockOnPress })
);
expect(screen.getByText("15")).toHaveClass(
"color-[var(--components--action-primary-default-text)]"
);
});
});
//# sourceMappingURL=DayButton.spec.js.map