[AAE-9463] Check if minDateRangeValue and maxDateRangeValue are inte… (#7720)

* [AAE-10045] Check if minDateRangeValue and maxDateRangeValue are integer to avoid null or undefined values

* [AAE-9400] Fix date validations if dynamic date range is enabled
This commit is contained in:
Amedeo Lepore
2022-07-25 11:42:44 +02:00
committed by GitHub
parent fa587510bd
commit 4c9a648744
2 changed files with 134 additions and 3 deletions

View File

@@ -367,6 +367,131 @@ describe('DateWidgetComponent', () => {
expect(widget.maxDate).toEqual(expected);
});
it('should maxDate and minDate be undefined if minDateRangeValue and maxDateRangeValue are null', async () => {
widget.field = new FormFieldModel(null, {
dynamicDateRangeSelection: true,
maxDateRangeValue: null,
minDateRangeValue: null
});
fixture.detectChanges();
await fixture.whenStable();
expect(widget.maxDate).toBeUndefined();
expect(widget.minDate).toBeUndefined();
});
it('should minDate be undefined if minDateRangeValue is null and maxDateRangeValue is greater than 0', async () => {
widget.field = new FormFieldModel(null, {
dynamicDateRangeSelection: true,
maxDateRangeValue: 15,
minDateRangeValue: null
});
fixture.detectChanges();
await fixture.whenStable();
expect(widget.maxDate).not.toBeUndefined();
expect(widget.minDate).toBeUndefined();
});
it('should maxDate be undefined if maxDateRangeValue is null and minDateRangeValue is greater than 0', async () => {
widget.field = new FormFieldModel(null, {
dynamicDateRangeSelection: true,
maxDateRangeValue: null,
minDateRangeValue: 10
});
fixture.detectChanges();
await fixture.whenStable();
expect(widget.minDate).not.toBeUndefined();
expect(widget.maxDate).toBeUndefined();
});
describe('check date validation by dynamic date ranges', () => {
it('should minValue be equal to today date minus minDateRangeValue', async () => {
spyOn(widget, 'getTodaysFormattedDate').and.returnValue('2022-07-22');
widget.field = new FormFieldModel(null, {
dynamicDateRangeSelection: true,
maxDateRangeValue: null,
minDateRangeValue: 1,
maxValue: null,
minValue: null
});
fixture.detectChanges();
await fixture.whenStable();
const expectedMinValueString = '2022-07-21';
expect(widget.field.minValue).toEqual(expectedMinValueString);
expect(widget.maxDate).toBeUndefined();
expect(widget.field.maxValue).toBeNull();
});
it('should maxValue be equal to today date plus maxDateRangeValue', async () => {
spyOn(widget, 'getTodaysFormattedDate').and.returnValue('2022-07-22');
widget.field = new FormFieldModel(null, {
dynamicDateRangeSelection: true,
maxDateRangeValue: 8,
minDateRangeValue: null,
maxValue: null,
minValue: null
});
fixture.detectChanges();
await fixture.whenStable();
const expectedMaxValueString = '2022-07-30';
expect(widget.field.maxValue).toEqual(expectedMaxValueString);
expect(widget.minDate).toBeUndefined();
expect(widget.field.minValue).toBeNull();
});
it('should maxValue and minValue be null if maxDateRangeValue and minDateRangeValue are null', async () => {
spyOn(widget, 'getTodaysFormattedDate').and.returnValue('2022-07-22');
widget.field = new FormFieldModel(null, {
dynamicDateRangeSelection: true,
maxDateRangeValue: null,
minDateRangeValue: null,
maxValue: null,
minValue: null
});
fixture.detectChanges();
await fixture.whenStable();
expect(widget.minDate).toBeUndefined();
expect(widget.maxDate).toBeUndefined();
expect(widget.field.minValue).toBeNull();
expect(widget.field.maxValue).toBeNull();
});
it('should maxValue and minValue not be null if maxDateRangeVale and minDateRangeValue are not null', async () => {
spyOn(widget, 'getTodaysFormattedDate').and.returnValue('2022-07-22');
widget.field = new FormFieldModel(null, {
dynamicDateRangeSelection: true,
maxDateRangeValue: 8,
minDateRangeValue: 10,
maxValue: null,
minValue: null
});
fixture.detectChanges();
await fixture.whenStable();
const expectedMaxValueString = '2022-07-30';
const expectedMinValueString = '2022-07-12';
expect(widget.field.maxValue).toEqual(expectedMaxValueString);
expect(widget.field.minValue).toEqual(expectedMinValueString);
});
});
});

View File

@@ -75,12 +75,14 @@ export class DateCloudWidgetComponent extends WidgetComponent implements OnInit,
if (this.field) {
if (this.field.dynamicDateRangeSelection) {
const today = moment().format(DATE_FORMAT_CLOUD);
if (!isNaN(this.field.minDateRangeValue)) {
const today = this.getTodaysFormattedDate();
if (Number.isInteger(this.field.minDateRangeValue)) {
this.minDate = moment(today).subtract(this.field.minDateRangeValue, 'days');
this.field.minValue = this.minDate.format(DATE_FORMAT_CLOUD);
}
if (!isNaN(this.field.maxDateRangeValue)) {
if (Number.isInteger(this.field.maxDateRangeValue)) {
this.maxDate = moment(today).add(this.field.maxDateRangeValue, 'days');
this.field.maxValue = this.maxDate.format(DATE_FORMAT_CLOUD);
}
} else {
if (this.field.minValue) {
@@ -94,6 +96,10 @@ export class DateCloudWidgetComponent extends WidgetComponent implements OnInit,
}
}
getTodaysFormattedDate() {
return moment().format(DATE_FORMAT_CLOUD);
}
ngOnDestroy() {
this.onDestroy$.next(true);
this.onDestroy$.complete();