spiegel-keyman/common/predictive-text/unit_tests/headless/worker-predict.js

61 lines
1.6 KiB
JavaScript

var assert = require('chai').assert;
var sinon = require('sinon');
let LMLayerWorker = require('../../build/intermediate');
describe('LMLayerWorker', function () {
describe('#predict()', function () {
it('should send back suggestions', function () {
var suggestion = {
transform: {
insert: 'I ',
deleteLeft: 0
},
displayAs: 'I'
};
// Initialize the worker with a model that will produce one suggestion.
var fakePostMessage = sinon.fake();
var context = {
postMessage: fakePostMessage
};
context.importScripts = importScriptsWith(context);
var worker = LMLayerWorker.install(context);
configWorker(worker);
worker.onMessage(createMessageEventWithData({
message: 'load',
model: "./unit_tests/in_browser/resources/models/simple-dummy.js"
}));
sinon.assert.calledWithMatch(fakePostMessage.lastCall, {
message: 'ready',
});
var token = randomToken();
// Now predict! We should get the suggestions back.
worker.onMessage(createMessageEventWithData({
message: 'predict',
token: token,
transform: zeroTransform(),
context: emptyContext()
}));
// Retrieve the internal 'dummy' suggestions for comparison.
var hazel = iGotDistractedByHazel();
sinon.assert.calledWithMatch(fakePostMessage.lastCall, {
message: 'suggestions',
token: token,
suggestions: hazel[0]
});
});
afterEach(function () {
// Restore all fakes.
sinon.restore();
});
});
});