Skip to content

Commit a997af8

Browse files
author
Balaji Sridharan
committed
♻️🧪 Refactor test with SafeElementWrapper and removed the direct usage of safeQuerySelector/safeQuerySelectorAll to avoid unnecessary intermediate variable declarations
1 parent c834746 commit a997af8

File tree

2 files changed

+66
-61
lines changed

2 files changed

+66
-61
lines changed

src/test/timepicker_test.test.tsx

Lines changed: 57 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ import React from "react";
44
import { formatDate, KeyType } from "../date_utils";
55
import DatePicker from "../index";
66

7-
import { getKey, safeQuerySelector, safeQuerySelectorAll } from "./test_utils";
7+
import {
8+
getKey,
9+
SafeElementWrapper,
10+
safeQuerySelector,
11+
safeQuerySelectorAll,
12+
} from "./test_utils";
813

914
const MIN_TIME_LI_LEN = 2;
1015

@@ -38,12 +43,11 @@ describe("TimePicker", () => {
3843

3944
fireEvent.focus(instance.input);
4045

41-
const time = safeQuerySelector(
42-
datePicker,
43-
".react-datepicker__time-container",
44-
);
45-
const lis = safeQuerySelectorAll(time, "li", MIN_TIME_LI_LEN);
46-
fireEvent.click(lis[1]!);
46+
const timeOption = new SafeElementWrapper(datePicker)
47+
.safeQuerySelector(".react-datepicker__time-container")
48+
.safeQuerySelectorAll("li", MIN_TIME_LI_LEN)[1]!
49+
.getElement();
50+
fireEvent.click(timeOption);
4751
expect(getInputString()).toBe("February 28, 2018 12:30 AM");
4852
});
4953

@@ -178,12 +182,13 @@ describe("TimePicker", () => {
178182
throw new Error("input is null/undefined");
179183
}
180184
fireEvent.focus(instance.input);
181-
const time = safeQuerySelector(
182-
datePicker,
183-
".react-datepicker__time-container",
184-
);
185-
const lis = safeQuerySelectorAll(time, "li", MIN_TIME_LI_LEN);
186-
fireEvent.keyDown(lis[1]!, getKey(KeyType.Enter));
185+
186+
const timeOption = new SafeElementWrapper(datePicker)
187+
.safeQuerySelector(".react-datepicker__time-container")
188+
.safeQuerySelectorAll("li", MIN_TIME_LI_LEN)[1]!
189+
.getElement();
190+
fireEvent.keyDown(timeOption, getKey(KeyType.Enter));
191+
187192
expect(getInputString()).toBe("February 28, 2018 12:30 AM");
188193
});
189194

@@ -193,12 +198,11 @@ describe("TimePicker", () => {
193198
throw new Error("input is null/undefined");
194199
}
195200
fireEvent.focus(instance.input);
196-
const time = safeQuerySelector(
197-
datePicker,
198-
".react-datepicker__time-container",
199-
);
200-
const lis = safeQuerySelectorAll(time, "li", MIN_TIME_LI_LEN);
201-
fireEvent.keyDown(lis[1]!, getKey(KeyType.Space));
201+
const timeOption = new SafeElementWrapper(datePicker)
202+
.safeQuerySelector(".react-datepicker__time-container")
203+
.safeQuerySelectorAll("li", MIN_TIME_LI_LEN)[1]!
204+
.getElement();
205+
fireEvent.keyDown(timeOption, getKey(KeyType.Space));
202206
expect(getInputString()).toBe("February 28, 2018 12:30 AM");
203207
});
204208

