import { TestBed, ComponentFixture, fakeAsync, tick } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { Toast, ToastItem } from './toast'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { Component } from '@angular/core'; import { MessageService } from "mirra-ui/api"; @Component({ template: ` `, providers: [MessageService] }) class TestToastComponent { constructor(private messageService: MessageService) {} showDefaultToast(severity){ this.messageService.add({severity: severity, summary: "summary", detail: "detail"}); } showWithKey(key) { this.messageService.add({key: key, severity:'warn', summary:'Are you sure?', detail:'Confirm to proceed'}); } showMultipleToast() { this.messageService.addAll([ {severity:'warn', summary:'Are you sure?', detail:'Confirm to proceed'}, {severity:'warn', summary:'Are you sure?', detail:'Confirm to proceed'} ]); } onClearWithKey(key) { this.messageService.clear(key); } onClear() { this.messageService.clear(); } } describe('Toast', () => { let toast: Toast; let fixture: ComponentFixture; let component: TestToastComponent; beforeEach(() => { TestBed.configureTestingModule({ imports: [ NoopAnimationsModule ], declarations: [ Toast, ToastItem, TestToastComponent ], }); fixture = TestBed.createComponent(TestToastComponent); toast = fixture.debugElement.children[0].componentInstance; component = fixture.componentInstance; }); it('should create container', () => { fixture.detectChanges(); const toastContainer = fixture.debugElement.query(By.css('.ui-toast')); expect(toastContainer.nativeElement).toBeTruthy(); }); it('should create success toast', () => { toast.modal = true; fixture.detectChanges(); component.showDefaultToast('success'); fixture.detectChanges(); const toastMessage = fixture.debugElement.query(By.css('.ui-toast-message')); expect(toastMessage.nativeElement).toBeTruthy(); expect(toastMessage.nativeElement.classList).toContain("ui-toast-message-success"); }); it('should close toast', () => { toast.modal = true; fixture.detectChanges(); component.showDefaultToast('success'); fixture.detectChanges(); let toastMessage = fixture.debugElement.query(By.css('.ui-toast-message')); expect(toastMessage.nativeElement).toBeTruthy(); expect(toastMessage.nativeElement.classList).toContain("ui-toast-message-success"); const closeEl = fixture.debugElement.query(By.css(".ui-toast-close-icon")); toastMessage.nativeElement.dispatchEvent(new Event("mouseenter")); toastMessage.nativeElement.dispatchEvent(new Event("mouseleave")); closeEl.nativeElement.click(); fixture.detectChanges(); Promise.resolve(null).then(() => { toastMessage = fixture.debugElement.query(By.css('.ui-toast-message')); expect(toastMessage).toBeFalsy(); }); }); it('should create warn toast with key', () => { toast.key = "vv"; fixture.detectChanges(); component.showWithKey('vv'); fixture.detectChanges(); let toastMessage = fixture.debugElement.query(By.css('.ui-toast-message')); expect(toastMessage.nativeElement).toBeTruthy(); expect(toastMessage.nativeElement.classList).toContain("ui-toast-message-warn"); }); it('should clear toast', () => { toast.modal = true; fixture.detectChanges(); component.showDefaultToast('success'); fixture.detectChanges(); let toastMessage = fixture.debugElement.query(By.css('.ui-toast-message')); expect(toastMessage.nativeElement).toBeTruthy(); expect(toastMessage.nativeElement.classList).toContain("ui-toast-message-success"); component.onClear(); fixture.detectChanges(); Promise.resolve(null).then(() => { toastMessage = fixture.debugElement.query(By.css('.ui-toast-message')); expect(toastMessage).toBeFalsy(); }); }); it('should clear toast with key', () => { toast.key = "vv"; toast.modal = true; fixture.detectChanges(); component.showWithKey('vv'); fixture.detectChanges(); let toastMessage = fixture.debugElement.query(By.css('.ui-toast-message')); expect(toastMessage.nativeElement).toBeTruthy(); expect(toastMessage.nativeElement.classList).toContain("ui-toast-message-warn"); component.onClearWithKey('vv'); fixture.detectChanges(); Promise.resolve(null).then(() => { toastMessage = fixture.debugElement.query(By.css('.ui-toast-message')); expect(toastMessage).toBeFalsy(); }); }); it('should create multiple toast', () => { toast.modal = true; fixture.detectChanges(); component.showMultipleToast(); fixture.detectChanges(); const toastMessage = fixture.debugElement.queryAll(By.css('.ui-toast-message')); expect(toastMessage.length).toEqual(2); }); });