Skip to content

Commit 4e33be1

Browse files
committed
test(date-picker): closing in zoneless does not throw
1 parent 250c448 commit 4e33be1

1 file changed

Lines changed: 40 additions & 3 deletions

File tree

projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.spec.ts

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
OverlayCancelableEventArgs, OverlayClosingEventArgs, OverlayEventArgs, OverlaySettings,
1414
WEEKDAYS
1515
} from 'igniteui-angular/core';
16-
import { ChangeDetectorRef, Component, DebugElement, ElementRef, EventEmitter, Injector, QueryList, Renderer2, ViewChild } from '@angular/core';
16+
import { ChangeDetectorRef, Component, DebugElement, ElementRef, EventEmitter, Injector, provideZonelessChangeDetection, QueryList, Renderer2, ViewChild } from '@angular/core';
1717
import { By } from '@angular/platform-browser';
1818
import { PickerCalendarOrientation, PickerHeaderOrientation, PickerInteractionMode } from '../../../core/src/date-common/types';
1919
import { DatePart } from '../../../core/src/date-common/public_api';
@@ -903,8 +903,8 @@ describe('IgxDatePicker', () => {
903903
get: mockNgControl
904904
});
905905

906-
mockCdr = jasmine.createSpyObj('ChangeDetectorRef', ['detectChanges']);
907-
mockCalendar = { selected: new EventEmitter<any>(), selectDate: () => {} };
906+
mockCdr = jasmine.createSpyObj('ChangeDetectorRef', ['detectChanges', 'markForCheck']);
907+
mockCalendar = { selected: new EventEmitter<any>(), selectDate: () => { } };
908908
const mockComponentInstance = {
909909
calendar: mockCalendar,
910910
todaySelection: new EventEmitter<any>(),
@@ -1665,6 +1665,43 @@ describe('IgxDatePicker', () => {
16651665
});
16661666
});
16671667
});
1668+
1669+
describe('Zoneless', () => {
1670+
let fixture: ComponentFixture<IgxDatePickerNgModelComponent>;
1671+
let datePicker: IgxDatePickerComponent;
1672+
1673+
beforeEach(async () => {
1674+
await TestBed.configureTestingModule({
1675+
imports: [
1676+
NoopAnimationsModule,
1677+
IgxDatePickerNgModelComponent,
1678+
],
1679+
providers: [
1680+
provideZonelessChangeDetection()
1681+
]
1682+
}).compileComponents();
1683+
1684+
fixture = TestBed.createComponent(IgxDatePickerNgModelComponent);
1685+
await fixture.whenStable();
1686+
});
1687+
1688+
it('should not throw ExpressionChangedAfterItHasBeenCheckedError when closing - issue #17305', fakeAsync(async () => {
1689+
datePicker = fixture.componentInstance.datePicker;
1690+
1691+
datePicker.open();
1692+
await fixture.whenStable();
1693+
1694+
expect(async () => {
1695+
datePicker.close();
1696+
fixture.detectChanges();
1697+
tick(100);
1698+
await fixture.whenStable();
1699+
1700+
const input = fixture.debugElement.query(By.css('input'));
1701+
expect(input.nativeElement.getAttribute('aria-expanded')).toBe('false');
1702+
}).not.toThrow();
1703+
}));
1704+
});
16681705
});
16691706
@Component({
16701707
template: `

0 commit comments

Comments
 (0)