UNPKG

noflo

Version:

Flow-Based Programming environment for JavaScript

66 lines (63 loc) 2.08 kB
var IP, chai; if (typeof process !== 'undefined' && process.execPath && process.execPath.match(/node|iojs/)) { if (!chai) { chai = require('chai'); } IP = require('../src/lib/IP'); } else { IP = require('noflo/src/lib/IP'); } describe('IP object', function() { it('should create IPs of different types', function() { var close, data, open; open = new IP('openBracket'); data = new IP('data', "Payload"); close = new 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 attach data groups explicitly', function() { var data; data = new IP('data', "Payload"); chai.expect(data.groups).to.be.an["instanceof"](Array); chai.expect(data.groups).to.have.lengthOf(0); data.groups = ['foo', 'bar']; return chai.expect(data.groups).to.have.lengthOf(2); }); it('should be moved to an owner', function() { var p; p = new 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 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 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 IP('data', "Garbage"); p.groups = ['foo', 'bar']; p.drop(); return chai.expect(Object.keys(p)).to.have.lengthOf(0); }); });