mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[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:
@@ -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);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
@@ -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();
|
||||
|
Reference in New Issue
Block a user