import { TestBed, ComponentFixture, fakeAsync, tick } from '@angular/core/testing'; import { DynamicDialogModule } from './dynamicdialog'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { Component, NgModule } from '@angular/core'; import { Footer } from "mirra-ui/api"; import { DialogService } from './dialogservice'; import { DynamicDialogRef} from './dynamicdialog-ref'; import { DynamicDialogConfig } from './dynamicdialog-config'; import { CommonModule } from '@angular/common'; import { DomHandler } from '../dom/domhandler'; @Component({ template: `

BluOne ROCKS!

` }) export class TestComponent { constructor(public ref: DynamicDialogRef, public config: DynamicDialogConfig) { } } @Component({ template: `
` }) export class TestDynamicDialogComponent { constructor(public dialogService: DialogService) {} show() { this.dialogService.open(TestComponent, { header: 'Demo Header', width: '70%', contentStyle: {"max-height": "350px", "overflow": "auto"}, dismissableMask:true, baseZIndex: 0 }); } } @NgModule({ imports: [CommonModule,DynamicDialogModule], declarations: [ TestComponent, TestDynamicDialogComponent ], entryComponents: [TestComponent], exports:[TestComponent], providers:[DialogService] }) export class FakeTestDialogModule {} describe('DynamicDialog', () => { let fixture: ComponentFixture; let testDynamicDialogComponent: TestDynamicDialogComponent; beforeEach(() => { TestBed.configureTestingModule({ imports: [ NoopAnimationsModule, FakeTestDialogModule ], declarations: [ Footer, ], }) fixture = TestBed.createComponent(TestDynamicDialogComponent); testDynamicDialogComponent = fixture.debugElement.componentInstance; }); it('should open dialog and close dialog', fakeAsync(() => { fixture.detectChanges(); testDynamicDialogComponent.show(); fixture.detectChanges(); tick(300); let dynamicDialogEl = document.getElementsByClassName("ui-dynamicdialog")[0]; expect(dynamicDialogEl).toBeTruthy(); const titleEl = dynamicDialogEl.getElementsByClassName("ui-dialog-title")[0]; const testComponentHeader = dynamicDialogEl.getElementsByTagName("h2")[0]; expect(titleEl.textContent).toEqual("Demo Header"); expect(testComponentHeader.textContent).toEqual(" BluOne ROCKS! "); let dynamicDialogTitlebarIconEl = document.querySelector(".ui-dialog-titlebar-icon") as HTMLElement; dynamicDialogTitlebarIconEl.click(); fixture.detectChanges(); tick(700); dynamicDialogEl = document.getElementsByClassName("ui-dynamicdialog")[0]; expect(dynamicDialogEl).toBeUndefined(); testDynamicDialogComponent.dialogService.dialogComponentRef.destroy(); fixture.detectChanges(); })); it('should close dialog with esc key', fakeAsync(() => { fixture.detectChanges(); testDynamicDialogComponent.show(); fixture.detectChanges(); tick(300); let dynamicDialogEl = document.getElementsByClassName("ui-dynamicdialog")[0]; expect(dynamicDialogEl).toBeTruthy(); const titleEl = dynamicDialogEl.getElementsByClassName("ui-dialog-title")[0]; const testComponentHeader = dynamicDialogEl.getElementsByTagName("h2")[0]; expect(titleEl.textContent).toEqual("Demo Header"); expect(testComponentHeader.textContent).toEqual(" BluOne ROCKS! "); const escapeEvent: any = document.createEvent('CustomEvent'); escapeEvent.which = 27; escapeEvent.initEvent('keydown'); (dynamicDialogEl as HTMLDivElement).style.zIndex = DomHandler.zindex.toString(); document.dispatchEvent(escapeEvent); fixture.detectChanges(); tick(700); dynamicDialogEl = document.getElementsByClassName("ui-dynamicdialog")[0] as HTMLDivElement; expect(dynamicDialogEl).toBeUndefined(); testDynamicDialogComponent.dialogService.dialogComponentRef.destroy(); fixture.detectChanges(); })); it('should close dialog with mask click', fakeAsync(() => { fixture.detectChanges(); testDynamicDialogComponent.show(); fixture.detectChanges(); tick(300); let dynamicDialogEl = document.getElementsByClassName("ui-dynamicdialog")[0]; expect(dynamicDialogEl).toBeTruthy(); const titleEl = dynamicDialogEl.getElementsByClassName("ui-dialog-title")[0]; const testComponentHeader = dynamicDialogEl.getElementsByTagName("h2")[0]; expect(titleEl.textContent).toEqual("Demo Header"); expect(testComponentHeader.textContent).toEqual(" BluOne ROCKS! "); let maskEl = document.querySelector(".ui-dialog-mask") as HTMLElement; maskEl.click(); fixture.detectChanges(); tick(700); dynamicDialogEl = document.getElementsByClassName("ui-dynamicdialog")[0]; expect(dynamicDialogEl).toBeUndefined(); testDynamicDialogComponent.dialogService.dialogComponentRef.destroy(); fixture.detectChanges(); })); });