UNPKG

igniteui-angular-sovn

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

64 lines (51 loc) 2.22 kB
import { EventEmitter, NgZone, Injectable } from '@angular/core'; import { ComponentFixture } from '@angular/core/testing'; import { IgxHierarchicalGridComponent } from '../grids/hierarchical-grid/public_api'; import { GridType } from '../grids/common/grid.interface'; import { Subscription } from 'rxjs'; export const resizeObserverIgnoreError = () => { jasmine.getEnv().allowRespy(true); const spy = spyOn(window, 'onerror').and.callFake((...args) => { if (args[0].toString().match('ResizeObserver loop limit exceeded')) { return; } spy.and.callThrough().withArgs(...args); }); return spy; }; export let gridsubscriptions: Subscription [] = []; export const setupGridScrollDetection = (fixture: ComponentFixture<any>, grid: GridType) => { gridsubscriptions.push(grid.verticalScrollContainer.chunkLoad.subscribe(() => fixture.detectChanges())); gridsubscriptions.push(grid.parentVirtDir.chunkLoad.subscribe(() => fixture.detectChanges())); }; export const setupHierarchicalGridScrollDetection = (fixture: ComponentFixture<any>, hierarchicalGrid: IgxHierarchicalGridComponent) => { setupGridScrollDetection(fixture, hierarchicalGrid); const existingChildren = hierarchicalGrid.gridAPI.getChildGrids(true); existingChildren.forEach(child => setupGridScrollDetection(fixture, child)); const layouts = hierarchicalGrid.allLayoutList.toArray(); layouts.forEach((layout) => { gridsubscriptions.push(layout.gridCreated.subscribe(evt => { setupGridScrollDetection(fixture, evt.grid); })); }); }; export const clearGridSubs = () => { gridsubscriptions.forEach(sub => sub.unsubscribe()); gridsubscriptions = []; } @Injectable() export class TestNgZone extends NgZone { public override onStable: EventEmitter<any> = new EventEmitter(false); constructor() { super({enableLongStackTrace: false, shouldCoalesceEventChangeDetection: false}); } public override run(fn: () => void): any { return fn(); } public override runOutsideAngular(fn: () => void): any { return fn(); } public simulateOnStable(): void { this.onStable.emit(null); } }