Skip to content

Commit 1152459

Browse files
committed
Merge branch 'main' into pr-3988-rebase-v3
* main: chore(deps-dev): bump husky from 9.1.3 to 9.1.5 chore(deps-dev): bump @babel/helpers from 7.25.0 to 7.25.6 chore(deps-dev): bump eslint-plugin-jest from 28.8.0 to 28.8.1 ♻️🧪 Refactor test with SafeElementWrapper and removed the direct usage of safeQuerySelector/safeQuerySelectorAll to avoid unnecessary intermediate variable declarations
2 parents 6ccd449 + e38003b commit 1152459

File tree

3 files changed

+88
-82
lines changed

3 files changed

+88
-82
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");

yarn.lock

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -658,23 +658,13 @@ __metadata:
658658
languageName: node
659659
linkType: hard
660660

661-
"@babel/helpers@npm:^7.24.8":
662-
version: 7.24.8
663-
resolution: "@babel/helpers@npm:7.24.8"
664-
dependencies:
665-
"@babel/template": "npm:^7.24.7"
666-
"@babel/types": "npm:^7.24.8"
667-
checksum: 10c0/42b8939b0a0bf72d6df9721973eb0fd7cd48f42641c5c9c740916397faa586255c06d36c6e6a7e091860723096281c620f6ffaee0011a3bb254a6f5475d89a12
668-
languageName: node
669-
linkType: hard
670-
671-
"@babel/helpers@npm:^7.25.0":
672-
version: 7.25.0
673-
resolution: "@babel/helpers@npm:7.25.0"
661+
"@babel/helpers@npm:^7.24.8, @babel/helpers@npm:^7.25.0":
662+
version: 7.25.6
663+
resolution: "@babel/helpers@npm:7.25.6"
674664
dependencies:
675665
"@babel/template": "npm:^7.25.0"
676-
"@babel/types": "npm:^7.25.0"
677-
checksum: 10c0/b7fe007fc4194268abf70aa3810365085e290e6528dcb9fbbf7a765d43c74b6369ce0f99c5ccd2d44c413853099daa449c9a0123f0b212ac8d18643f2e8174b8
666+
"@babel/types": "npm:^7.25.6"
667+
checksum: 10c0/448c1cdabccca42fd97a252f73f1e4bcd93776dbf24044f3b4f49b756bf2ece73ee6df05177473bb74ea7456dddd18d6f481e4d96d2cc7839d078900d48c696c
678668
languageName: node
679669
linkType: hard
680670

@@ -1998,6 +1988,17 @@ __metadata:
19981988
languageName: node
19991989
linkType: hard
20001990

1991+
"@babel/types@npm:^7.25.6":
1992+
version: 7.25.6
1993+
resolution: "@babel/types@npm:7.25.6"
1994+
dependencies:
1995+
"@babel/helper-string-parser": "npm:^7.24.8"
1996+
"@babel/helper-validator-identifier": "npm:^7.24.7"
1997+
to-fast-properties: "npm:^2.0.0"
1998+
checksum: 10c0/89d45fbee24e27a05dca2d08300a26b905bd384a480448823f6723c72d3a30327c517476389b7280ce8cb9a2c48ef8f47da7f9f6d326faf6f53fd6b68237bdc4
1999+
languageName: node
2000+
linkType: hard
2001+
20012002
"@bcoe/v8-coverage@npm:^0.2.3":
20022003
version: 0.2.3
20032004
resolution: "@bcoe/v8-coverage@npm:0.2.3"
@@ -5440,8 +5441,8 @@ __metadata:
54405441
linkType: hard
54415442

54425443
"eslint-plugin-jest@npm:^28.8.0":
5443-
version: 28.8.0
5444-
resolution: "eslint-plugin-jest@npm:28.8.0"
5444+
version: 28.8.1
5445+
resolution: "eslint-plugin-jest@npm:28.8.1"
54455446
dependencies:
54465447
"@typescript-eslint/utils": "npm:^6.0.0 || ^7.0.0 || ^8.0.0"
54475448
peerDependencies:
@@ -5453,7 +5454,7 @@ __metadata:
54535454
optional: true
54545455
jest:
54555456
optional: true
5456-
checksum: 10c0/cb702701c20224d813b7d7515ed3fe4562b92cd4233db356b0948e0765a382a9887ae7dfd13191c2cabecbb4a6cbbd141f309618830b251c8f86a7f950e7f50b
5457+
checksum: 10c0/340f5021e7eadfc6f3c1ad9378fafb9b1ead10f07636ba2e9d5ec0abd2f2604b4bc301cbb9658f84534962244958ac6a037bf8a6bd64e341542e3c5dccc2bc95
54575458
languageName: node
54585459
linkType: hard
54595460

@@ -6502,11 +6503,11 @@ __metadata:
65026503
linkType: hard
65036504

65046505
"husky@npm:9":
6505-
version: 9.1.3
6506-
resolution: "husky@npm:9.1.3"
6506+
version: 9.1.5
6507+
resolution: "husky@npm:9.1.5"
65076508
bin:
65086509
husky: bin.js
6509-
checksum: 10c0/3fb8657ff97f529dab0b9a0afa6b818ec604f60c39abc13e8e3f4263ea30a3aa6fff7a1b625b8a53700899ce0ea2f5f656981c46b8f1837cfd84ddb6da883fb2
6510+
checksum: 10c0/f42efb95a026303eb880898760f802d88409780dd72f17781d2dfc302177d4f80b641cf1f1694f53f6d97c536c7397684133d8c8fe4a4426f7460186a7d1c6b8
65106511
languageName: node
65116512
linkType: hard
65126513

0 commit comments

Comments
 (0)