@bigbinary/neetoui 3.2.73 → 3.2.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.circleci/config.yml +8 -2
- package/formik.js +1 -1
- package/index.js +1 -1
- package/layouts.js +1 -1
- package/package.json +1 -1
- package/tests/DatePicker.test.js +111 -0
- package/tests/Dropdown.test.js +1 -1
- package/tests/EmailInput.test.js +166 -0
- package/tests/Label.test.js +61 -0
- package/tests/Pagination.test.js +125 -0
- package/tests/Radio.test.js +83 -0
- package/tests/Switch.test.js +61 -0
- package/tests/Tab.test.js +60 -0
- package/tests/TimePicker.test.js +92 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import dayjs from "dayjs";
|
|
3
|
+
import { TimePicker } from "../lib/components";
|
|
4
|
+
import { screen, render, fireEvent } from "@testing-library/react";
|
|
5
|
+
import userEvent from "@testing-library/user-event";
|
|
6
|
+
|
|
7
|
+
const currentTime = dayjs();
|
|
8
|
+
const { getByRole, getByText, getAllByText, getAllByRole } = screen;
|
|
9
|
+
|
|
10
|
+
describe("TimePicker", () => {
|
|
11
|
+
it("should render without error", () => {
|
|
12
|
+
render(<TimePicker defaultValue={currentTime} />);
|
|
13
|
+
expect(getByRole("textbox")).toHaveValue(currentTime.format("HH:mm"));
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it("should show seconds section if format contains ss", () => {
|
|
17
|
+
render(<TimePicker defaultValue={currentTime} format="HH:mm:ss" open />);
|
|
18
|
+
expect(getAllByText("00").length).toBe(3);
|
|
19
|
+
expect(getByRole("textbox")).toHaveValue(currentTime.format("HH:mm:ss"));
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it("should show meridiem if format contains A", () => {
|
|
23
|
+
render(<TimePicker defaultValue={currentTime} format="HH:mm A" open />);
|
|
24
|
+
expect(getByRole("textbox")).toHaveValue(currentTime.format("HH:mm A"));
|
|
25
|
+
expect(getByText("AM")).toBeInTheDocument();
|
|
26
|
+
expect(getByText("PM")).toBeInTheDocument();
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it("should show label if available", () => {
|
|
30
|
+
render(<TimePicker label="TimePicker Label" />);
|
|
31
|
+
expect(getByText("TimePicker Label")).toBeInTheDocument();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it("should show error if available", () => {
|
|
35
|
+
render(<TimePicker error="TimePicker Error" />);
|
|
36
|
+
expect(getByText("TimePicker Error")).toBeInTheDocument();
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it("should trigger onChange function on clicking ok button", () => {
|
|
40
|
+
const onChange = jest.fn();
|
|
41
|
+
render(<TimePicker defaultValue={currentTime} onChange={onChange} open />);
|
|
42
|
+
fireEvent.click(getAllByText("12")[0]);
|
|
43
|
+
fireEvent.click(getByText("30"));
|
|
44
|
+
fireEvent.click(getByText("Ok"));
|
|
45
|
+
expect(onChange).toHaveBeenCalled();
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("should trigger onChange function on typing in textbox", () => {
|
|
49
|
+
const onChange = jest.fn();
|
|
50
|
+
render(<TimePicker onChange={onChange} open />);
|
|
51
|
+
userEvent.paste(getByRole("textbox"), "11:01");
|
|
52
|
+
fireEvent.click(getByText("Ok"));
|
|
53
|
+
expect(onChange).toHaveBeenCalledWith(
|
|
54
|
+
currentTime.hour(11).minute(1).second(0).millisecond(0),
|
|
55
|
+
"11:01"
|
|
56
|
+
);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it("should not break component even if onChange is not provided", () => {
|
|
60
|
+
render(<TimePicker open />);
|
|
61
|
+
userEvent.paste(getByRole("textbox"), "11:01");
|
|
62
|
+
fireEvent.click(getByText("Ok"));
|
|
63
|
+
expect(getByRole("textbox")).toHaveValue("11:01");
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it("should be able to select time in a range", async () => {
|
|
67
|
+
const onChange = jest.fn();
|
|
68
|
+
render(<TimePicker onChange={onChange} type="range" format="HH:mm:ss" />);
|
|
69
|
+
const startTimeInput = getAllByRole("textbox")[0];
|
|
70
|
+
const endTimeInput = getAllByRole("textbox")[1];
|
|
71
|
+
userEvent.click(startTimeInput);
|
|
72
|
+
fireEvent.click(getAllByText("02")[0]);
|
|
73
|
+
fireEvent.click(getAllByText("15")[1]);
|
|
74
|
+
fireEvent.click(getAllByText("00")[2]);
|
|
75
|
+
fireEvent.click(getByText("Ok"));
|
|
76
|
+
|
|
77
|
+
userEvent.click(endTimeInput);
|
|
78
|
+
fireEvent.click(getAllByText("03")[0]);
|
|
79
|
+
fireEvent.click(getAllByText("20")[1]);
|
|
80
|
+
fireEvent.click(getAllByText("10")[2]);
|
|
81
|
+
fireEvent.click(getByText("Ok"));
|
|
82
|
+
|
|
83
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
84
|
+
|
|
85
|
+
expect(startTimeInput).toHaveValue(
|
|
86
|
+
currentTime.hour(2).minute(15).second(0).format("HH:mm:ss")
|
|
87
|
+
);
|
|
88
|
+
expect(endTimeInput).toHaveValue(
|
|
89
|
+
currentTime.hour(3).minute(20).second(10).format("HH:mm:ss")
|
|
90
|
+
);
|
|
91
|
+
});
|
|
92
|
+
});
|