mirror of
https://github.com/brianc/node-postgres.git
synced 2025-12-08 20:16:25 +00:00
Add async iterator tests (#62)
This commit is contained in:
parent
a756ee30e4
commit
a84db5ffd7
@ -32,10 +32,17 @@
|
||||
"eslint-plugin-standard": "^3.0.1",
|
||||
"mocha": "^6.2.2",
|
||||
"pg": "^7.5.0",
|
||||
"prettier": "^1.18.2",
|
||||
"stream-spec": "~0.3.5",
|
||||
"stream-tester": "0.0.5",
|
||||
"through": "~2.3.4"
|
||||
},
|
||||
"prettier": {
|
||||
"semi": false,
|
||||
"printWidth": 120,
|
||||
"trailingComma": "es5",
|
||||
"singleQuote": true
|
||||
},
|
||||
"dependencies": {
|
||||
"pg-cursor": "2.0.0"
|
||||
}
|
||||
|
||||
57
test/async-iterator.es6
Normal file
57
test/async-iterator.es6
Normal file
@ -0,0 +1,57 @@
|
||||
const QueryStream = require('../')
|
||||
const pg = require('pg')
|
||||
const assert = require('assert')
|
||||
|
||||
const queryText = 'SELECT * FROM generate_series(0, 200) num'
|
||||
describe('Async iterator', () => {
|
||||
it('works', async () => {
|
||||
const stream = new QueryStream(queryText, [])
|
||||
const client = new pg.Client()
|
||||
await client.connect()
|
||||
const query = client.query(stream)
|
||||
const rows = []
|
||||
for await (const row of query) {
|
||||
rows.push(row)
|
||||
}
|
||||
assert.equal(rows.length, 201)
|
||||
await client.end()
|
||||
})
|
||||
|
||||
it('can async iterate and then do a query afterwards', async () => {
|
||||
const stream = new QueryStream(queryText, [])
|
||||
const client = new pg.Client()
|
||||
await client.connect()
|
||||
const query = client.query(stream)
|
||||
const iteratorRows = []
|
||||
for await (const row of query) {
|
||||
iteratorRows.push(row)
|
||||
}
|
||||
assert.equal(iteratorRows.length, 201)
|
||||
const { rows } = await client.query('SELECT NOW()')
|
||||
assert.equal(rows.length, 1)
|
||||
await client.end()
|
||||
})
|
||||
|
||||
it('can async iterate multiple times with a pool', async () => {
|
||||
const pool = new pg.Pool({ max: 1 })
|
||||
|
||||
const allRows = []
|
||||
const run = async () => {
|
||||
// get the client
|
||||
const client = await pool.connect()
|
||||
// stream some rows
|
||||
const stream = new QueryStream(queryText, [])
|
||||
const iteratorRows = []
|
||||
client.query(stream)
|
||||
for await (const row of stream) {
|
||||
iteratorRows.push(row)
|
||||
allRows.push(row)
|
||||
}
|
||||
assert.equal(iteratorRows.length, 201)
|
||||
client.release()
|
||||
}
|
||||
await Promise.all([run(), run(), run()])
|
||||
assert.equal(allRows.length, 603)
|
||||
await pool.end()
|
||||
})
|
||||
})
|
||||
4
test/async-iterator.js
Normal file
4
test/async-iterator.js
Normal file
@ -0,0 +1,4 @@
|
||||
// only newer versions of node support async iterator
|
||||
if (!process.version.startsWith('v8')) {
|
||||
require('./async-iterator.es6')
|
||||
}
|
||||
@ -1217,6 +1217,11 @@ prelude-ls@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
||||
|
||||
prettier@^1.18.2:
|
||||
version "1.18.2"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea"
|
||||
integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==
|
||||
|
||||
process-nextick-args@~1.0.6:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user