scandit-sdk
Version:
Scandit Barcode Scanner SDK for the Web
1,097 lines (1,096 loc) • 86.1 kB
JavaScript
"use strict";
/* tslint:disable:no-implicit-dependencies no-any */
/**
* BarcodePicker tests
*/
var _this = this;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var ava_1 = tslib_1.__importDefault(require("ava"));
var sinon = tslib_1.__importStar(require("sinon"));
var webworker_threads_1 = require("webworker-threads");
var __1 = require("..");
var barcodePickerCameraManager_1 = require("./barcodePickerCameraManager");
HTMLVideoElement.prototype.load = function () {
return;
};
HTMLVideoElement.prototype.play = function () {
Object.defineProperty(this, "videoWidth", {
value: 4
});
Object.defineProperty(this, "videoHeight", {
value: 4
});
this.currentTime = 1;
this.dispatchEvent(new Event("loadstart"));
this.dispatchEvent(new Event("loadeddata"));
return Promise.resolve();
};
var fakeCamera1 = {
deviceId: "1",
groupId: "1",
kind: "videoinput",
label: "Fake Camera Device (back)",
toJSON: function () {
return this;
}
};
var fakeCamera2 = {
deviceId: "2",
groupId: "1",
kind: "videoinput",
label: "Fake Camera Device (front)",
toJSON: function () {
return this;
}
};
var fakeCamera1Object = {
deviceId: fakeCamera1.deviceId,
label: fakeCamera1.label,
cameraType: __1.Camera.Type.BACK,
currentResolution: {
width: 4,
height: 4
}
};
var fakeCamera2Object = {
deviceId: fakeCamera2.deviceId,
label: fakeCamera2.label,
cameraType: __1.Camera.Type.FRONT,
currentResolution: {
width: 4,
height: 4
}
};
var sampleBarcode = {
symbology: __1.Barcode.Symbology.QR,
compositeFlag: __1.Barcode.CompositeFlag.NONE,
isGs1DataCarrier: false,
encodingArray: [],
location: {
topLeft: { x: 0, y: 0 },
topRight: { x: 1, y: 0 },
bottomRight: { x: 1, y: 1 },
bottomLeft: { x: 0, y: 1 }
},
data: "",
rawData: new Uint8Array()
};
function fakePartialCompatibleBrowser() {
__1.BrowserHelper.checkBrowserCompatibility = function () {
return {
fullSupport: false,
scannerSupport: true,
missingFeatures: [__1.BrowserCompatibility.Feature.MEDIA_DEVICES]
};
};
}
function fakeFullCompatibleBrowser(configureLibrary) {
if (configureLibrary === void 0) { configureLibrary = true; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
var mediaStreamTrack;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
mediaStreamTrack = {
stop: sinon.spy(),
addEventListener: sinon.spy(),
getSettings: function () {
return {
width: 4,
height: 4,
deviceId: "1",
facingMode: "environment"
};
}
};
Object.defineProperty(navigator, "mediaDevices", {
value: {
getUserMedia: function () {
return Promise.resolve({
getTracks: function () {
return [mediaStreamTrack];
},
getVideoTracks: function () {
return [mediaStreamTrack];
}
});
}
},
configurable: true
});
navigator.enumerateDevices = function () {
return Promise.resolve([fakeCamera1, fakeCamera2]);
};
URL.createObjectURL = sinon.stub();
__1.BrowserHelper.checkBrowserCompatibility = function () {
return {
fullSupport: true,
scannerSupport: true,
missingFeatures: []
};
};
if (!configureLibrary) return [3 /*break*/, 2];
return [4 /*yield*/, __1.configure("#".repeat(64))];
case 1:
_a.sent();
_a.label = 2;
case 2: return [2 /*return*/];
}
});
});
}
function wait(ms) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve) {
setTimeout(resolve, ms);
})];
});
});
}
function prepareBarcodePickerForEvents() {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var s, imageSettings, barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
s = new __1.Scanner();
imageSettings = {
width: 2,
height: 2,
format: __1.ImageSettings.Format.GRAY_8U
};
s.applyImageSettings(imageSettings);
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false,
scanner: s,
playSoundOnScan: true,
vibrateOnScan: true
})];
case 1:
barcodePicker = _a.sent();
sinon.stub(barcodePicker.barcodePickerGui, "getVideoImageData").returns(new Uint8ClampedArray(4));
s.engineWorkerOnMessage({
data: ["status", "ready"]
});
sinon.stub(s, "processImage").callsFake(function () {
return Promise.resolve(new __1.ScanResult([], new Uint8ClampedArray(4), imageSettings));
});
return [2 /*return*/, barcodePicker];
}
});
});
}
global.Worker = webworker_threads_1.Worker;
global.URL = {
createObjectURL: function () {
return __1.engineWorkerFunction;
}
};
ava_1.default.serial("constructor & destroy", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var error, barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, t.throwsAsync(__1.BarcodePicker.create(document.createElement("div")))];
case 1:
error = _a.sent();
t.is(error.name, "UnsupportedBrowserError");
return [4 /*yield*/, fakeFullCompatibleBrowser(false)];
case 2:
_a.sent();
return [4 /*yield*/, t.throwsAsync(__1.BarcodePicker.create(document.createElement("div")))];
case 3:
error = _a.sent();
t.is(error.name, "LibraryNotConfiguredError");
return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 4:
_a.sent();
return [4 /*yield*/, t.throwsAsync(__1.BarcodePicker.create("wrong-argument"))];
case 5:
error = _a.sent();
t.is(error.name, "NoOriginElementError");
return [4 /*yield*/, t.throwsAsync(__1.BarcodePicker.create({}))];
case 6:
error = _a.sent();
t.is(error.name, "NoOriginElementError");
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
singleImageMode: {
desktop: { always: true, allowFallback: true },
mobile: { always: true, allowFallback: true }
}
})];
case 7:
barcodePicker = _a.sent();
barcodePicker.destroy();
fakePartialCompatibleBrowser();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
singleImageMode: {
desktop: { always: false, allowFallback: true },
mobile: { always: false, allowFallback: true }
}
})];
case 8:
barcodePicker = _a.sent();
barcodePicker.destroy();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"))];
case 9:
barcodePicker = _a.sent();
barcodePicker.destroy(false);
barcodePicker.getScanner().destroy();
return [4 /*yield*/, t.throwsAsync(__1.BarcodePicker.create(document.createElement("div"), {
singleImageMode: {
desktop: { always: false, allowFallback: false },
mobile: { always: false, allowFallback: false }
}
}))];
case 10:
error = _a.sent();
t.is(error.name, "UnsupportedBrowserError");
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
targetScanningFPS: -1
})];
case 11:
barcodePicker = _a.sent();
barcodePicker.destroy();
t.pass();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
scanner: new __1.Scanner()
})];
case 12:
barcodePicker = _a.sent();
barcodePicker.destroy();
t.pass();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 13:
barcodePicker = _a.sent();
barcodePicker.destroy();
t.pass();
__1.BrowserHelper.userAgentInfo.setUA("Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) " +
"AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1");
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"))];
case 14:
barcodePicker = _a.sent();
barcodePicker.destroy();
t.pass();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("constructor & destroy (with fake camera)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var s, barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
s = new __1.Scanner();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
scanner: s
})];
case 2:
barcodePicker = _a.sent();
s.engineWorkerOnMessage({
data: ["status", "ready"]
});
barcodePicker.destroy();
t.pass();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("constructor interaction options", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var setInteractionOptionsSpy, barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
setInteractionOptionsSpy = sinon.spy(barcodePickerCameraManager_1.BarcodePickerCameraManager.prototype, "setInteractionOptions");
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
t.is(setInteractionOptionsSpy.callCount, 1);
t.deepEqual(setInteractionOptionsSpy.getCall(0).args, [true, true, true, true]);
barcodePicker.destroy();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false,
enableCameraSwitcher: false,
enableTorchToggle: false,
enableTapToFocus: false,
enablePinchToZoom: false
})];
case 3:
barcodePicker = _a.sent();
t.is(setInteractionOptionsSpy.callCount, 2);
t.deepEqual(setInteractionOptionsSpy.getCall(1).args, [false, false, false, false]);
barcodePicker.destroy();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false,
enableCameraSwitcher: false,
enableTorchToggle: true,
enableTapToFocus: false,
enablePinchToZoom: true
})];
case 4:
barcodePicker = _a.sent();
t.is(setInteractionOptionsSpy.callCount, 3);
t.deepEqual(setInteractionOptionsSpy.getCall(2).args, [false, true, false, true]);
barcodePicker.destroy();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false,
enableCameraSwitcher: true,
enableTorchToggle: false,
enableTapToFocus: true,
enablePinchToZoom: false
})];
case 5:
barcodePicker = _a.sent();
t.is(setInteractionOptionsSpy.callCount, 4);
t.deepEqual(setInteractionOptionsSpy.getCall(3).args, [true, false, true, false]);
barcodePicker.destroy();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("constructor scanningPaused & isScanningPaused & pauseScanning & resumeScanning (with fake camera)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var s, barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
s = new __1.Scanner();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
scanner: s
})];
case 2:
barcodePicker = _a.sent();
t.false(barcodePicker.isScanningPaused());
return [4 /*yield*/, barcodePicker.resumeScanning()];
case 3:
_a.sent();
t.false(barcodePicker.isScanningPaused());
s.engineWorkerOnMessage({
data: ["status", "ready"]
});
barcodePicker.pauseScanning();
t.true(barcodePicker.isScanningPaused());
return [4 /*yield*/, barcodePicker.resumeScanning()];
case 4:
_a.sent();
t.false(barcodePicker.isScanningPaused());
barcodePicker.destroy(false);
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
scanner: s,
scanningPaused: true
})];
case 5:
barcodePicker = _a.sent();
t.true(barcodePicker.isScanningPaused());
return [4 /*yield*/, barcodePicker.resumeScanning()];
case 6:
_a.sent();
t.false(barcodePicker.isScanningPaused());
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("accessCamera & getActiveCamera & setActiveCamera (with fake camera)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
t.is(barcodePicker.getActiveCamera(), undefined);
return [4 /*yield*/, barcodePicker.accessCamera()];
case 3:
_a.sent();
t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object);
barcodePicker.pauseScanning();
t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object);
barcodePicker.pauseScanning(true);
t.is(barcodePicker.getActiveCamera(), undefined);
return [4 /*yield*/, barcodePicker.resumeScanning()];
case 4:
_a.sent();
t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object);
return [4 /*yield*/, barcodePicker.setActiveCamera(fakeCamera2Object)];
case 5:
_a.sent();
t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera2Object);
return [4 /*yield*/, barcodePicker.setActiveCamera()];
case 6:
_a.sent();
t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object);
barcodePicker.destroy();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"))];
case 7:
barcodePicker = _a.sent();
t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object);
return [4 /*yield*/, barcodePicker.accessCamera()];
case 8:
_a.sent();
t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object);
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 9:
barcodePicker = _a.sent();
return [4 /*yield*/, barcodePicker.setActiveCamera(fakeCamera2Object)];
case 10:
_a.sent();
t.deepEqual(barcodePicker.getActiveCamera(), undefined);
return [4 /*yield*/, barcodePicker.accessCamera()];
case 11:
_a.sent();
t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera2Object);
__1.BrowserHelper.userAgentInfo.setUA("Mozilla/5.0 (Windows NT 10.0; Win64; x64) " +
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36");
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"))];
case 12:
barcodePicker = _a.sent();
t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object);
return [4 /*yield*/, barcodePicker.accessCamera()];
case 13:
_a.sent();
t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object);
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("applyCameraSettings (with fake camera)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker, cs, setSelectedCameraSettingsSpy, applyCameraSettingsSpy;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
cs = {
resolutionPreference: __1.CameraSettings.ResolutionPreference.FULL_HD
};
setSelectedCameraSettingsSpy = sinon.spy(barcodePicker.cameraManager, "setSelectedCameraSettings");
applyCameraSettingsSpy = sinon.spy(barcodePicker.cameraManager, "applyCameraSettings");
t.is(setSelectedCameraSettingsSpy.callCount, 0);
t.is(applyCameraSettingsSpy.callCount, 0);
return [4 /*yield*/, barcodePicker.applyCameraSettings(cs)];
case 3:
_a.sent();
t.is(barcodePicker.getActiveCamera(), undefined);
t.is(setSelectedCameraSettingsSpy.callCount, 1);
t.is(applyCameraSettingsSpy.callCount, 0);
t.deepEqual(setSelectedCameraSettingsSpy.getCall(0).args, [cs]);
return [4 /*yield*/, barcodePicker.applyCameraSettings()];
case 4:
_a.sent();
t.is(barcodePicker.getActiveCamera(), undefined);
t.is(setSelectedCameraSettingsSpy.callCount, 2);
t.deepEqual(setSelectedCameraSettingsSpy.getCall(1).args, [undefined]);
return [4 /*yield*/, barcodePicker.accessCamera()];
case 5:
_a.sent();
return [4 /*yield*/, barcodePicker.applyCameraSettings(cs)];
case 6:
_a.sent();
t.is(applyCameraSettingsSpy.callCount, 1);
t.deepEqual(applyCameraSettingsSpy.getCall(0).args, [cs]);
barcodePicker.destroy();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("constructor scanSettings & applyScanSettings", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var s, barcodePicker, ss, applyScanSettingsSpy;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
s = new __1.Scanner();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false,
scanner: s
})];
case 2:
barcodePicker = _a.sent();
ss = new __1.ScanSettings({
enabledSymbologies: __1.Barcode.Symbology.QR,
codeDuplicateFilter: 10,
maxNumberOfCodesPerFrame: 10,
searchArea: { x: 0.5, y: 0.5, width: 0.5, height: 0.1 }
});
applyScanSettingsSpy = sinon.spy(s, "applyScanSettings");
t.is(applyScanSettingsSpy.callCount, 0);
barcodePicker.applyScanSettings(ss);
t.is(applyScanSettingsSpy.callCount, 1);
t.deepEqual(applyScanSettingsSpy.getCall(0).args, [ss]);
barcodePicker.destroy(false);
applyScanSettingsSpy.resetHistory();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false,
scanner: s,
scanSettings: ss
})];
case 3:
barcodePicker = _a.sent();
t.deepEqual(applyScanSettingsSpy.getCall(0).args, [ss]);
barcodePicker.destroy();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("isVisible & setVisible", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
t.true(barcodePicker.isVisible());
barcodePicker.setVisible(false);
t.false(barcodePicker.isVisible());
barcodePicker.setVisible(true);
t.true(barcodePicker.isVisible());
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false,
visible: false
})];
case 3:
barcodePicker = _a.sent();
t.false(barcodePicker.isVisible());
barcodePicker.setVisible(true);
t.true(barcodePicker.isVisible());
barcodePicker.destroy();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("isMirrorImageEnabled & setMirrorImageEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
t.false(barcodePicker.isMirrorImageEnabled());
barcodePicker.setMirrorImageEnabled(true);
t.false(barcodePicker.isMirrorImageEnabled()); // No camera has been accessed yet
return [4 /*yield*/, barcodePicker.accessCamera()];
case 3:
_a.sent();
t.false(barcodePicker.isMirrorImageEnabled());
barcodePicker.setMirrorImageEnabled(true);
t.true(barcodePicker.isMirrorImageEnabled());
return [4 /*yield*/, barcodePicker.setActiveCamera(fakeCamera2Object)];
case 4:
_a.sent();
t.true(barcodePicker.isMirrorImageEnabled()); // Front camera
barcodePicker.setMirrorImageEnabled(false);
t.false(barcodePicker.isMirrorImageEnabled());
return [4 /*yield*/, barcodePicker.setActiveCamera()];
case 5:
_a.sent();
t.true(barcodePicker.isMirrorImageEnabled());
return [4 /*yield*/, barcodePicker.setActiveCamera(fakeCamera2Object)];
case 6:
_a.sent();
t.false(barcodePicker.isMirrorImageEnabled());
barcodePicker.destroy();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
camera: fakeCamera2Object
})];
case 7:
barcodePicker = _a.sent();
t.true(barcodePicker.isMirrorImageEnabled());
barcodePicker.setMirrorImageEnabled(false);
t.false(barcodePicker.isMirrorImageEnabled());
barcodePicker.destroy();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
camera: fakeCamera2Object
})];
case 8:
barcodePicker = _a.sent();
t.true(barcodePicker.isMirrorImageEnabled());
barcodePicker.pauseScanning(true);
t.false(barcodePicker.isMirrorImageEnabled());
barcodePicker.setMirrorImageEnabled(true);
t.false(barcodePicker.isMirrorImageEnabled());
return [4 /*yield*/, barcodePicker.resumeScanning()];
case 9:
_a.sent();
t.true(barcodePicker.isMirrorImageEnabled());
barcodePicker.pauseScanning(true);
return [4 /*yield*/, barcodePicker.setActiveCamera(fakeCamera1Object)];
case 10:
_a.sent();
t.false(barcodePicker.isMirrorImageEnabled());
return [4 /*yield*/, barcodePicker.resumeScanning()];
case 11:
_a.sent();
t.false(barcodePicker.isMirrorImageEnabled());
barcodePicker.destroy();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("isPlaySoundOnScanEnabled & setPlaySoundOnScanEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
t.false(barcodePicker.isPlaySoundOnScanEnabled());
barcodePicker.setPlaySoundOnScanEnabled(true);
t.true(barcodePicker.isPlaySoundOnScanEnabled());
barcodePicker.setPlaySoundOnScanEnabled(false);
t.false(barcodePicker.isPlaySoundOnScanEnabled());
barcodePicker.destroy();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false,
playSoundOnScan: true
})];
case 3:
barcodePicker = _a.sent();
t.true(barcodePicker.isPlaySoundOnScanEnabled());
barcodePicker.setPlaySoundOnScanEnabled(false);
t.false(barcodePicker.isPlaySoundOnScanEnabled());
barcodePicker.destroy();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("isVibrateOnScanEnabled & setVibrateOnScanEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
t.false(barcodePicker.isVibrateOnScanEnabled());
barcodePicker.setVibrateOnScanEnabled(true);
t.true(barcodePicker.isVibrateOnScanEnabled());
barcodePicker.setVibrateOnScanEnabled(false);
t.false(barcodePicker.isVibrateOnScanEnabled());
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false,
vibrateOnScan: true
})];
case 3:
barcodePicker = _a.sent();
t.true(barcodePicker.isVibrateOnScanEnabled());
barcodePicker.setVibrateOnScanEnabled(false);
t.false(barcodePicker.isVibrateOnScanEnabled());
barcodePicker.destroy();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("isCameraSwitcherEnabled & setCameraSwitcherEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
t.true(barcodePicker.isCameraSwitcherEnabled());
barcodePicker.setCameraSwitcherEnabled(false);
t.false(barcodePicker.isCameraSwitcherEnabled());
barcodePicker.setCameraSwitcherEnabled(true);
t.true(barcodePicker.isCameraSwitcherEnabled());
barcodePicker.destroy();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("isTorchToggleEnabled & setTorchToggleEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
t.true(barcodePicker.isTorchToggleEnabled());
barcodePicker.setTorchToggleEnabled(false);
t.false(barcodePicker.isTorchToggleEnabled());
barcodePicker.setTorchToggleEnabled(true);
t.true(barcodePicker.isTorchToggleEnabled());
barcodePicker.destroy();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("isTapToFocusEnabled & setTapToFocusEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
t.true(barcodePicker.isTapToFocusEnabled());
barcodePicker.setTapToFocusEnabled(false);
t.false(barcodePicker.isTapToFocusEnabled());
barcodePicker.setTapToFocusEnabled(true);
t.true(barcodePicker.isTapToFocusEnabled());
barcodePicker.destroy();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("isPinchToZoomEnabled & setPinchToZoomEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
t.true(barcodePicker.isPinchToZoomEnabled());
barcodePicker.setPinchToZoomEnabled(false);
t.false(barcodePicker.isPinchToZoomEnabled());
barcodePicker.setPinchToZoomEnabled(true);
t.true(barcodePicker.isPinchToZoomEnabled());
barcodePicker.destroy();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("setTorchEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
barcodePicker.setTorchEnabled(true);
barcodePicker.setTorchEnabled(false);
barcodePicker.destroy();
t.pass();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("setZoom", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
barcodePicker.setZoom(0.1);
barcodePicker.setZoom(1);
barcodePicker.destroy();
t.pass();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("constructor guiStyle option & setGuiStyle", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker, setGuiStyleSpy;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
setGuiStyleSpy = sinon.spy(barcodePicker.barcodePickerGui, "setGuiStyle");
t.is(barcodePicker.barcodePickerGui.guiStyle, __1.BarcodePicker.GuiStyle.LASER);
barcodePicker.setGuiStyle(__1.BarcodePicker.GuiStyle.NONE);
t.is(setGuiStyleSpy.callCount, 1);
t.deepEqual(setGuiStyleSpy.getCall(0).args, [__1.BarcodePicker.GuiStyle.NONE]);
barcodePicker.setGuiStyle(__1.BarcodePicker.GuiStyle.LASER);
t.is(setGuiStyleSpy.callCount, 2);
t.deepEqual(setGuiStyleSpy.getCall(1).args, [__1.BarcodePicker.GuiStyle.LASER]);
barcodePicker.setGuiStyle(__1.BarcodePicker.GuiStyle.VIEWFINDER);
t.is(setGuiStyleSpy.callCount, 3);
t.deepEqual(setGuiStyleSpy.getCall(2).args, [__1.BarcodePicker.GuiStyle.VIEWFINDER]);
barcodePicker.setGuiStyle(__1.BarcodePicker.GuiStyle.NONE);
t.is(setGuiStyleSpy.callCount, 4);
t.deepEqual(setGuiStyleSpy.getCall(3).args, [__1.BarcodePicker.GuiStyle.NONE]);
barcodePicker.destroy();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false,
guiStyle: __1.BarcodePicker.GuiStyle.NONE
})];
case 3:
barcodePicker = _a.sent();
t.is(barcodePicker.barcodePickerGui.guiStyle, __1.BarcodePicker.GuiStyle.NONE);
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("constructor videoFit option & setVideoFit", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker, setVideoFitSpy;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
setVideoFitSpy = sinon.spy(barcodePicker.barcodePickerGui, "setVideoFit");
t.is(barcodePicker.barcodePickerGui.videoFit, __1.BarcodePicker.ObjectFit.CONTAIN);
barcodePicker.setVideoFit(__1.BarcodePicker.ObjectFit.COVER);
t.is(setVideoFitSpy.callCount, 1);
t.deepEqual(setVideoFitSpy.getCall(0).args, [__1.BarcodePicker.ObjectFit.COVER]);
barcodePicker.setVideoFit(__1.BarcodePicker.ObjectFit.CONTAIN);
t.is(setVideoFitSpy.callCount, 2);
t.deepEqual(setVideoFitSpy.getCall(1).args, [__1.BarcodePicker.ObjectFit.CONTAIN]);
barcodePicker.destroy();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false,
videoFit: __1.BarcodePicker.ObjectFit.COVER
})];
case 3:
barcodePicker = _a.sent();
t.is(barcodePicker.barcodePickerGui.videoFit, __1.BarcodePicker.ObjectFit.COVER);
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("constructor laserArea option & setLaserArea", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker, setLaserAreaSpy;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
setLaserAreaSpy = sinon.spy(barcodePicker.barcodePickerGui, "setLaserArea");
t.is(barcodePicker.barcodePickerGui.customLaserArea, undefined);
barcodePicker.setLaserArea({
x: 0.25,
y: 0.25,
width: 0.5,
height: 0.5
});
t.is(setLaserAreaSpy.callCount, 1);
t.deepEqual(setLaserAreaSpy.getCall(0).args, [
{
x: 0.25,
y: 0.25,
width: 0.5,
height: 0.5
}
]);
barcodePicker.setLaserArea();
t.is(setLaserAreaSpy.callCount, 2);
t.deepEqual(setLaserAreaSpy.getCall(1).args, [undefined]);
barcodePicker.destroy();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false,
laserArea: {
x: 0.25,
y: 0.25,
width: 0.5,
height: 0.5
}
})];
case 3:
barcodePicker = _a.sent();
t.deepEqual(barcodePicker.barcodePickerGui.customLaserArea, {
x: 0.25,
y: 0.25,
width: 0.5,
height: 0.5
});
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("constructor viewfinderArea option & setViewfinderArea", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker, setViewfinderAreaSpy;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
setViewfinderAreaSpy = sinon.spy(barcodePicker.barcodePickerGui, "setViewfinderArea");
t.is(barcodePicker.barcodePickerGui.customViewfinderArea, undefined);
barcodePicker.setViewfinderArea({
x: 0.25,
y: 0.25,
width: 0.5,
height: 0.5
});
t.is(setViewfinderAreaSpy.callCount, 1);
t.deepEqual(setViewfinderAreaSpy.getCall(0).args, [
{
x: 0.25,
y: 0.25,
width: 0.5,
height: 0.5
}
]);
barcodePicker.setViewfinderArea();
t.is(setViewfinderAreaSpy.callCount, 2);
t.deepEqual(setViewfinderAreaSpy.getCall(1).args, [undefined]);
barcodePicker.destroy();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false,
viewfinderArea: {
x: 0.25,
y: 0.25,
width: 0.5,
height: 0.5
}
})];
case 3:
barcodePicker = _a.sent();
t.deepEqual(barcodePicker.barcodePickerGui.customViewfinderArea, {
x: 0.25,
y: 0.25,
width: 0.5,
height: 0.5
});
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("createParserForFormat", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker, parser;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
parser = barcodePicker.createParserForFormat(__1.Parser.DataFormat.DLID);
t.truthy(parser);
parser = barcodePicker.createParserForFormat(__1.Parser.DataFormat.GS1_AI);
t.truthy(parser);
parser = barcodePicker.createParserForFormat(__1.Parser.DataFormat.HIBC);
t.truthy(parser);
parser = barcodePicker.createParserForFormat(__1.Parser.DataFormat.MRTD);
t.truthy(parser);
parser = barcodePicker.createParserForFormat(__1.Parser.DataFormat.SWISSQR);
t.truthy(parser);
barcodePicker.destroy();
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("reassignOriginElement", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var element, barcodePicker, reassignOriginElementSpy, element2;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
element = document.createElement("div");
return [4 /*yield*/, __1.BarcodePicker.create(element, {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();
t.deepEqual(barcodePicker.barcodePickerGui.originElement, element);
t.throws(function () {
return barcodePicker.reassignOriginElement("wrong-argument");
}, __1.CustomError, "A valid origin HTML element must be given");
t.throws(function () {
return barcodePicker.reassignOriginElement({});
}, __1.CustomError, "A valid origin HTML element must be given");
reassignOriginElementSpy = sinon.spy(barcodePicker.barcodePickerGui, "reassignOriginElement");
element2 = document.createElement("div");
barcodePicker.reassignOriginElement(element2);
t.true(reassignOriginElementSpy.calledOnceWithExactly(element2));
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("setTargetScanningFPS", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var barcodePicker, scheduleVideoProcessingStub, videoProcessingStub;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()];
case 1:
_a.sent();
return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), {
accessCamera: false
})];
case 2:
barcodePicker = _a.sent();