diff --git a/common/predictive-text/index.ts b/common/predictive-text/index.ts index e2d18130a2..3e98147060 100644 --- a/common/predictive-text/index.ts +++ b/common/predictive-text/index.ts @@ -32,15 +32,20 @@ */ type USVString = string; +// TODO: document type WorkerFactory = (uri: string) => Worker; +// TODO: document class LMLayer { + // TODO: document private _worker: Worker; + // TODO: document constructor(workerFactory: WorkerFactory = (uri) => new Worker(uri)) { - this._worker = workerFactory("about:blank"); + let blob = new Blob([], { type: 'text/javascript' }); + let uri = URL.createObjectURL(blob); + this._worker = workerFactory(uri); } - } // Let LMLayerWorker be available both in browser and in Node. diff --git a/common/predictive-text/unit_tests/headless/lmlayer.js b/common/predictive-text/unit_tests/headless/lmlayer.js index 4151664623..9b971b34d7 100644 --- a/common/predictive-text/unit_tests/headless/lmlayer.js +++ b/common/predictive-text/unit_tests/headless/lmlayer.js @@ -5,16 +5,8 @@ let LMLayer = require('../../'); describe('LMLayer', function() { describe('[[constructor]]', function () { - it('should be given a WorkerFactory to instantiate', function () { - let createWorker = sinon.fake(); - new LMLayer(createWorker); - assert.strictEqual(createWorker.callCount, 1); - }); - - it('should give the worker factory a blob URI', function () { - let createWorker = sinon.fake(); - new LMLayer(createWorker); - assert.match(createWorker.lastArg, /^blob:/); + it.skip('should be take a URI to instantiate', function () { + new LMLayer(uri); }); }); }); diff --git a/common/predictive-text/unit_tests/in_browser/base.conf.js b/common/predictive-text/unit_tests/in_browser/base.conf.js index 3b48f473e6..4f9be40980 100644 --- a/common/predictive-text/unit_tests/in_browser/base.conf.js +++ b/common/predictive-text/unit_tests/in_browser/base.conf.js @@ -35,6 +35,7 @@ module.exports = { // Include the generated worker code. '../../embedded_worker.js', + '../../build/index.js', // We don't have anything in these locations... yet. But they'll be useful for test resources. 'json/**/*.json', // Where pre-loaded JSON resides. diff --git a/common/predictive-text/unit_tests/in_browser/cases/lmlayer-integration.js b/common/predictive-text/unit_tests/in_browser/cases/lmlayer-integration.js new file mode 100644 index 0000000000..9021f4954d --- /dev/null +++ b/common/predictive-text/unit_tests/in_browser/cases/lmlayer-integration.js @@ -0,0 +1,10 @@ + +var assert = chai.assert; +describe('LMLayer', function () { + describe('[[constructor]]', function () { + it('should construct with zero arguments', function () { + let lmlayer = new LMLayer(); + assert.instanceOf(lmlayer, LMLayer); + }); + }); +});