mirror of https://github.com/embarklabs/embark.git
175 lines
4.4 KiB
JavaScript
175 lines
4.4 KiB
JavaScript
/*global describe, it, before, beforeEach*/
|
|
const assert = require('assert');
|
|
const sinon = require('sinon');
|
|
const TestLogger = require('../lib/tests/test_logger');
|
|
const ProcessLauncher = require('../lib/process/processLauncher');
|
|
|
|
describe('ProcessWrapper', () => {
|
|
let processLauncher;
|
|
|
|
before(() => {
|
|
sinon.stub(ProcessLauncher.prototype, '_subscribeToMessages');
|
|
processLauncher = new ProcessLauncher({
|
|
logger: new TestLogger({}),
|
|
modulePath: 'test.js'
|
|
});
|
|
});
|
|
|
|
describe('on', () => {
|
|
|
|
beforeEach(() => {
|
|
processLauncher.subscriptions = {};
|
|
});
|
|
|
|
it('should create an array for the key value', function () {
|
|
processLauncher.on('test', 'value', 'myCallback');
|
|
assert.deepEqual(processLauncher.subscriptions, {
|
|
"test": [
|
|
{
|
|
"callback": "myCallback",
|
|
"value": "value"
|
|
}
|
|
]
|
|
});
|
|
});
|
|
|
|
it('should add another value to the key', () => {
|
|
processLauncher.on('test', 'value', 'myCallback');
|
|
processLauncher.on('test', 'value2', 'myCallback2');
|
|
assert.deepEqual(processLauncher.subscriptions, {
|
|
"test": [
|
|
{
|
|
"callback": "myCallback",
|
|
"value": "value"
|
|
},
|
|
{
|
|
"callback": "myCallback2",
|
|
"value": "value2"
|
|
}
|
|
]
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('unsubscribeTo', () => {
|
|
it('should remove the value for the key', () => {
|
|
processLauncher.subscriptions = {
|
|
"test": [
|
|
{
|
|
"callback": "myCallback",
|
|
"value": "value"
|
|
},
|
|
{
|
|
"callback": "myCallback2",
|
|
"value": "value2"
|
|
}
|
|
]
|
|
};
|
|
|
|
processLauncher.unsubscribeTo('test', 'value2');
|
|
assert.deepEqual(processLauncher.subscriptions, {
|
|
"test": [
|
|
{
|
|
"callback": "myCallback",
|
|
"value": "value"
|
|
}
|
|
]
|
|
});
|
|
});
|
|
|
|
it('should remove the whole key', () => {
|
|
processLauncher.subscriptions = {
|
|
"test": [
|
|
{
|
|
"callback": "myCallback",
|
|
"value": "value"
|
|
}
|
|
]
|
|
};
|
|
|
|
processLauncher.unsubscribeTo('test');
|
|
assert.deepEqual(processLauncher.subscriptions, {test: []});
|
|
});
|
|
});
|
|
|
|
describe('unsubscribeToAll', () => {
|
|
it('clears every subscriptions', () => {
|
|
processLauncher.subscriptions = {
|
|
"test": [
|
|
{
|
|
"callback": "myCallback",
|
|
"value": "value"
|
|
}
|
|
]
|
|
};
|
|
|
|
processLauncher.unsubscribeToAll();
|
|
assert.deepEqual(processLauncher.subscriptions, {});
|
|
});
|
|
});
|
|
|
|
describe('_checkSubscriptions', function () {
|
|
it('should not do anything if not in subscription', function () {
|
|
const callback = sinon.stub();
|
|
processLauncher.subscriptions = {
|
|
"test": [
|
|
{
|
|
"callback": callback,
|
|
"value": "value"
|
|
}
|
|
]
|
|
};
|
|
processLauncher._checkSubscriptions({does: 'nothing', for: 'real'});
|
|
assert.strictEqual(callback.callCount, 0);
|
|
});
|
|
|
|
it('should call the callback', function () {
|
|
const callback = sinon.stub();
|
|
processLauncher.subscriptions = {
|
|
"test": [
|
|
{
|
|
"callback": callback,
|
|
"value": "value"
|
|
}
|
|
]
|
|
};
|
|
processLauncher._checkSubscriptions({test: 'value'});
|
|
assert.strictEqual(callback.callCount, 1);
|
|
});
|
|
|
|
it('should call the callback and remove the sub', function () {
|
|
const callback = sinon.stub();
|
|
processLauncher.subscriptions = {
|
|
"test": [
|
|
{
|
|
"callback": callback,
|
|
"value": "value",
|
|
"once": true
|
|
}
|
|
]
|
|
};
|
|
processLauncher._checkSubscriptions({test: 'value'});
|
|
assert.strictEqual(callback.callCount, 1);
|
|
assert.deepEqual(processLauncher.subscriptions, {test: []});
|
|
});
|
|
|
|
it('should call the callback twice', function () {
|
|
const callback = sinon.stub();
|
|
processLauncher.subscriptions = {
|
|
"test": [
|
|
{
|
|
"callback": callback,
|
|
"value": "value"
|
|
},
|
|
{
|
|
"callback": callback,
|
|
"value": "value"
|
|
}
|
|
]
|
|
};
|
|
processLauncher._checkSubscriptions({test: 'value'});
|
|
assert.strictEqual(callback.callCount, 2);
|
|
});
|
|
});
|
|
});
|