import { Subject } from "rxjs"; import { ContainerMockCreator } from "../helper/ContainerMockCreator"; import { NavigatorMockCreator } from "../helper/NavigatorMockCreator"; import { EventEmitter } from "../../src/util/EventEmitter"; import { Observer } from "../../src/viewer/Observer"; import { Viewer } from "../../src/viewer/Viewer"; import { ViewerDataLoadingEvent } from "../../src/viewer/events/ViewerDataLoadingEvent"; describe("Observer.ctor", () => { it("should be defined", () => { const viewer = new EventEmitter(); const observer = new Observer( viewer, new NavigatorMockCreator().create(), new ContainerMockCreator().create()); expect(observer).toBeDefined(); }); }); describe("Observer.dataloading", () => { it("should emit loading when not started", (done: Function) => { const viewer = new EventEmitter(); const navigatorMock = new NavigatorMockCreator().create(); const observer = new Observer( viewer, navigatorMock, new ContainerMockCreator().create()); expect(observer).toBeDefined(); viewer.on( "dataloading", (event: ViewerDataLoadingEvent) => { expect(event.loading).toBe(true); done(); }); (>navigatorMock.loadingService.loading$).next(true); }); it("should emit loading when started", (done: Function) => { const viewer = new EventEmitter(); const navigatorMock = new NavigatorMockCreator().create(); const observer = new Observer( viewer, navigatorMock, new ContainerMockCreator().create()); viewer.on( "dataloading", (event: ViewerDataLoadingEvent) => { expect(event.loading).toBe(true); done(); }); observer.startEmit(); (>navigatorMock.loadingService.loading$).next(true); }); it("should emit loading when started and stopped", (done: Function) => { const viewer = new EventEmitter(); const navigatorMock = new NavigatorMockCreator().create(); const observer = new Observer( viewer, navigatorMock, new ContainerMockCreator().create()); viewer.on( "dataloading", (event: ViewerDataLoadingEvent) => { expect(event.loading).toBe(true); done(); }); observer.startEmit(); observer.stopEmit(); (>navigatorMock.loadingService.loading$).next(true); }); });