UNPKG

datapumps

Version:

Node.js ETL (Extract, Transform, Load) toolkit for easy data import, export or transfer between systems.

207 lines (200 loc) 6.56 kB
(function() { var Buffer, Promise, sinon; require('should'); Promise = require('bluebird'); sinon = require('sinon'); Buffer = require('../Buffer'); describe('Buffer', function() { it('should be empty when created', function() { var buffer; buffer = new Buffer; return buffer.isEmpty().should.be["true"]; }); describe('#write(data)', function() { it('should add the data to the buffer', function() { var buffer; buffer = new Buffer; buffer.write('test'); return buffer.getContent().should.eql(['test']); }); it('should throw error when the buffer is full', function() { var buffer; buffer = new Buffer({ size: 1 }); buffer.write('test'); return (function() { return buffer.write('again'); }).should["throw"]('Buffer is full'); }); return it('should emit full event when the buffer becomes full', function(done) { var buffer; buffer = new Buffer({ size: 2 }); buffer.write('test'); buffer.on('full', function() { return done(); }); return buffer.write('test'); }); }); describe('#appendArray(dataArray)', function() { it('should add data to the buffer', function() { var buffer; buffer = new Buffer({ size: 10 }); buffer.write('test'); buffer.appendArray(['foo', 'bar']); buffer.size.should.equal(10); return buffer.getContent().should.eql(['test', 'foo', 'bar']); }); return it('should increase buffer size when necessary', function() { var buffer; buffer = new Buffer({ size: 2 }); buffer.write('test'); buffer.appendArray(['foo', 'bar']); buffer.size.should.equal(3); return buffer.getContent().should.eql(['test', 'foo', 'bar']); }); }); describe('#writeAsync(data)', function() { it('should write buffer when not full', function(done) { var buffer; buffer = new Buffer; return buffer.writeAsync('test').then(function() { buffer.getContent().should.eql(['test']); return done(); }); }); it('should wait for a read event to write the buffer', function(done) { var buffer; buffer = new Buffer({ size: 1 }); buffer.write('test'); buffer.writeAsync('test2').then(function() { buffer.getContent().should.eql(['test2']); return done(); }); return buffer.read(); }); return it('should return a promise', function() { var buffer, promise; buffer = new Buffer; promise = buffer.writeAsync('test'); return promise.should.be.an.instanceOf(Promise); }); }); describe('#writeArrayAsync(dataArray)', function() { it('should write every item from dataArray to the buffer', function(done) { var buffer, promise; buffer = new Buffer; promise = buffer.writeArrayAsync(['foo', 'bar']); return promise.then(function() { if (buffer.getContent().should.eql(['foo', 'bar'])) { return done(); } }); }); return it('should return a promise that fulfills when the last item of the array is written', function(done) { var barIsWritten, buffer, fooIsReleased, fooIsWritten, promise; buffer = new Buffer({ size: 1 }); fooIsWritten = fooIsReleased = barIsWritten = false; buffer.on('write', function(data) { if (data === 'foo') { fooIsWritten = true; buffer.read(); } if (data === 'bar') { return barIsWritten = true; } }); buffer.on('release', function(data) { if (data === 'foo') { return fooIsReleased = true; } }); promise = buffer.writeArrayAsync(['foo', 'bar']); return promise.then(function() { if (fooIsWritten && fooIsReleased && barIsWritten) { return done(); } }); }); }); describe('#read()', function() { it('should return first data item when not empty', function() { var buffer; buffer = new Buffer; buffer.write('test1'); buffer.write('test2'); return buffer.read().should.equal('test1'); }); return it('should throw error when buffer is empty', function() { var buffer; buffer = new Buffer; return (function() { return buffer.read(); }).should["throw"]('Buffer is empty'); }); }); describe('#readAsync()', function() { return it('should return a promise fulfilled when the buffer is readable', function(done) { var buffer; buffer = new Buffer; buffer.write('test'); return buffer.readAsync().then(function(result) { result.should.equal('test'); return done(); }); }); }); describe('that is sealed', function() { it('should throw error when trying to write it', function() { var buffer; buffer = new Buffer; buffer.write('test'); buffer.seal(); return (function() { return buffer.write('test2'); }).should["throw"]('Cannot write sealed buffer'); }); it('should emit end event if becomes empty when sealed', function(done) { var buffer; buffer = new Buffer; buffer.write('test'); buffer.on('end', function() { return done(); }); buffer.seal(); return buffer.read(); }); return it('should emit end event if sealed when empty', function(done) { var buffer; buffer = new Buffer; buffer.on('end', function() { return done(); }); return buffer.seal(); }); }); return describe('Buffer.defaultBufferSize', function() { it('should set default buffer size for newly created buffers', function() { var buffer; Buffer.defaultBufferSize(500); buffer = new Buffer; return buffer.size.should.equal(500); }); return it('should return default buffer size when called without arguments', function() { Buffer.defaultBufferSize(1000); return Buffer.defaultBufferSize().should.equal(1000); }); }); }); }).call(this);