Skip to content

Commit 3508f80

Browse files
committed
simplify predefined date ranges date definitions & tests
1 parent 3cfedd8 commit 3508f80

File tree

2 files changed

+27
-146
lines changed

2 files changed

+27
-146
lines changed

src/components/date-range-picker/date-range-picker.spec.ts

Lines changed: 20 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import {
1111
escapeKey,
1212
} from '../common/controllers/key-bindings.js';
1313
import { defineComponents } from '../common/definitions/defineComponents.js';
14-
import { IgcDateRangePickerResourceStringsEN } from '../common/i18n/date-range-picker.resources.js';
1514
import {
1615
type ValidationContainerTestsParams,
1716
checkDatesEqual,
@@ -38,7 +37,7 @@ describe('Date range picker', () => {
3837

3938
const toggleIcon = 'today';
4039
const clearIcon = 'input_clear';
41-
const today = CalendarDay.from(new Date());
40+
const today = CalendarDay.today;
4241
const tomorrow = today.add('day', 1);
4342

4443
beforeEach(async () => {
@@ -865,14 +864,8 @@ describe('Date range picker', () => {
865864
});
866865
});
867866
describe('Selection via the range selection chips', () => {
868-
const previousThreeDaysStart = CalendarDay.from(today.native).add(
869-
'day',
870-
-3
871-
).native;
872-
const nextThreeDaysEnd = CalendarDay.from(today.native).add(
873-
'day',
874-
+3
875-
).native;
867+
const previousThreeDaysStart = CalendarDay.today.add('day', -3).native;
868+
const nextThreeDaysEnd = CalendarDay.today.add('day', 3).native;
876869

877870
const customRanges: CustomDateRange[] = [
878871
{
@@ -898,142 +891,38 @@ describe('Date range picker', () => {
898891
const chips = picker.renderRoot.querySelectorAll('igc-chip');
899892
expect(chips.length).to.equal(0);
900893
});
901-
it('should render all predefined chips and custom chips when set', async () => {
902-
picker.usePredefinedRanges = true;
903-
picker.open = true;
904-
const predefinedRangesLength = (picker as any).predefinedRanges.length;
905-
await elementUpdated(picker);
906-
907-
let chips = picker.renderRoot.querySelectorAll('igc-chip');
908-
expect(chips.length).to.equal(predefinedRangesLength);
909-
910-
expect(chips[0].innerText).to.equal(
911-
IgcDateRangePickerResourceStringsEN.last7Days
912-
);
913-
expect(chips[1].innerText).to.equal(
914-
IgcDateRangePickerResourceStringsEN.currentMonth
915-
);
916-
expect(chips[2].innerText).to.equal(
917-
IgcDateRangePickerResourceStringsEN.last30Days
918-
);
919-
expect(chips[3].innerText).to.equal(
920-
IgcDateRangePickerResourceStringsEN.yearToDate
921-
);
922-
923-
picker.customRanges = customRanges;
924-
await elementUpdated(picker);
925-
926-
const allRangesLenght = (picker as any).allRanges.length;
927-
chips = picker.renderRoot.querySelectorAll('igc-chip');
928-
expect(chips.length).to.equal(allRangesLenght);
929894

930-
expect(chips[0].innerText).to.equal(
931-
IgcDateRangePickerResourceStringsEN.last7Days
932-
);
933-
expect(chips[1].innerText).to.equal(
934-
IgcDateRangePickerResourceStringsEN.currentMonth
935-
);
936-
expect(chips[2].innerText).to.equal(
937-
IgcDateRangePickerResourceStringsEN.last30Days
938-
);
939-
expect(chips[3].innerText).to.equal(
940-
IgcDateRangePickerResourceStringsEN.yearToDate
941-
);
942-
expect(chips[4].innerText).to.equal('Previous Three Days');
943-
expect(chips[5].innerText).to.equal('Next Three Days');
944-
});
945895
it('should emit igcChange when the chips are clicked', async () => {
946896
const eventSpy = spy(picker, 'emitEvent');
947897
const popover = picker.renderRoot.querySelector('igc-popover');
948898

899+
const predefinedRanges = [
900+
...(picker as any).predefinedRanges,
901+
...customRanges,
902+
];
949903
picker.usePredefinedRanges = true;
950904
picker.customRanges = customRanges;
951905
picker.open = true;
952906
await elementUpdated(picker);
953907

954-
const allRangesLenght = (picker as any).allRanges.length;
908+
const allRangesLength = (picker as any).allRanges.length;
955909
const chips = picker.renderRoot.querySelectorAll('igc-chip');
956-
expect(chips.length).to.equal(allRangesLenght);
957-
958-
chips[0].click();
959-
await elementUpdated(picker);
960-
961-
expect(eventSpy).calledWith('igcChange');
962-
963-
checkSelectedRange(picker, {
964-
start: CalendarDay.today.add('day', -7).native,
965-
end: today.native,
966-
});
967-
968-
expect(popover?.hasAttribute('open')).to.equal(true);
969-
970-
chips[1].click();
971-
await elementUpdated(picker);
972-
973-
expect(eventSpy).calledWith('igcChange');
974-
975-
checkSelectedRange(picker, {
976-
start: new Date(
977-
today.native.getFullYear(),
978-
today.native.getMonth(),
979-
1
980-
),
981-
end: new Date(
982-
today.native.getFullYear(),
983-
today.native.getMonth() + 1,
984-
0
985-
),
986-
});
987-
988-
expect(popover?.hasAttribute('open')).to.equal(true);
910+
expect(chips.length).to.equal(allRangesLength);
989911

990-
chips[2].click();
991-
await elementUpdated(picker);
992-
993-
expect(eventSpy).calledWith('igcChange');
994-
995-
checkSelectedRange(picker, {
996-
start: CalendarDay.from(today.native).add('day', -29).native,
997-
end: today.native,
998-
});
999-
1000-
expect(popover?.hasAttribute('open')).to.equal(true);
1001-
1002-
chips[3].click();
1003-
await elementUpdated(picker);
1004-
1005-
expect(eventSpy).calledWith('igcChange');
1006-
1007-
checkSelectedRange(picker, {
1008-
start: new Date(today.native.getFullYear(), 0, 1),
1009-
end: today.native,
1010-
});
1011-
1012-
expect(popover?.hasAttribute('open')).to.equal(true);
1013-
1014-
chips[4].click();
1015-
await elementUpdated(picker);
1016-
1017-
expect(eventSpy).calledWith('igcChange');
1018-
1019-
checkSelectedRange(picker, {
1020-
start: previousThreeDaysStart,
1021-
end: today.native,
1022-
});
1023-
1024-
expect(popover?.hasAttribute('open')).to.equal(true);
912+
for (let i = 0; i < chips.length; i++) {
913+
expect(chips[i].innerText).to.equal(predefinedRanges[i].label);
1025914

1026-
chips[5].click();
1027-
await elementUpdated(picker);
1028-
1029-
expect(eventSpy).calledWith('igcChange');
915+
chips[i].click();
916+
await elementUpdated(picker);
1030917

1031-
checkSelectedRange(picker, {
1032-
start: today.native,
1033-
end: nextThreeDaysEnd,
1034-
});
918+
expect(eventSpy).calledWith('igcChange');
1035919

1036-
expect(popover?.hasAttribute('open')).to.equal(true);
920+
checkSelectedRange(picker, {
921+
start: predefinedRanges[i].dateRange.start,
922+
end: predefinedRanges[i].dateRange.end,
923+
});
924+
expect(popover?.hasAttribute('open')).to.equal(true);
925+
}
1037926
});
1038927

1039928
it('should render only custom chips, when usePredefinedRanges is false and emit igcChange when chips are clicked', async () => {

src/components/date-range-picker/date-range-picker.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -244,31 +244,23 @@ export default class IgcDateRangePickerComponent extends FormAssociatedRequiredM
244244
{
245245
label: IgcDateRangePickerResourceStringsEN.currentMonth,
246246
dateRange: {
247-
start: new Date(
248-
CalendarDay.today.native.getFullYear(),
249-
CalendarDay.today.native.getMonth(),
250-
1
251-
),
252-
end: new Date(
253-
CalendarDay.today.native.getFullYear(),
254-
CalendarDay.today.native.getMonth() + 1,
255-
0
256-
),
247+
start: CalendarDay.today.set({ date: 1 }).native,
248+
end: CalendarDay.today.set({ date: 1 }).add('month', 1).add('day', -1)
249+
.native,
257250
},
258251
},
259252
{
260253
label: IgcDateRangePickerResourceStringsEN.last30Days,
261254
dateRange: {
262-
start: CalendarDay.from(CalendarDay.today.native).add('day', -29)
263-
.native,
264-
end: CalendarDay.from(CalendarDay.today.native).native,
255+
start: CalendarDay.today.add('day', -29).native,
256+
end: CalendarDay.today.native,
265257
},
266258
},
267259
{
268260
label: IgcDateRangePickerResourceStringsEN.yearToDate,
269261
dateRange: {
270-
start: new Date(CalendarDay.today.native.getFullYear(), 0, 1),
271-
end: new Date(CalendarDay.today.native),
262+
start: CalendarDay.today.add('year', -1).native,
263+
end: CalendarDay.today.native,
272264
},
273265
},
274266
];

0 commit comments

Comments
 (0)