Standardize on Jasmine for tests.
This commit is contained in:
parent
e9e9da0d32
commit
fc492d39f7
@ -16,7 +16,7 @@
|
|||||||
"npm run build:umd:min && gzip -c9 dist/worker-portal.min.js > dist/worker-portal.min.js.gz",
|
"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/",
|
"build": "npm run build:umd:gzip && ls -l dist/",
|
||||||
"prepublish": "npm run clean && npm run build",
|
"prepublish": "npm run clean && npm run build",
|
||||||
"test": "npm run build:lib && ava --verbose"
|
"test": "npm run build:lib && jasmine --verbose"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@ -30,7 +30,6 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitlab.com/explorigin/worker-portal",
|
"homepage": "https://gitlab.com/explorigin/worker-portal",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"ava": "^0.17.0",
|
|
||||||
"babel-cli": "6.18.0",
|
"babel-cli": "6.18.0",
|
||||||
"babel-core": "6.21.0",
|
"babel-core": "6.21.0",
|
||||||
"babel-eslint": "7.1.1",
|
"babel-eslint": "7.1.1",
|
||||||
@ -38,9 +37,13 @@
|
|||||||
"babel-preset-es2015-rollup": "3.0.0",
|
"babel-preset-es2015-rollup": "3.0.0",
|
||||||
"babel-preset-stage-0": "6.16.0",
|
"babel-preset-stage-0": "6.16.0",
|
||||||
"eslint": "3.12.2",
|
"eslint": "3.12.2",
|
||||||
|
"jasmine": "^2.5.3",
|
||||||
"rimraf": "2.5.4",
|
"rimraf": "2.5.4",
|
||||||
"rollup-plugin-babel": "^2.7.1",
|
"rollup-plugin-babel": "^2.7.1",
|
||||||
"rollup-plugin-json": "2.1.0",
|
"rollup-plugin-json": "2.1.0",
|
||||||
"uglifyjs": "2.4.10"
|
"uglifyjs": "2.4.10"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"trimkit": "^1.0.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
109
packages/portal/spec/portal.spec.js
Normal file
109
packages/portal/spec/portal.spec.js
Normal file
@ -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();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
7
packages/portal/spec/support/jasmine.json
Normal file
7
packages/portal/spec/support/jasmine.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"spec_dir": "spec",
|
||||||
|
"spec_files": ["**/*[sS]pec.js"],
|
||||||
|
"helpers": ["helpers/**/*.js"],
|
||||||
|
"stopSpecOnExpectationFailure": false,
|
||||||
|
"random": false
|
||||||
|
}
|
||||||
@ -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');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -36,13 +36,13 @@
|
|||||||
"babel-preset-es2015-rollup": "3.0.0",
|
"babel-preset-es2015-rollup": "3.0.0",
|
||||||
"babel-preset-stage-0": "6.16.0",
|
"babel-preset-stage-0": "6.16.0",
|
||||||
"eslint": "3.2.0",
|
"eslint": "3.2.0",
|
||||||
|
"jasmine": "^2.5.3",
|
||||||
"rimraf": "2.5.4",
|
"rimraf": "2.5.4",
|
||||||
"rollup-plugin-json": "2.1.0",
|
"rollup-plugin-json": "2.1.0",
|
||||||
"rollup-plugin-babel": "^2.7.1",
|
"rollup-plugin-babel": "^2.7.1",
|
||||||
"uglifyjs": "2.4.10"
|
"uglifyjs": "2.4.10"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jasmine": "^2.5.3",
|
|
||||||
"trimkit": "^1.0.2"
|
"trimkit": "^1.0.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user