ng-ytl-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
60 lines (50 loc) • 2.37 kB
text/typescript
/* tslint:disable:no-any ban-types */
import { APP_INITIALIZER, ComponentFactory, ComponentFactoryResolver, ComponentRef, Injector } from '@angular/core';
import { async, inject, TestBed } from '@angular/core/testing';
import { NzRootStyleComponent } from './nz-root-style.component';
import { NzRootModule } from './nz-root.module';
describe('NzRootModule', () => {
let ngModule: NzRootModule;
let mockDocument: Document;
let mockInjector: Injector;
let mockFactoryResolver: ComponentFactoryResolver;
let mockElement: HTMLDivElement;
let mockComponentFactory: ComponentFactory<NzRootStyleComponent>;
let mockComponentRef: ComponentRef<NzRootStyleComponent>;
beforeEach(() => {
mockDocument = { createElement: () => null } as any;
mockInjector = {} as any;
mockFactoryResolver = { resolveComponentFactory: () => null } as any;
mockElement = {} as any;
mockComponentFactory = { create: () => null } as any;
mockComponentRef = { destroy: () => null } as any;
spyOn(mockDocument, 'createElement').and.returnValue(mockElement);
spyOn(mockComponentRef, 'destroy');
spyOn(mockComponentFactory, 'create').and.returnValue(mockComponentRef);
spyOn(mockFactoryResolver, 'resolveComponentFactory').and.returnValue(mockComponentFactory);
});
beforeEach(() => {
ngModule = new NzRootModule(mockDocument, mockInjector, mockFactoryResolver);
});
it('should create style component when start', () => {
expect(mockDocument.createElement).toHaveBeenCalledWith('div');
expect(mockFactoryResolver.resolveComponentFactory).toHaveBeenCalledWith(NzRootStyleComponent);
expect(mockComponentFactory.create).toHaveBeenCalledWith(mockInjector, null, mockElement);
});
it('should destroy style component when terminate', () => {
ngModule.ngOnDestroy();
expect(mockComponentRef.destroy).toHaveBeenCalled();
});
});
describe('NzRootModule with Angular integration', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [NzRootModule],
declarations: [],
providers: [],
}).compileComponents();
}));
it('should provide APP_INITIALIZER', inject([APP_INITIALIZER], (initializers: Function[]) => {
expect(initializers.some(x => x.name === 'nzRootInitializer')).toBe(true);
}));
});