Skip to content

Commit 3141850

Browse files
committed
refactor datepicker components
1 parent acd5cf2 commit 3141850

File tree

1 file changed

+33
-37
lines changed

1 file changed

+33
-37
lines changed
Lines changed: 33 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,38 @@
1+
import { Page } from '@playwright/test';
12
import { BaseComponent } from '@components/base.component';
23

34
class DatePickerComponent extends BaseComponent {
4-
private async selectDateInCalendar(daysFromToday: number) {
5+
private readonly calendarSelector = 'nb-calendar';
6+
private readonly calendarViewModeSelector = 'nb-calendar-view-mode';
7+
private readonly navChevronSelector = 'nb-calendar-pageable-navigation [data-name="chevron-right"]';
8+
private readonly dayCellSelector = '.day-cell.ng-star-inserted';
9+
10+
constructor(page: Page) {
11+
super(page, 'DatePickerComponent');
12+
}
13+
14+
private async selectDateInCalendar(daysFromToday: number): Promise<string> {
515
const date = new Date();
616
date.setDate(date.getDate() + daysFromToday);
17+
718
const expectedDay = date.getDate().toString();
8-
const expectedMonthShort = date.toLocaleString('default', {
9-
month: 'short',
10-
});
19+
const expectedMonthShort = date.toLocaleString('default', { month: 'short' });
1120
const expectedMonthLong = date.toLocaleString('default', { month: 'long' });
1221
const expectedYear = date.getFullYear().toString();
1322
const dateToAssert = `${expectedMonthShort} ${expectedDay}, ${expectedYear}`;
1423
const expectedMonthAndYear = `${expectedMonthLong} ${expectedYear}`;
15-
let calendarMonthYear = await this.getText('nb-calendar-view-mode');
1624

17-
while (
18-
calendarMonthYear &&
19-
!calendarMonthYear.includes(expectedMonthAndYear)
20-
) {
21-
await this.click(
22-
'nb-calendar-pageable-navigation [data-name="chevron-right"]'
23-
);
24-
calendarMonthYear = await this.getText('nb-calendar-view-mode');
25+
let calendarMonthYear = await this.getText(this.calendarViewModeSelector);
26+
while (calendarMonthYear && !calendarMonthYear.includes(expectedMonthAndYear)) {
27+
await this.click(this.navChevronSelector);
28+
calendarMonthYear = await this.getText(this.calendarViewModeSelector);
2529
}
26-
await this.click('.day-cell.ng-star-inserted', {
27-
text: expectedDay,
28-
exact: true,
29-
});
3030

31+
await this.click(this.dayCellSelector, { text: expectedDay, exact: true });
3132
return dateToAssert;
3233
}
3334

34-
async selectCommonDatepickerDateFromToday(daysFromToday: number) {
35+
async selectCommonDatepickerDateFromToday(daysFromToday: number): Promise<void> {
3536
const calendarInputField = this.getByPlaceholder('Form Picker');
3637
await calendarInputField.click();
3738
await this.selectDateInCalendar(daysFromToday);
@@ -40,37 +41,32 @@ class DatePickerComponent extends BaseComponent {
4041
async selectDatePickerRangeFromToday(
4142
daysFromToday: number,
4243
daysAfter: number
43-
) {
44+
): Promise<{ dateFrom: string; dateTo: string }> {
4445
const calendarInputField = this.getByPlaceholder('Range Picker');
4546
await calendarInputField.click();
47+
4648
const dateFrom = await this.selectDateInCalendar(daysFromToday);
4749
const dateTo = await this.selectDateInCalendar(daysAfter);
48-
return {dateFrom, dateTo}
50+
return { dateFrom, dateTo };
4951
}
5052

51-
async getDateToAssert(daysFromToday: number, daysAfter?: number): Promise<string | { startDate: string, endDate: string }> {
52-
const date = new Date();
53-
date.setDate(date.getDate() + daysFromToday);
54-
const expectedDay = date.getDate().toString();
55-
const expectedMonthShort = date.toLocaleString('default', {
56-
month: 'short',
57-
});
58-
const expectedYear = date.getFullYear().toString();
59-
const startDate = `${expectedMonthShort} ${expectedDay}, ${expectedYear}`;
53+
async getDateToAssert(
54+
daysFromToday: number,
55+
daysAfter?: number
56+
): Promise<string | { startDate: string; endDate: string }> {
57+
const start = new Date();
58+
start.setDate(start.getDate() + daysFromToday);
59+
const startDate = `${start.toLocaleString('default', { month: 'short' })} ${start.getDate()}, ${start.getFullYear()}`;
6060

6161
if (daysAfter !== undefined) {
62-
const endDateObj = new Date();
63-
endDateObj.setDate(endDateObj.getDate() + daysAfter);
64-
const endDay = endDateObj.getDate().toString();
65-
const endMonthShort = endDateObj.toLocaleString('default', {
66-
month: 'short',
67-
});
68-
const endYear = endDateObj.getFullYear().toString();
69-
const endDate = `${endMonthShort} ${endDay}, ${endYear}`;
62+
const end = new Date();
63+
end.setDate(end.getDate() + daysAfter);
64+
const endDate = `${end.toLocaleString('default', { month: 'short' })} ${end.getDate()}, ${end.getFullYear()}`;
7065
return { startDate, endDate };
7166
}
7267

7368
return startDate;
7469
}
7570
}
71+
7672
export { DatePickerComponent };

0 commit comments

Comments
 (0)