Przeglądaj źródła

viewerManager tests

Raanan Weber 7 lat temu
rodzic
commit
8d1c518e94

+ 4 - 2
Viewer/src/viewer/viewer.ts

@@ -232,14 +232,16 @@ export abstract class AbstractViewer {
      * Is the engine currently set to rende even when the page is in background
      */
     public get renderInBackground() {
-        return this.engine.renderEvenInBackground;
+        return this.engine && this.engine.renderEvenInBackground;
     }
 
     /**
      * Set the viewer's background rendering flag.
      */
     public set renderInBackground(value: boolean) {
-        this.engine.renderEvenInBackground = value;
+        if (this.engine) {
+            this.engine.renderEvenInBackground = value;
+        }
     }
 
     /**

+ 5 - 0
Viewer/src/viewer/viewerManager.ts

@@ -98,9 +98,14 @@ export class ViewerManager {
      * dispose the manager and all of its associated viewers
      */
     public dispose() {
+        delete this._onViewerAdded;
+
         for (let id in this._viewers) {
             this._viewers[id].dispose();
         }
+
+        this.onViewerAddedObservable.clear();
+        this.onViewerRemovedObservable.clear();
     }
 }
 

+ 2 - 1
Viewer/tests/unit/src/index.ts

@@ -2,5 +2,6 @@ import { main } from '../../commons/boot';
 if (window && !window['validation']) {
     main();
 }
-export * from './viewer/viewer';
+import './viewer/viewer';
+import './viewer/viewerManager';
 export * from '../../../src'

+ 88 - 0
Viewer/tests/unit/src/viewer/viewerManager.ts

@@ -0,0 +1,88 @@
+import { Helper } from "../../../commons/helper";
+import { assert, expect, should } from "../viewerReference";
+import { DefaultViewer, AbstractViewer, Version, viewerManager } from "../../../../src";
+
+export let name = "viewer manager tests";
+
+describe('Viewer Manager', function () {
+    it("should be defined when the library is loaded", (done) => {
+        assert.isDefined(viewerManager, "viewerManager is not defined");
+        done();
+    });
+
+    it("should add and remove a viewer when viewer constructed and disposed", (done) => {
+        let element = document.createElement("div");
+        let randomString = "" + Math.random();
+        element.id = randomString;
+
+        /*let addedFlag = false;
+
+        viewerManager.onViewerAddedObservable.add((addedViewer) => {
+            assert.equal(addedViewer.baseId, randomString);
+            addedFlag = true;
+        });
+
+        viewerManager.onViewerRemovedObservable.add((viewerId) => {
+            assert.equal(randomString, viewerId);
+            if (addedFlag) {
+                done();
+            } else {
+                assert.fail();
+            }
+        });*/
+
+        assert.isUndefined(viewerManager.getViewerByHTMLElement(element));
+        assert.isUndefined(viewerManager.getViewerById(randomString));
+        let viewer = Helper.getNewViewerInstance(element);
+        assert.isDefined(viewerManager.getViewerByHTMLElement(element));
+        assert.isDefined(viewerManager.getViewerById(randomString));
+        viewer.dispose();
+        assert.isUndefined(viewerManager.getViewerByHTMLElement(element));
+        assert.isUndefined(viewerManager.getViewerById(randomString));
+        done();
+    });
+
+    it("should trigger observers when viewer constructed and disposed", (done) => {
+        let element = document.createElement("div");
+        let randomString = "" + Math.random();
+        element.id = randomString;
+
+        let addedFlag = false;
+
+        viewerManager.onViewerAddedObservable.add((addedViewer) => {
+            assert.equal(addedViewer.baseId, randomString);
+            addedFlag = true;
+        });
+
+        viewerManager.onViewerRemovedObservable.add((viewerId) => {
+            assert.equal(randomString, viewerId);
+            if (addedFlag) {
+                viewerManager.dispose();
+                done();
+            } else {
+                assert.fail();
+            }
+        });
+
+        let viewer = Helper.getNewViewerInstance(element);
+        viewer.dispose();
+    });
+
+    it("should dispose viewer(s) when disposed", (done) => {
+        let element = document.createElement("div");
+        let randomString = "" + Math.random();
+        element.id = randomString;
+
+        let viewer = Helper.getNewViewerInstance(element);
+
+        let dispose = viewer.dispose;
+
+        viewer.dispose = () => {
+            dispose.call(viewer);
+            done();
+        }
+
+        viewerManager.dispose();
+
+    });
+});