mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-15 02:11:05 +00:00
105 lines
3.6 KiB
TypeScript
105 lines
3.6 KiB
TypeScript
import { render, screen } from "@testing-library/svelte";
|
|
import { user } from "../setup-tests";
|
|
import DatePicker from "./DatePicker.test.svelte";
|
|
import DatePickerRange from "./DatePickerRange.test.svelte";
|
|
|
|
describe("DatePicker", () => {
|
|
it("renders with default props", async () => {
|
|
render(DatePicker);
|
|
|
|
const input = screen.getByLabelText("Date");
|
|
|
|
expect(input).toBeInTheDocument();
|
|
expect(input).toHaveAttribute("placeholder", "mm/dd/yyyy");
|
|
|
|
await user.type(input, "01/01/2023");
|
|
expect(input).toHaveValue("01/01/2023");
|
|
});
|
|
|
|
it("renders light variant", () => {
|
|
const { container } = render(DatePicker, { light: true });
|
|
|
|
const wrapper = container.querySelector(".bx--date-picker");
|
|
expect(wrapper).toHaveClass("bx--date-picker--light");
|
|
});
|
|
|
|
it("renders short variant", () => {
|
|
const { container } = render(DatePicker, { short: true });
|
|
|
|
const wrapper = container.querySelector(".bx--date-picker");
|
|
expect(wrapper).toHaveClass("bx--date-picker--short");
|
|
});
|
|
|
|
it("renders single mode", async () => {
|
|
const { container } = render(DatePicker, { datePickerType: "single" });
|
|
|
|
const input = screen.getByLabelText("Date");
|
|
expect(input).toHaveAttribute("placeholder", "mm/dd/yyyy");
|
|
|
|
const wrapper = container.querySelector(".bx--date-picker");
|
|
expect(wrapper).toHaveClass("bx--date-picker--single");
|
|
|
|
expect(
|
|
screen.queryByLabelText("calendar-container"),
|
|
).not.toBeInTheDocument();
|
|
await user.click(input);
|
|
expect(screen.getByLabelText("calendar-container")).toBeInTheDocument();
|
|
});
|
|
|
|
it("renders range mode", async () => {
|
|
const { container } = render(DatePickerRange);
|
|
|
|
const inputStart = screen.getByLabelText("Start date");
|
|
const inputEnd = screen.getByLabelText("End date");
|
|
|
|
expect(inputStart).toHaveAttribute("placeholder", "mm/dd/yyyy");
|
|
expect(inputEnd).toHaveAttribute("placeholder", "mm/dd/yyyy");
|
|
|
|
const wrapper = container.querySelector(".bx--date-picker");
|
|
expect(wrapper).toHaveClass("bx--date-picker--range");
|
|
|
|
expect(
|
|
screen.queryByLabelText("calendar-container"),
|
|
).not.toBeInTheDocument();
|
|
await user.click(inputStart);
|
|
expect(screen.getByLabelText("calendar-container")).toBeInTheDocument();
|
|
});
|
|
|
|
it("handles disabled state", () => {
|
|
render(DatePicker, { disabled: true });
|
|
const input = screen.getByPlaceholderText("mm/dd/yyyy");
|
|
expect(input).toBeDisabled();
|
|
});
|
|
|
|
it("handles invalid state", () => {
|
|
const { container } = render(DatePicker, {
|
|
invalid: true,
|
|
invalidText: "Invalid date",
|
|
});
|
|
expect(screen.getByText("Invalid date")).toBeInTheDocument();
|
|
const wrapper = container.querySelector(".bx--date-picker-input__wrapper");
|
|
expect(wrapper).toHaveClass("bx--date-picker-input__wrapper--invalid");
|
|
});
|
|
|
|
it("handles warning state", () => {
|
|
const { container } = render(DatePicker, {
|
|
warn: true,
|
|
warnText: "Warning message",
|
|
});
|
|
expect(screen.getByText("Warning message")).toBeInTheDocument();
|
|
const wrapper = container.querySelector(".bx--date-picker-input__wrapper");
|
|
expect(wrapper).toHaveClass("bx--date-picker-input__wrapper--warn");
|
|
});
|
|
|
|
it("handles helper text", () => {
|
|
render(DatePicker, { helperText: "Helper message" });
|
|
expect(screen.getByText("Helper message")).toBeInTheDocument();
|
|
});
|
|
|
|
it("handles hidden label", () => {
|
|
render(DatePicker, { hideLabel: true });
|
|
const input = screen.getByLabelText("Date");
|
|
expect(input).toHaveAttribute("placeholder", "mm/dd/yyyy");
|
|
expect(screen.getByText("Date")).toHaveClass("bx--visually-hidden");
|
|
});
|
|
});
|