noflo-core
Version:
NoFlo Essentials
100 lines (95 loc) • 2.46 kB
JavaScript
describe('DisconnectAfterPacket component', () => {
let c = null;
let ins = null;
let out = null;
before(function (done) {
this.timeout(4000);
const loader = new noflo.ComponentLoader(baseDir);
loader.load('core/DisconnectAfterPacket', (err, instance) => {
if (err) {
done(err);
return;
}
c = instance;
ins = noflo.internalSocket.createSocket();
c.inPorts.in.attach(ins);
done();
});
});
beforeEach(() => {
out = noflo.internalSocket.createSocket();
c.outPorts.out.attach(out);
});
afterEach(() => {
c.outPorts.out.detach(out);
out = null;
});
describe('when receiving two packets', () => {
it('should send a disconnect', (done) => {
const expected = [
'DATA 1',
'DISC',
'DATA 2',
'DISC',
];
const received = [];
out.on('begingroup', group => received.push(`< ${group}`));
out.on('data', data => received.push(`DATA ${data}`));
out.on('endgroup', () => received.push('>'));
out.on('disconnect', () => {
received.push('DISC');
if (received.length !== expected.length) { return; }
chai.expect(received).to.eql(expected);
done();
});
ins.send(1);
ins.send(2);
ins.disconnect();
});
});
describe('when receiving complex substream of packets', () => {
it('should send a disconnect for each', (done) => {
const expected = [
'CONN',
'< a',
'DATA 1',
'>',
'DISC',
'CONN',
'< a',
'< b',
'DATA 2',
'>',
'>',
'DISC',
'CONN',
'< a',
'< b',
'DATA 3',
'>',
'>',
'DISC',
];
const received = [];
out.on('connect', () => received.push('CONN'));
out.on('begingroup', group => received.push(`< ${group}`));
out.on('data', data => received.push(`DATA ${data}`));
out.on('endgroup', () => received.push('>'));
out.on('disconnect', () => {
received.push('DISC');
if (received.length !== expected.length) { return; }
chai.expect(received).to.eql(expected);
done();
});
ins.connect();
ins.beginGroup('a');
ins.send(1);
ins.beginGroup('b');
ins.send(2);
ins.send(3);
ins.endGroup();
ins.endGroup();
ins.disconnect();
});
});
});