@@ -210,14 +214,13 @@ describe("TimePicker", () => {
210214
}
211215

212216
const input = safeQuerySelector(datePicker, "input");
213-
214217
fireEvent.focus(instance.input);
215-
const time = safeQuerySelector(
216-
datePicker,
217-
".react-datepicker__time-container",
218-
);
219-
const lis = safeQuerySelectorAll(time, "li", MIN_TIME_LI_LEN);
220-
fireEvent.keyDown(lis[1]!, getKey(KeyType.Enter));
218+
219+
const timeOption = new SafeElementWrapper(datePicker)
220+
.safeQuerySelector(".react-datepicker__time-container")
221+
.safeQuerySelectorAll("li", MIN_TIME_LI_LEN)[1]!
222+
.getElement();
223+
fireEvent.keyDown(timeOption, getKey(KeyType.Enter));
221224

222225
await waitFor(() => {
223226
expect(document.activeElement).toBe(input);
@@ -230,12 +233,13 @@ describe("TimePicker", () => {
230233
throw new Error("input is null/undefined");
231234
}
232235
fireEvent.focus(instance.input);
233-
const time = safeQuerySelector(
234-
datePicker,
235-
".react-datepicker__time-container",
236-
);
237-
const lis = safeQuerySelectorAll(time, "li", MIN_TIME_LI_LEN);
238-
fireEvent.keyDown(lis[1]!, getKey(KeyType.Escape));
236+
237+
const timeOption = new SafeElementWrapper(datePicker)
238+
.safeQuerySelector(".react-datepicker__time-container")
239+
.safeQuerySelectorAll("li", MIN_TIME_LI_LEN)[1]!
240+
.getElement();
241+
fireEvent.keyDown(timeOption, getKey(KeyType.Escape));
242+
239243
expect(getInputString()).toBe("February 28, 2018 4:43 PM");
240244
});
241245

@@ -248,12 +252,13 @@ describe("TimePicker", () => {
248252
throw new Error("input is null/undefined");
249253
}
250254
fireEvent.focus(instance.input);
251-
const time = safeQuerySelector(
252-
datePicker,
253-
".react-datepicker__time-container",
254-
);
255-
const lis = safeQuerySelectorAll(time, "li", MIN_TIME_LI_LEN);
256-
fireEvent.keyDown(lis[1]!, getKey(KeyType.Escape));
255+
256+
const timeOption = new SafeElementWrapper(datePicker)
257+
.safeQuerySelector(".react-datepicker__time-container")
258+
.safeQuerySelectorAll("li", MIN_TIME_LI_LEN)[1]!
259+
.getElement();
260+
fireEvent.keyDown(timeOption, getKey(KeyType.Escape));
261+
257262
expect(onKeyDownSpy).toHaveBeenCalledTimes(1);
258263
});
259264

@@ -266,12 +271,13 @@ describe("TimePicker", () => {
266271
throw new Error("input is null/undefined");
267272
}
268273
fireEvent.focus(instance.input);
269-
const time = safeQuerySelector(
270-
datePicker,
271-
".react-datepicker__time-container",
272-
);
273-
const lis = safeQuerySelectorAll(time, "li", MIN_TIME_LI_LEN);
274-
fireEvent.keyDown(lis[1]!, getKey(KeyType.Enter));
274+
275+
const timeOption = new SafeElementWrapper(datePicker)
276+
.safeQuerySelector(".react-datepicker__time-container")
277+
.safeQuerySelectorAll("li", MIN_TIME_LI_LEN)[1]!
278+
.getElement();
279+
fireEvent.keyDown(timeOption, getKey(KeyType.Enter));
280+
275281
expect(onKeyDownSpy).toHaveBeenCalledTimes(1);
276282
});
277283

@@ -284,12 +290,13 @@ describe("TimePicker", () => {
284290
throw new Error("input is null/undefined");
285291
}
286292
fireEvent.focus(instance.input);
287-
const time = safeQuerySelector(
288-
datePicker,
289-
".react-datepicker__time-container",
290-
);
291-
const lis = safeQuerySelectorAll(time, "li", MIN_TIME_LI_LEN);
292-
fireEvent.keyDown(lis[1]!, getKey(KeyType.Space));
293+
294+
const timeOption = new SafeElementWrapper(datePicker)
295+
.safeQuerySelector(".react-datepicker__time-container")
296+
.safeQuerySelectorAll("li", MIN_TIME_LI_LEN)[1]!
297+
.getElement();
298+
fireEvent.keyDown(timeOption, getKey(KeyType.Space));
299+
293300
expect(onKeyDownSpy).toHaveBeenCalledTimes(1);
294301
});
295302

src/test/year_picker_test.test.tsx

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
getKey,
1919
gotoNextView,
2020
openDateInput,
21+
SafeElementWrapper,
2122
safeQuerySelector,
2223
safeQuerySelectorAll,
2324
} from "./test_utils";
@@ -578,11 +579,10 @@ describe("YearPicker", () => {
578579
const input = safeQuerySelector(container, "input");
579580
fireEvent.focus(input);
580581

581-
const calendar = safeQuerySelector(container, ".react-datepicker");
582-
const previousButton = safeQuerySelector(
583-
calendar,
584-
".react-datepicker__navigation--previous",
585-
);
582+
const previousButton = new SafeElementWrapper(container)
583+
.safeQuerySelector(".react-datepicker")
584+
.safeQuerySelector(".react-datepicker__navigation--previous")
585+
.getElement();
586586
fireEvent.click(previousButton);
587587

588588
const year = container.querySelector(".react-datepicker__year");
@@ -611,12 +611,10 @@ describe("YearPicker", () => {
611611
const input = safeQuerySelector(container, "input");
612612
fireEvent.focus(input);
613613

614-
const calendar = safeQuerySelector(container, ".react-datepicker");
615-
const nextButton = safeQuerySelector(
616-
calendar,
617-
".react-datepicker__navigation--next",
618-
);
619-
614+
const nextButton = new SafeElementWrapper(container)
615+
.safeQuerySelector(".react-datepicker")
616+
.safeQuerySelector(".react-datepicker__navigation--next")
617+
.getElement();
620618
fireEvent.click(nextButton);
621619

622620
const year = container.querySelector(".react-datepicker__year");

0 commit comments

Comments
 (0)