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",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
|
||||
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-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"
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user