@crossed/ui
Version:
A universal & performant styling library for React Native, Next.js & React
35 lines (34 loc) • 1.74 kB
JavaScript
var import_jsx_runtime = require("react/jsx-runtime");
var import_test = require("@crossed/test");
var import_SelectYear = require("../SelectYear");
jest.mock("../../Select", () => ({
Select: ({ value, onChange, items }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("select", { value, onChange: (e) => onChange(e.target.value), children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: item.value, children: item.label }, item.value)) })
}));
describe("SelectYear", () => {
const mockYears = [2020, 2021, 2022, 2023, 2024];
const mockOnChange = jest.fn();
test("renders correctly with given years and selected year", () => {
(0, import_test.render)(
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_SelectYear.SelectYear, { year: 2022, years: mockYears, onChange: mockOnChange })
);
expect(import_test.screen.getByDisplayValue("2022")).toBeInTheDocument();
});
test("calls onChange when a new year is selected", () => {
(0, import_test.render)(
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_SelectYear.SelectYear, { year: 2022, years: mockYears, onChange: mockOnChange })
);
import_test.fireEvent.change(import_test.screen.getByDisplayValue("2022"), {
target: { value: "2023" }
});
expect(mockOnChange).toHaveBeenCalledWith(2023);
});
test("renders all years in the dropdown", () => {
(0, import_test.render)(
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_SelectYear.SelectYear, { year: 2022, years: mockYears, onChange: mockOnChange })
);
mockYears.forEach((year) => {
expect(import_test.screen.getByText(`${year}`)).toBeInTheDocument();
});
});
});
//# sourceMappingURL=SelectYear.spec.js.map