ソースを参照

mappers unit tests

Raanan Weber 7 年 前
コミット
46f5b7b4a0

+ 1 - 1
Viewer/src/configuration/mappers.ts

@@ -163,7 +163,7 @@ export class MapperManager {
         if (!this._mappers[type]) {
             Tools.Error("No mapper defined for " + type);
         }
-        return this._mappers[type] || this._mappers[MapperManager.DefaultMapper];
+        return this._mappers[type];
     }
 
     /**

+ 97 - 0
Viewer/tests/unit/src/configuration/mappers.ts

@@ -0,0 +1,97 @@
+import { Helper } from "../../../commons/helper";
+import { assert, expect, should } from "../viewerReference";
+import { mapperManager } from "..";
+import { IMapper } from "../../../../src/configuration/mappers";
+
+export let name = "configuration mappers";
+
+describe("Configuration mappers", () => {
+
+    it("should have html, json and dom mappers", (done) => {
+        assert.isDefined(mapperManager);
+        assert.isDefined(mapperManager.getMapper("html"));
+        assert.isDefined(mapperManager.getMapper("json"));
+        assert.isDefined(mapperManager.getMapper("dom"));
+        done();
+    });
+
+    it("should map html elements correctly", (done) => {
+        let htmlMappers = mapperManager.getMapper("html");
+
+        let randomNumber = Math.random();
+        let randomString = "test-" + Math.random();
+        let htmlString = `<test-element model.rotation-offset-angle="${randomNumber}" model.cast-shadow="true" model.id="${randomString}"></test-element>`;
+
+        var d = document.createElement('div');
+        d.innerHTML = htmlString;
+        let htmlElement = d.firstChild;
+
+        let config = htmlMappers.map(htmlElement);
+
+        if (config.model && typeof config.model === 'object') {
+            assert.equal(config.model.rotationOffsetAngle, randomNumber);
+            assert.isTrue(config.model.castShadow);
+            assert.equal(config.model.id, randomString);
+            done();
+        } else {
+            assert.fail();
+        }
+    });
+
+    it("should map dom elements correctly", (done) => {
+        let domMappers = mapperManager.getMapper("dom");
+
+        let randomNumber = Math.random();
+        let randomString = "test-" + Math.random();
+        let htmlString = `<test-element>
+    <model rotation-offset-angle="${randomNumber}" cast-shadow="true" id="${randomString}">
+    </model>
+</test-element>`;
+
+        var d = document.createElement('div');
+        d.innerHTML = htmlString;
+        let htmlElement = d.firstChild;
+
+        let config = domMappers.map(htmlElement);
+
+        if (config.model && typeof config.model === 'object') {
+            assert.equal(config.model.rotationOffsetAngle, randomNumber);
+            assert.isTrue(config.model.castShadow);
+            assert.equal(config.model.id, randomString);
+            done();
+        } else {
+            assert.fail();
+        }
+    });
+
+    it("should register a new mapper and allow to use it", (done) => {
+
+        let randomVersion = "version" + Math.random();
+        let randomName = "test" + Math.random();
+        randomName = randomName.replace(".", "");
+        let newMapper: IMapper = {
+            map: (rawSource) => {
+                return {
+                    version: randomVersion
+                }
+            }
+        }
+
+        console.log("Next error log is expected");
+
+        assert.isUndefined(mapperManager.getMapper(randomName));
+
+        mapperManager.registerMapper(randomName, newMapper);
+
+        let mapperTest = mapperManager.getMapper(randomName);
+        assert.isDefined(mapperTest);
+        assert.equal(mapperTest, newMapper);
+
+        let config = mapperTest.map("");
+
+        assert.equal(config.version, randomVersion);
+        done();
+
+    });
+
+});

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

@@ -4,4 +4,5 @@ if (window && !window['validation']) {
 }
 import './viewer/viewer';
 import './viewer/viewerManager';
+import './configuration/mappers';
 export * from '../../../src'