noflo
Version:
Flow-Based Programming environment for JavaScript
58 lines (55 loc) • 1.82 kB
JavaScript
var chai, noflo;
if (typeof process !== 'undefined' && process.execPath && process.execPath.match(/node|iojs/)) {
if (!chai) {
chai = require('chai');
}
noflo = require('../src/lib/NoFlo.coffee');
} else {
noflo = require('noflo');
}
describe('IP object', function() {
it('should create IPs of different types', function() {
var close, data, open;
open = new noflo.IP('openBracket');
data = new noflo.IP('data', "Payload");
close = new noflo.IP('closeBracket');
chai.expect(open.type).to.equal('openBracket');
chai.expect(close.type).to.equal('closeBracket');
return chai.expect(data.type).to.equal('data');
});
it('should be moved to an owner', function() {
var p;
p = new noflo.IP('data', "Token");
p.move('SomeProc');
return chai.expect(p.owner).to.equal('SomeProc');
});
it('should support sync context scoping', function() {
var p;
p = new noflo.IP('data', "Request-specific");
p.scope = 'request-12345';
return chai.expect(p.scope).to.equal('request-12345');
});
it('should be able to clone itself', function() {
var d1, d2;
d1 = new noflo.IP('data', "Trooper", {
groups: ['foo', 'bar'],
owner: 'SomeProc',
scope: 'request-12345',
clonable: true
});
d2 = d1.clone();
chai.expect(d2).not.to.equal(d1);
chai.expect(d2.type).to.equal(d1.type);
chai.expect(d2.data).to.eql(d1.data);
chai.expect(d2.groups).to.eql(d2.groups);
chai.expect(d2.owner).not.to.equal(d1.owner);
return chai.expect(d2.scope).to.equal(d1.scope);
});
return it('should dispose its contents when dropped', function() {
var p;
p = new noflo.IP('data', "Garbage");
p.groups = ['foo', 'bar'];
p.drop();
return chai.expect(Object.keys(p)).to.have.lengthOf(0);
});
});