diff --git a/package.json b/package.json index 841a100b..ec0819b5 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "stream-tester": "0.0.5", "stream-spec": "~0.3.5", "jsonstream": "0.0.1", - "JSONStream": "~0.7.1" + "JSONStream": "~0.7.1", + "mocha": "~1.17.1" } } diff --git a/test/concat.js b/test/concat.js index b97ea4c1..0d3fa2c7 100644 --- a/test/concat.js +++ b/test/concat.js @@ -1,26 +1,22 @@ -var pg = require('pg') var assert = require('assert') -var gonna = require('gonna') -var _ = require('lodash') var concat = require('concat-stream') var through = require('through') +var helper = require('./helper') var QueryStream = require('../') -var client = new pg.Client() - -var connected = gonna('connect', 100, function() { - var stream = new QueryStream('SELECT * FROM generate_series(0, 200) num', []) - var query = client.query(stream) - query.pipe(through(function(row) { - this.push(row.num) - })).pipe(concat(function(result) { - var total = result.reduce(function(prev, cur) { - return prev + cur - }) - assert.equal(total, 20100) - })) - stream.on('end', client.end.bind(client)) +helper(function(client) { + it('concats correctly', function(done) { + var stream = new QueryStream('SELECT * FROM generate_series(0, 200) num', []) + var query = client.query(stream) + query.pipe(through(function(row) { + this.push(row.num) + })).pipe(concat(function(result) { + var total = result.reduce(function(prev, cur) { + return prev + cur + }) + assert.equal(total, 20100) + })) + stream.on('end', done) + }) }) - -client.connect(connected) diff --git a/test/error.js b/test/error.js index aa3da490..6d0b45b0 100644 --- a/test/error.js +++ b/test/error.js @@ -1,24 +1,20 @@ -var pg = require('pg') var assert = require('assert') -var gonna = require('gonna') -var _ = require('lodash') -var concat = require('concat-stream') -var through = require('through') +var helper = require('./helper') var QueryStream = require('../') -var client = new pg.Client() +helper(function(client) { + it('receives error on stream', function(done) { + var stream = new QueryStream('SELECT * FROM asdf num', []) + var query = client.query(stream) + query.on('error', function(err) { + assert(err) + assert.equal(err.code, '42P01') + done() + }) + }) -var connected = gonna('connect', 100, function() { - var stream = new QueryStream('SELECT * FROM asdf num', []) - var query = client.query(stream) - query.on('error', gonna('emit error', 100, function(err) { - assert(err) - assert.equal(err.code, '42P01') - })) - var done = gonna('keep connetion alive', 100) - client.query('SELECT NOW()', done) + it('continues to function after stream', function(done) { + client.query('SELECT NOW()', done) + }) }) - -client.connect(connected) -client.on('drain', client.end.bind(client)) diff --git a/test/fast-reader.js b/test/fast-reader.js index 629848fb..0bb395e8 100644 --- a/test/fast-reader.js +++ b/test/fast-reader.js @@ -1,29 +1,24 @@ -var pg = require('pg') var assert = require('assert') -var gonna = require('gonna') -var _ = require('lodash') - +var helper = require('./helper') var QueryStream = require('../') -var client = new pg.Client() - -var connected = gonna('connect', 100, function() { - var stream = new QueryStream('SELECT * FROM generate_series(0, 200) num', []) - var query = client.query(stream) - var result = [] - stream.on('readable', function() { - var res = stream.read() - assert(res, 'should not return null on evented reader') - result.push(res.num) - }) - stream.on('end', client.end.bind(client)) - stream.on('end', function() { - var total = result.reduce(function(prev, cur) { - return prev + cur +helper(function(client) { + it('works', function(done) { + var stream = new QueryStream('SELECT * FROM generate_series(0, 200) num', []) + var query = client.query(stream) + var result = [] + stream.on('readable', function() { + var res = stream.read() + assert(res, 'should not return null on evented reader') + result.push(res.num) }) - assert.equal(total, 20100) + stream.on('end', function() { + var total = result.reduce(function(prev, cur) { + return prev + cur + }) + assert.equal(total, 20100) + done() + }) + assert.strictEqual(query.read(2), null) }) - assert.strictEqual(query.read(2), null) }) - -client.connect(connected) diff --git a/test/helper.js b/test/helper.js new file mode 100644 index 00000000..6e7ea46b --- /dev/null +++ b/test/helper.js @@ -0,0 +1,17 @@ +var pg = require('pg') +module.exports = function(cb) { + describe('pg-query-stream', function() { + var client = new pg.Client() + + before(function(done) { + client.connect(done) + }) + + cb(client) + + after(function(done) { + client.end() + client.on('end', done) + }) + }) +} diff --git a/test/instant.js b/test/instant.js index 1b245162..0cfc856e 100644 --- a/test/instant.js +++ b/test/instant.js @@ -1,17 +1,15 @@ -var pg = require('pg') var assert = require('assert') -var gonna = require('gonna') var concat = require('concat-stream') var QueryStream = require('../') -var client = new pg.Client() -var query = new QueryStream('SELECT pg_sleep(1)', []) -var stream = client.query(query) -var done = gonna('read results', 5000) -stream.pipe(concat(function(res) { - assert.equal(res.length, 1) - done() - client.end() -})) -client.connect() +require('./helper')(function(client) { + it('instant', function(done) { + var query = new QueryStream('SELECT pg_sleep(1)', []) + var stream = client.query(query) + stream.pipe(concat(function(res) { + assert.equal(res.length, 1) + done() + })) + }) +}) diff --git a/test/mocha.opts b/test/mocha.opts new file mode 100644 index 00000000..8dcb4d8d --- /dev/null +++ b/test/mocha.opts @@ -0,0 +1 @@ +--no-exit diff --git a/test/pauses.js b/test/pauses.js index 7c61c8e8..66e88836 100644 --- a/test/pauses.js +++ b/test/pauses.js @@ -1,25 +1,18 @@ -var pg = require('pg') var assert = require('assert') -var gonna = require('gonna') -var _ = require('lodash') var concat = require('concat-stream') -var through = require('through') var tester = require('stream-tester') var JSONStream = require('JSONStream') -var stream = require('stream') var QueryStream = require('../') -var client = new pg.Client() - -var connected = gonna('connect', 100, function() { - var stream = new QueryStream('SELECT * FROM generate_series(0, $1) num', [200], {chunkSize: 2, highWaterMark: 2}) - var query = client.query(stream) - var pauser = tester.createPauseStream(0.1, 100) - query.pipe(JSONStream.stringify()).pipe(concat(function(json) { - JSON.parse(json) - client.end() - })) +require('./helper')(function(client) { + it('pauses', function(done) { + var stream = new QueryStream('SELECT * FROM generate_series(0, $1) num', [200], {chunkSize: 2, highWaterMark: 2}) + var query = client.query(stream) + var pauser = tester.createPauseStream(0.1, 100) + query.pipe(JSONStream.stringify()).pipe(concat(function(json) { + JSON.parse(json) + done() + })) + }) }) - -client.connect(connected) diff --git a/test/stream-tester.js b/test/stream-tester.js index 6975247a..3e6f2207 100644 --- a/test/stream-tester.js +++ b/test/stream-tester.js @@ -1,21 +1,16 @@ -var pg = require('pg') -var assert = require('assert') -var gonna = require('gonna') var tester = require('stream-tester') +var spec = require('stream-spec') var QueryStream = require('../') -var client = new pg.Client() - -var connected = gonna('connect', 100, function() { - var stream = new QueryStream('SELECT * FROM generate_series(0, 200) num', []) - var spec = require('stream-spec') - var query = client.query(stream) - spec(query) +require('./helper')(function(client) { + it('passes stream spec', function(done) { + var stream = new QueryStream('SELECT * FROM generate_series(0, 200) num', []) + var query = client.query(stream) + spec(query) .readable() .pausable({strict: true}) .validateOnExit() - stream.on('end', client.end.bind(client)) + stream.on('end', done) + }) }) - -client.connect(connected)