UNPKG

scandit-sdk

Version:

Scandit Barcode Scanner SDK for the Web

353 lines 20.4 kB
"use strict"; var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); /* tslint:disable:no-implicit-dependencies no-any */ /** * BarcodePickerGui tests */ var ava_1 = tslib_1.__importDefault(require("ava")); var sinon = tslib_1.__importStar(require("sinon")); var __1 = require(".."); var barcodePickerGui_1 = require("./barcodePickerGui"); var defaultBarcodePickerGuiOptions = { scanner: sinon.createStubInstance(__1.Scanner, { getScanSettings: new __1.ScanSettings() }), originElement: document.createElement("div"), singleImageMode: false, scanningPaused: false, visible: true, guiStyle: __1.BarcodePicker.GuiStyle.LASER, videoFit: __1.BarcodePicker.ObjectFit.CONTAIN, laserArea: undefined, viewfinderArea: undefined, cameraUploadCallback: function () { return Promise.resolve(); }, hideLogo: false }; function defineConfigurableProperty(object, property, value) { Object.defineProperty(object, property, { value: value, configurable: true }); } ava_1.default("constructor & destroy", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var gui; return tslib_1.__generator(this, function (_a) { gui = new barcodePickerGui_1.BarcodePickerGui(tslib_1.__assign({}, defaultBarcodePickerGuiOptions, { visible: false })); gui.destroy(); t.pass(); __1.BrowserHelper.userAgentInfo.setUA("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) " + "AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.2 Safari/605.1.15"); gui = new barcodePickerGui_1.BarcodePickerGui(tslib_1.__assign({}, defaultBarcodePickerGuiOptions, { singleImageMode: true, scanningPaused: true, guiStyle: __1.BarcodePicker.GuiStyle.VIEWFINDER, videoFit: __1.BarcodePicker.ObjectFit.COVER, hideLogo: true })); gui.destroy(); t.pass(); return [2 /*return*/]; }); }); }); ava_1.default("constructor visible option & isVisible & setVisible", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var gui; return tslib_1.__generator(this, function (_a) { gui = new barcodePickerGui_1.BarcodePickerGui(defaultBarcodePickerGuiOptions); t.true(gui.isVisible()); gui.setVisible(false); t.false(gui.isVisible()); gui.setVisible(true); t.true(gui.isVisible()); gui = new barcodePickerGui_1.BarcodePickerGui(tslib_1.__assign({}, defaultBarcodePickerGuiOptions, { visible: false, guiStyle: __1.BarcodePicker.GuiStyle.VIEWFINDER })); t.false(gui.isVisible()); gui.setVisible(true); t.true(gui.isVisible()); return [2 /*return*/]; }); }); }); ava_1.default("constructor guiStyle option & setGuiStyle", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var gui; return tslib_1.__generator(this, function (_a) { gui = new barcodePickerGui_1.BarcodePickerGui(defaultBarcodePickerGuiOptions); t.is(gui.guiStyle, __1.BarcodePicker.GuiStyle.LASER); t.false(gui.laserContainerElement.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); t.true(gui.viewfinderElement.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); gui.setGuiStyle(__1.BarcodePicker.GuiStyle.VIEWFINDER); t.is(gui.guiStyle, __1.BarcodePicker.GuiStyle.VIEWFINDER); t.true(gui.laserContainerElement.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); t.false(gui.viewfinderElement.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); gui.setGuiStyle(__1.BarcodePicker.GuiStyle.NONE); t.is(gui.guiStyle, __1.BarcodePicker.GuiStyle.NONE); t.true(gui.laserContainerElement.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); t.true(gui.viewfinderElement.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); gui.setGuiStyle(__1.BarcodePicker.GuiStyle.VIEWFINDER); t.is(gui.guiStyle, __1.BarcodePicker.GuiStyle.VIEWFINDER); gui.setGuiStyle("invalid"); t.is(gui.guiStyle, __1.BarcodePicker.GuiStyle.NONE); t.true(gui.laserContainerElement.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); t.true(gui.viewfinderElement.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); gui = new barcodePickerGui_1.BarcodePickerGui(tslib_1.__assign({}, defaultBarcodePickerGuiOptions, { singleImageMode: true })); gui.flashGUI(); t.is(gui.guiStyle, __1.BarcodePicker.GuiStyle.NONE); gui.setGuiStyle(__1.BarcodePicker.GuiStyle.LASER); t.is(gui.guiStyle, __1.BarcodePicker.GuiStyle.NONE); return [2 /*return*/]; }); }); }); ava_1.default("reassignOriginElement", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var originElement1, originElement2, gui; return tslib_1.__generator(this, function (_a) { originElement1 = document.createElement("div"); originElement2 = document.createElement("div"); gui = new barcodePickerGui_1.BarcodePickerGui(tslib_1.__assign({}, defaultBarcodePickerGuiOptions, { originElement: originElement1 })); t.deepEqual(gui.originElement, originElement1); gui.reassignOriginElement(originElement2); t.deepEqual(gui.originElement, originElement2); gui.setVisible(false); gui.reassignOriginElement(originElement1); t.deepEqual(gui.originElement, originElement1); t.true(originElement1.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); t.false(originElement2.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); gui.reassignOriginElement(originElement2); t.deepEqual(gui.originElement, originElement2); t.false(originElement1.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); t.true(originElement2.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); return [2 /*return*/]; }); }); }); ava_1.default("flashGUI", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var gui, flashLaserSpy, flashViewfinderSpy; return tslib_1.__generator(this, function (_a) { gui = new barcodePickerGui_1.BarcodePickerGui(tslib_1.__assign({}, defaultBarcodePickerGuiOptions, { guiStyle: __1.BarcodePicker.GuiStyle.NONE })); flashLaserSpy = sinon.spy(gui, "flashLaser"); flashViewfinderSpy = sinon.spy(gui, "flashViewfinder"); t.is(flashLaserSpy.callCount, 0); t.is(flashViewfinderSpy.callCount, 0); gui.flashGUI(); t.is(flashLaserSpy.callCount, 0); t.is(flashViewfinderSpy.callCount, 0); gui.setGuiStyle(__1.BarcodePicker.GuiStyle.LASER); gui.flashGUI(); t.is(flashLaserSpy.callCount, 1); t.is(flashViewfinderSpy.callCount, 0); gui.setGuiStyle(__1.BarcodePicker.GuiStyle.VIEWFINDER); gui.flashGUI(); t.is(flashLaserSpy.callCount, 1); t.is(flashViewfinderSpy.callCount, 1); return [2 /*return*/]; }); }); }); ava_1.default("setCameraSwitcherVisible", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var gui; return tslib_1.__generator(this, function (_a) { gui = new barcodePickerGui_1.BarcodePickerGui(defaultBarcodePickerGuiOptions); gui.setCameraSwitcherVisible(false); t.true(gui.cameraSwitcherElement.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); gui.setCameraSwitcherVisible(true); t.false(gui.cameraSwitcherElement.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); return [2 /*return*/]; }); }); }); ava_1.default("setTorchTogglerVisible", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var gui; return tslib_1.__generator(this, function (_a) { gui = new barcodePickerGui_1.BarcodePickerGui(defaultBarcodePickerGuiOptions); gui.setTorchTogglerVisible(false); t.true(gui.torchTogglerElement.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); gui.setTorchTogglerVisible(true); t.false(gui.torchTogglerElement.classList.contains(barcodePickerGui_1.BarcodePickerGui.hiddenClassName)); return [2 /*return*/]; }); }); }); ava_1.default("resize video", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var scanSettings, scanner, originElement, gui; return tslib_1.__generator(this, function (_a) { scanSettings = new __1.ScanSettings(); scanner = sinon.createStubInstance(__1.Scanner, { getScanSettings: scanSettings }); originElement = document.createElement("div"); gui = new barcodePickerGui_1.BarcodePickerGui(tslib_1.__assign({}, defaultBarcodePickerGuiOptions, { originElement: originElement, scanner: scanner })); // No video dimensions available yet t.is(gui.parentElement.style.maxWidth, ""); t.is(gui.parentElement.style.maxHeight, ""); defineConfigurableProperty(originElement, "clientWidth", 100); defineConfigurableProperty(originElement, "clientHeight", 100); defineConfigurableProperty(gui.videoElement, "videoWidth", 100); defineConfigurableProperty(gui.videoElement, "videoHeight", 100); gui.setVideoFit(__1.BarcodePicker.ObjectFit.CONTAIN); t.is(gui.parentElement.style.maxWidth, "100px"); t.is(gui.parentElement.style.maxHeight, "100px"); defineConfigurableProperty(originElement, "clientWidth", 100); defineConfigurableProperty(originElement, "clientHeight", 50); gui.resize(); t.is(gui.parentElement.style.maxWidth, "50px"); t.is(gui.parentElement.style.maxHeight, "50px"); defineConfigurableProperty(originElement, "clientWidth", 25); defineConfigurableProperty(originElement, "clientHeight", 100); gui.resize(); t.is(gui.parentElement.style.maxWidth, "25px"); t.is(gui.parentElement.style.maxHeight, "25px"); defineConfigurableProperty(originElement, "clientWidth", 100); defineConfigurableProperty(originElement, "clientHeight", 100); gui.resize(); t.is(gui.parentElement.style.maxWidth, "100px"); t.is(gui.parentElement.style.maxHeight, "100px"); gui.setVideoFit(__1.BarcodePicker.ObjectFit.COVER); t.deepEqual(scanSettings.getBaseSearchArea(), { x: 0, y: 0, width: 1, height: 1 }); t.is(gui.parentElement.style.maxWidth, ""); t.is(gui.parentElement.style.maxHeight, ""); defineConfigurableProperty(gui.videoElement, "videoWidth", 200); defineConfigurableProperty(gui.videoElement, "videoHeight", 100); gui.setVideoFit(__1.BarcodePicker.ObjectFit.CONTAIN); t.is(gui.parentElement.style.maxWidth, "100px"); t.is(gui.parentElement.style.maxHeight, "50px"); gui.setVideoFit(__1.BarcodePicker.ObjectFit.COVER); t.deepEqual(scanSettings.getBaseSearchArea(), { x: 0.25, y: 0, width: 0.5, height: 1 }); t.is(gui.parentElement.style.maxWidth, ""); t.is(gui.parentElement.style.maxHeight, ""); defineConfigurableProperty(gui.videoElement, "videoWidth", 100); defineConfigurableProperty(gui.videoElement, "videoHeight", 200); gui.setVideoFit(__1.BarcodePicker.ObjectFit.CONTAIN); t.is(gui.parentElement.style.maxWidth, "50px"); t.is(gui.parentElement.style.maxHeight, "100px"); gui.setVideoFit(__1.BarcodePicker.ObjectFit.COVER); t.deepEqual(scanSettings.getBaseSearchArea(), { x: 0, y: 0.25, width: 1, height: 0.5 }); t.is(gui.parentElement.style.maxWidth, ""); t.is(gui.parentElement.style.maxHeight, ""); return [2 /*return*/]; }); }); }); ava_1.default("resize singleImage", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var originElement, gui; return tslib_1.__generator(this, function (_a) { originElement = document.createElement("div"); gui = new barcodePickerGui_1.BarcodePickerGui(tslib_1.__assign({}, defaultBarcodePickerGuiOptions, { originElement: originElement, singleImageMode: true })); t.is(gui.cameraUploadLabelElement.style.transform, "scale(0)"); defineConfigurableProperty(originElement, "clientWidth", 500); defineConfigurableProperty(originElement, "clientHeight", 300); gui.resize(); t.is(gui.cameraUploadLabelElement.style.transform, "scale(1)"); defineConfigurableProperty(originElement, "clientWidth", 1000); defineConfigurableProperty(originElement, "clientHeight", 600); gui.resize(); t.is(gui.cameraUploadLabelElement.style.transform, "scale(1)"); defineConfigurableProperty(originElement, "clientWidth", 250); gui.resize(); t.is(gui.cameraUploadLabelElement.style.transform, "scale(0.5)"); defineConfigurableProperty(originElement, "clientHeight", 30); gui.resize(); t.is(gui.cameraUploadLabelElement.style.transform, "scale(0.1)"); defineConfigurableProperty(originElement, "clientWidth", 5); gui.resize(); t.is(gui.cameraUploadLabelElement.style.transform, "scale(0.01)"); return [2 /*return*/]; }); }); }); // tslint:disable-next-line:max-func-body-length ava_1.default("cameraUploadFile", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { function base64StringtoPngFile(base64String) { var byteString = atob(base64String); var byteArray = new Uint8ClampedArray(byteString.length); for (var i = 0; i < byteString.length; i++) { byteArray[i] = byteString.charCodeAt(i); } return new File([byteArray], "/test", { type: "image/png" }); } var imageSettings, scanner, gui, fileList; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: scanner = sinon.createStubInstance(__1.Scanner, { getScanSettings: new __1.ScanSettings(), getImageSettings: sinon.stub().callsFake(function () { return imageSettings; }), applyImageSettings: sinon.stub().callsFake(function (newImageSettings) { imageSettings = newImageSettings; return scanner; }) }); gui = new barcodePickerGui_1.BarcodePickerGui(tslib_1.__assign({}, defaultBarcodePickerGuiOptions, { scanner: scanner, singleImageMode: true })); Object.defineProperty(Image.prototype, "onprogress", { set: function (value) { value(new ProgressEvent("progress", { loaded: 0, total: 100, lengthComputable: true })); } }); gui.cameraUploadFile(); fileList = [ // 4x4 white image base64StringtoPngFile("iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAQAAAAD+Fb1AAAAEElEQVR42mP8/58BDBhxMwCn1gf9tpc9tgAAAABJRU5ErkJggg==") ]; defineConfigurableProperty(gui.cameraUploadInputElement, "files", fileList); gui.cameraUploadFile(); return [4 /*yield*/, new Promise(function (resolve) { setTimeout(resolve, 200); })]; case 1: _a.sent(); t.deepEqual(scanner.getImageSettings(), { width: 4, height: 4, format: __1.ImageSettings.Format.RGBA_8U }); fileList = [ // 1600x100 white image base64StringtoPngFile( // tslint:disable-next-line:max-line-length "iVBORw0KGgoAAAANSUhEUgAABkAAAABkCAQAAAB06DQ2AAABz0lEQVR42u3XQREAAAgDINc/9Czh+YIWpB0AAIAXERAAAEBAAAAAAQEAABAQAABAQAAAAAQEAAAQEAAAQEAAAAAEBAAAEBAAAAABAQAABAQAABAQAAAAAQEAAAQEAABAQAAAAAEBAAAEBAAAQEAAAAABAQAAEBAAAEBAAAAAAQEAABAQAABAQAAAAAQEAAAQEAAAQEAAAAAEBAAAEBAAAAABAQAABAQAAEBAAAAAAQEAAAQEAABAQAAAAAEBAAAQEAAAQEAAAAABAQAAEBAAAEBAAAAABAQAABAQAABAQAAAAAQEAAAQEAAAAAEBAAAEBAAAEBAAAAABAQAABAQAAEBAAAAAAQEAAAQEAABAQAAAAAEBAAAQEAAAQEAAAAAEBAAAEBAAAEBAAAAABAQAABAQAAAAAQEAAAQEAAAQEAAAAAEBAAAEBAAAQEAAAAABAQAABAQAAEBAAAAAAQEAABAQAABAQAAAAAEBAAAQEAAAQEAAAAAEBAAAEBAAAEBAAAAABAQAABAQAAAAAQEAAAQEAAAQEAEBAAAEBAAAEBAAAAABAQAABAQAAEBAAAAAAQEAAAQEAABAQAAAAAEBAAAQEAAAQEAAAAABAQAAuLNeC8edzcWfbQAAAABJRU5ErkJggg==") ]; defineConfigurableProperty(gui.cameraUploadInputElement, "files", fileList); gui.cameraUploadFile(); return [4 /*yield*/, new Promise(function (resolve) { setTimeout(resolve, 200); })]; case 2: _a.sent(); t.deepEqual(scanner.getImageSettings(), { width: 1440, height: 90, format: __1.ImageSettings.Format.RGBA_8U }); fileList = [ // 100x1600 white image base64StringtoPngFile( // tslint:disable-next-line:max-line-length "iVBORw0KGgoAAAANSUhEUgAAAGQAAAZACAQAAAAlBi/FAAAE+UlEQVR42u3PAQ0AAAgDIN8/9M2hgwaknRciIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiJy2QLJ03p1wqRRzwAAAABJRU5ErkJggg==") ]; defineConfigurableProperty(gui.cameraUploadInputElement, "files", fileList); gui.cameraUploadFile(); return [4 /*yield*/, new Promise(function (resolve) { setTimeout(resolve, 200); })]; case 3: _a.sent(); t.deepEqual(scanner.getImageSettings(), { width: 90, height: 1440, format: __1.ImageSettings.Format.RGBA_8U }); return [2 /*return*/]; } }); }); }); //# sourceMappingURL=barcodePickerGui.spec.js.map