monday-ui-react-core
Version:
Official monday.com UI resources for application development in React.js
179 lines (164 loc) • 5.81 kB
JavaScript
import React from "react";
import { act } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { snapshotDiff } from "../../../utils/jest-utils";
import { renderSliderInRangeMode } from "./sliderTestUtils";
jest.useFakeTimers();
jest.mock("../../TextField/TextField", () => {
return props => {
return <div data-testid="mock-text-field-comp">{JSON.stringify(props)}</div>;
};
});
it("a. Ranges Slider: basic renderer", async () => {
const { asFragment } = await renderSliderInRangeMode();
expect(asFragment().firstChild).toMatchSnapshot();
});
describe("b. Ranges Slider Active/Inactive", () => {
it("01. show Tooltip when hover Start Thumb", async () => {
let before;
let after;
await act(async () => {
const { asFragment, elThumbStart } = await renderSliderInRangeMode();
before = asFragment().firstChild;
userEvent.hover(elThumbStart);
jest.advanceTimersByTime(999);
after = asFragment().firstChild;
});
expect(snapshotDiff(before, after)).toMatchSnapshot();
});
it("02. show Tooltip when hover End Thumb", async () => {
let before;
let after;
await act(async () => {
const { asFragment, elThumbEnd } = await renderSliderInRangeMode();
before = asFragment().firstChild;
userEvent.hover(elThumbEnd);
jest.advanceTimersByTime(999);
after = asFragment().firstChild;
});
expect(snapshotDiff(before, after)).toMatchSnapshot();
});
it("03. hide Tooltip when unhover Thumb", async () => {
let before;
let after;
await act(async () => {
const { asFragment, elThumbStart } = await renderSliderInRangeMode();
userEvent.hover(elThumbStart);
jest.advanceTimersByTime(999);
before = asFragment().firstChild;
userEvent.unhover(elThumbStart);
jest.advanceTimersByTime(999);
after = asFragment().firstChild;
});
expect(snapshotDiff(before, after)).toMatchSnapshot();
});
it("04. activate Start Thumb by Tab key press ", async () => {
let before;
let after;
await act(async () => {
const { asFragment } = await renderSliderInRangeMode();
before = asFragment().firstChild;
userEvent.tab();
jest.advanceTimersByTime(999);
after = asFragment().firstChild;
});
expect(snapshotDiff(before, after)).toMatchSnapshot();
});
it("05. activate End Thumb by Tab key press ", async () => {
let before;
let after;
await act(async () => {
const { asFragment } = await renderSliderInRangeMode();
userEvent.tab();
jest.advanceTimersByTime(999);
before = asFragment().firstChild;
userEvent.tab();
jest.advanceTimersByTime(999);
after = asFragment().firstChild;
});
expect(snapshotDiff(before, after)).toMatchSnapshot();
});
it("06. de-activate Thumb by Tab key press, when End Thumb focused ", async () => {
let before;
let after;
await act(async () => {
const { asFragment, elThumbEnd } = await renderSliderInRangeMode();
elThumbEnd.focus();
before = asFragment().firstChild;
userEvent.tab();
jest.advanceTimersByTime(999);
after = asFragment().firstChild;
});
expect(snapshotDiff(before, after)).toMatchSnapshot();
});
});
describe("c. Ranges Slider Key Events", () => {
it("01. decrease value by Left/Down keys press", async () => {
let before;
let after;
await act(async () => {
const { asFragment, elThumbStart } = await renderSliderInRangeMode({ showValue: true });
elThumbStart.focus();
before = asFragment().firstChild;
userEvent.keyboard("{arrowleft}");
userEvent.keyboard("{arrowdown}");
after = asFragment().firstChild;
});
expect(snapshotDiff(before, after)).toMatchSnapshot();
});
it("02. increase value by Right/Up keys press", async () => {
let before;
let after;
await act(async () => {
const { asFragment, elThumbEnd } = await renderSliderInRangeMode({ showValue: true });
elThumbEnd.focus();
before = asFragment().firstChild;
userEvent.keyboard("{arrowright}");
userEvent.keyboard("{arrowup}");
after = asFragment().firstChild;
});
expect(snapshotDiff(before, after)).toMatchSnapshot();
});
it("03. decrease value (step 10%) by PageDown key press", async () => {
let before;
let after;
await act(async () => {
const { asFragment, elThumbEnd } = await renderSliderInRangeMode({ showValue: true });
elThumbEnd.focus();
before = asFragment().firstChild;
userEvent.keyboard("{pagedown}");
after = asFragment().firstChild;
});
expect(snapshotDiff(before, after)).toMatchSnapshot();
});
it("04. increase value (step 10%) by PageUp key pres", async () => {
let before;
let after;
await act(async () => {
const { asFragment, elThumbStart } = await renderSliderInRangeMode({ showValue: true });
elThumbStart.focus();
before = asFragment().firstChild;
userEvent.keyboard("{pageup}");
userEvent.keyboard("{pageup}");
after = asFragment().firstChild;
});
expect(snapshotDiff(before, after)).toMatchSnapshot();
});
it("05. change value by keys press in Step and Label mode", async () => {
let before;
let after;
await act(async () => {
const { asFragment, elThumbStart } = await renderSliderInRangeMode({
indicateSelection: true,
showValue: true,
step: 10
});
elThumbStart.focus();
before = asFragment().firstChild;
await userEvent.keyboard("{arrowright}");
await userEvent.keyboard("{arrowright}");
after = asFragment().firstChild;
});
expect(snapshotDiff(before, after)).toMatchSnapshot();
});
});