aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev/database-vm.js6
-rw-r--r--dev/translator-vm.js4
-rw-r--r--test/test-anki-note-builder.js25
3 files changed, 29 insertions, 6 deletions
diff --git a/dev/database-vm.js b/dev/database-vm.js
index b682bca3..014c989f 100644
--- a/dev/database-vm.js
+++ b/dev/database-vm.js
@@ -101,8 +101,8 @@ function atob(data) {
}
class DatabaseVM extends VM {
- constructor() {
- super({
+ constructor(globals={}) {
+ super(Object.assign({
chrome,
Image,
Blob,
@@ -111,7 +111,7 @@ class DatabaseVM extends VM {
IDBKeyRange: global.IDBKeyRange,
JSZip,
atob
- });
+ }, globals));
this.context.window = this.context;
this.indexedDB = global.indexedDB;
}
diff --git a/dev/translator-vm.js b/dev/translator-vm.js
index f68b25db..7eab47b8 100644
--- a/dev/translator-vm.js
+++ b/dev/translator-vm.js
@@ -26,8 +26,8 @@ function clone(value) {
}
class TranslatorVM extends DatabaseVM {
- constructor() {
- super();
+ constructor(globals) {
+ super(globals);
this._japaneseUtil = null;
this._translator = null;
this._ankiNoteDataCreator = null;
diff --git a/test/test-anki-note-builder.js b/test/test-anki-note-builder.js
index aad12aba..d3ea0b6a 100644
--- a/test/test-anki-note-builder.js
+++ b/test/test-anki-note-builder.js
@@ -18,6 +18,7 @@
const fs = require('fs');
const path = require('path');
const assert = require('assert');
+const {JSDOM} = require('jsdom');
const {testMain} = require('../dev/util');
const {TranslatorVM} = require('../dev/translator-vm');
@@ -27,7 +28,10 @@ function clone(value) {
}
async function createVM() {
- const vm = new TranslatorVM();
+ const dom = new JSDOM();
+ const {document} = dom.window;
+
+ const vm = new TranslatorVM({document});
const dictionaryDirectory = path.join(__dirname, 'data', 'dictionaries', 'valid-dictionary1');
await vm.prepare(dictionaryDirectory, 'Test Dictionary 2');
@@ -68,6 +72,25 @@ async function createVM() {
return this._serializeMulti(this._templateRenderer.renderMulti(items));
}
+ _serializeError(error) {
+ try {
+ if (typeof error === 'object' && error !== null) {
+ return {
+ name: error.name,
+ message: error.message,
+ stack: error.stack,
+ data: error.data
+ };
+ }
+ } catch (e) {
+ // NOP
+ }
+ return {
+ value: error,
+ hasValue: true
+ };
+ }
+
_serializeMulti(array) {
for (let i = 0, ii = array.length; i < ii; ++i) {
const value = array[i];