From fc492d39f7688d53e041db9cd05d5ec76bcfde74 Mon Sep 17 00:00:00 2001 From: Timothy Farrell Date: Tue, 24 Jan 2017 20:13:11 -0600 Subject: [PATCH] Standardize on Jasmine for tests. --- packages/portal/package.json | 7 +- packages/portal/spec/portal.spec.js | 109 ++++++++++++++++++++++ packages/portal/spec/support/jasmine.json | 7 ++ packages/portal/test.js | 89 ------------------ packages/router/package.json | 2 +- 5 files changed, 122 insertions(+), 92 deletions(-) create mode 100644 packages/portal/spec/portal.spec.js create mode 100644 packages/portal/spec/support/jasmine.json delete mode 100644 packages/portal/test.js diff --git a/packages/portal/package.json b/packages/portal/package.json index 2a274b4..b95f244 100644 --- a/packages/portal/package.json +++ b/packages/portal/package.json @@ -16,7 +16,7 @@ "npm run build:umd:min && gzip -c9 dist/worker-portal.min.js > dist/worker-portal.min.js.gz", "build": "npm run build:umd:gzip && ls -l dist/", "prepublish": "npm run clean && npm run build", - "test": "npm run build:lib && ava --verbose" + "test": "npm run build:lib && jasmine --verbose" }, "repository": { "type": "git", @@ -30,7 +30,6 @@ }, "homepage": "https://gitlab.com/explorigin/worker-portal", "devDependencies": { - "ava": "^0.17.0", "babel-cli": "6.18.0", "babel-core": "6.21.0", "babel-eslint": "7.1.1", @@ -38,9 +37,13 @@ "babel-preset-es2015-rollup": "3.0.0", "babel-preset-stage-0": "6.16.0", "eslint": "3.12.2", + "jasmine": "^2.5.3", "rimraf": "2.5.4", "rollup-plugin-babel": "^2.7.1", "rollup-plugin-json": "2.1.0", "uglifyjs": "2.4.10" + }, + "dependencies": { + "trimkit": "^1.0.2" } } diff --git a/packages/portal/spec/portal.spec.js b/packages/portal/spec/portal.spec.js new file mode 100644 index 0000000..b2cd04a --- /dev/null +++ b/packages/portal/spec/portal.spec.js @@ -0,0 +1,109 @@ +const { WorkerPortal } = require('../lib/index.js'); + +function FakeWorkerPair() { + let cbA = null; + let cbB = null; + + const objA = { + postMessage: data => { + cbB({ data: data }); + }, + addEventListener: (eventName, fn) => { + cbA = (...r) => { + fn(...r); + }; + }, + removeEventListener: (eventName, fn) => { + cbA = null; + } + }; + + const objB = { + postMessage: data => { + cbA({ data: data }); + }, + addEventListener: (eventName, fn) => { + cbB = (...r) => { + fn(...r); + }; + }, + removeEventListener: (eventName, fn) => { + cbB = null; + } + }; + + return [objA, objB]; +} + +describe('Workers ', () => { + it('can call and respond equally', done => { + const [a, b] = FakeWorkerPair(); + let masterApi, slaveApi; + + return Promise.all([ + WorkerPortal( + { + slaveAdd: (a, b) => a + b, + math: { + multiply: (a, b) => a * b, + lib: { + pow: (a, b) => Math.pow(a, b) + } + } + }, + a, + true + ), + WorkerPortal( + { + masterSubtract: (a, b) => a - b + }, + b, + false + ) + ]) + .then(([slave, master]) => { + masterApi = master; + slaveApi = slave; + + expect(Object.keys(masterApi)).toEqual([ + '__init', + '__cleanupSlave', + 'slaveAdd', + 'math', + '_cleanup' + ]); + expect(Object.keys(masterApi.math)).toEqual(['multiply', 'lib']); + expect(Object.keys(slaveApi)).toEqual(['masterSubtract']); + + return Promise.all([ + slaveApi.masterSubtract(9, 2), + masterApi.slaveAdd(9, 2), + masterApi.math.multiply(9, 2), + masterApi.math.lib.pow(9, 2) + ]); + }) + .then(results => { + expect(results).toEqual([7, 11, 18, 81]); + + return Promise.all([masterApi.slaveAdd(5, 2), slaveApi.masterSubtract(2, 2)]); + }) + .then(results => { + expect(results).toEqual([7, 0]); + return masterApi._cleanup(); + }) + .catch(e => { + fail(e); + }) + .then(() => { + return masterApi.slaveAdd(9, 2); + }) + .then(e => { + fail('Expected rejection'); + }) + .catch(e => { + expect(e.message).toBe('Portal disabled'); + done(); + }); + }); +}); diff --git a/packages/portal/spec/support/jasmine.json b/packages/portal/spec/support/jasmine.json new file mode 100644 index 0000000..b52c9e6 --- /dev/null +++ b/packages/portal/spec/support/jasmine.json @@ -0,0 +1,7 @@ +{ + "spec_dir": "spec", + "spec_files": ["**/*[sS]pec.js"], + "helpers": ["helpers/**/*.js"], + "stopSpecOnExpectationFailure": false, + "random": false +} diff --git a/packages/portal/test.js b/packages/portal/test.js deleted file mode 100644 index 2f40f43..0000000 --- a/packages/portal/test.js +++ /dev/null @@ -1,89 +0,0 @@ -import test from 'ava'; - -import { WorkerPortal } from './lib'; - -function FakeWorkerPair() { - let cbA = null; - let cbB = null; - - const objA = { - postMessage: data => { - cbB({ data: data }); - }, - addEventListener: (eventName, fn) => { - cbA = (...r) => { - fn(...r); - }; - }, - removeEventListener: (eventName, fn) => { - cbA = null; - } - }; - - const objB = { - postMessage: data => { - cbA({ data: data }); - }, - addEventListener: (eventName, fn) => { - cbB = (...r) => { - fn(...r); - }; - }, - removeEventListener: (eventName, fn) => { - cbB = null; - } - }; - - return [objA, objB]; -} - -test('Workers can call and respond equally', async t => { - const [a, b] = FakeWorkerPair(); - - const slave = WorkerPortal( - { - slaveAdd: (a, b) => a + b, - math: { - multiply: (a, b) => a * b, - lib: { - pow: (a, b) => Math.pow(a, b) - } - } - }, - a, - true - ); - const master = WorkerPortal( - { - masterSubtract: (a, b) => a - b - }, - b, - false - ); - - const masterApi = await master; - const slaveApi = await slave; - - t.deepEqual(Object.keys(masterApi), ['__init', '__cleanupSlave', 'slaveAdd', 'math', '_cleanup']); - t.deepEqual(Object.keys(masterApi.math), ['multiply', 'lib']); - t.deepEqual(Object.keys(slaveApi), ['masterSubtract']); - - t.is(await slaveApi.masterSubtract(9, 2), 7); - t.is(await masterApi.slaveAdd(9, 2), 11); - t.is(await masterApi.math.multiply(9, 2), 18); - t.is(await masterApi.math.lib.pow(9, 2), 81); - - t.is(await masterApi.slaveAdd(5, 2), 7); - t.is(await slaveApi.masterSubtract(2, 2), 0); - - await masterApi._cleanup(); - - return masterApi - .slaveAdd(9, 2) - .then(e => { - t.fail('Expected rejection'); - }) - .catch(e => { - t.is(e.message, 'Portal disabled'); - }); -}); diff --git a/packages/router/package.json b/packages/router/package.json index b1287c3..a40bc59 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -36,13 +36,13 @@ "babel-preset-es2015-rollup": "3.0.0", "babel-preset-stage-0": "6.16.0", "eslint": "3.2.0", + "jasmine": "^2.5.3", "rimraf": "2.5.4", "rollup-plugin-json": "2.1.0", "rollup-plugin-babel": "^2.7.1", "uglifyjs": "2.4.10" }, "dependencies": { - "jasmine": "^2.5.3", "trimkit": "^1.0.2" } }