New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

any-db-adapter-spec

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

any-db-adapter-spec - npm Package Compare versions

Comparing version 2.0.3 to 2.1.0

126

interfaces/queryable.js
var EventEmitter = require('events').EventEmitter
exports.testProperties = function (queryable, adapter, assert, name) {
exports.testProperties = function (queryable, adapter, test, name) {
name = name || 'queryable'
assert.ok(queryable instanceof EventEmitter, name + ' is an EventEmitter')
assert.equal(typeof queryable.query, 'function', name + '.query is a function')
assert.equal(typeof queryable.adapter, 'object', name + '.adapter is an object')
assert.equal(queryable.adapter, adapter, name + '.adapter == adapter')
test.ok(queryable instanceof EventEmitter, name + ' is an EventEmitter')
test.equal(typeof queryable.query, 'function', name + '.query is a function')
test.equal(typeof queryable.adapter, 'object', name + '.adapter is an object')
test.equal(queryable.adapter, adapter, name + '.adapter == adapter')
}
exports.testEvents = function (queryable, assert, name) {
exports.testEvents = function (queryable, test, name) {
name = name || 'queryable'
var emittedData = false
, emittedFields = false
test.test(name + '.query events with callbacks', function (test) {
testEventsWithResults(queryable, test, name)
})
test.test(name + '.query events with no result and no callback', function (test) {
testEventsNoResultsNoCallback(queryable, test, name)
})
test.test(name + '.query events with errors', function (test) {
testEventsQueryError(queryable, test, name)
})
}
function testEventsWithResults (queryable, test, name) {
test.plan(19)
var emittedFields = false
, emittedData = false
, emittedClose = false
, emittedEnd = false
, callbackCalled = false
var query = queryable.adapter.createQuery('SELECT 1 AS val', function (err, result) {
test.ok(!callbackCalled, 'callback was not already called')
if (err) throw err
assert.ok(emittedFields, 'callback after query.emit("fields", fields)')
assert.ok(emittedData, 'callback after query.emit("data", row)')
assert.ok(!emittedEnd, 'callback before query.emit("end")')
callbackCalled = true
test.ok(emittedFields, 'callback after query.emit("fields", fields)')
test.ok(emittedData, 'callback after query.emit("data", row)')
test.ok(emittedClose, 'callback after query.emit("close")')
test.ok(!emittedEnd, 'callback before query.emit("end")')
})
queryable.on('query', function (q) {
assert.equal(q, query, name + '.emit("query", query)')
queryable.once('query', function (q) {
test.equal(q, query, name + '.emit("query", query)')
})

@@ -31,3 +51,3 @@

emittedFields = true
assert.equal(fields[0].name, 'val', '"fields" event is correct')
test.ok(Array.isArray(fields), '"fields" event value is an array')
})

@@ -37,16 +57,80 @@

emittedData = true
assert.ok(emittedFields, 'query.emit("data") after query.emit("fields")')
assert.equal(row.val, 1)
test.ok(emittedFields, 'query.emit("data") after query.emit("fields")')
test.equal(row.val, 1)
})
query.on('close', function (arg) {
test.ok(!emittedClose, 'query.emit("close") emitted once')
emittedClose = true
test.ok(emittedFields, 'query.emit("close") after query.emit("fields")')
test.ok(emittedData, 'query.emit("close") after query.emit("data")')
test.ok(!arg, 'No extra arguments to "end" event')
})
query.on('end', function (arg) {
test.ok(!emittedEnd, 'query.emit("end") emitted once')
emittedEnd = true
assert.ok(emittedFields, 'query.emit("end") after query.emit("fields")')
assert.ok(emittedData, 'query.emit("end") after query.emit("data")')
assert.ok(!arg, 'No extra arguments to "end" event')
test.ok(emittedClose, 'query.emit("end") after query.emit("close")')
test.ok(emittedFields, 'query.emit("end") after query.emit("fields")')
test.ok(emittedData, 'query.emit("end") after query.emit("data")')
test.ok(!arg, 'No extra arguments to "end" event')
})
assert.equal(queryable.query(query), query, name + '.query(query) returns same query')
test.equal(queryable.query(query), query, name + '.query(query) returns same query')
}
exports.testEvents.plan = 11
function testEventsNoResultsNoCallback (queryable, test, name) {
test.plan(2)
var sql = 'SELECT 1 AS val WHERE 0 = 1'
if (queryable.adapter.name == 'mysql') {
sql = 'SELECT 1 AS val FROM INFORMATION_SCHEMA.TABLES WHERE 0 = 1';
}
var emittedFields = false
var query = queryable.query(sql)
query.on('fields', function (fields) {
emittedFields = true
test.ok(Array.isArray(fields), '"fields" event value is an array')
})
query.on('close', function () {
test.ok(emittedFields, 'query.emit("close") after query.emit("fields")')
})
query.on('end', function () {
test.fail('query emitted "end" with no reader!')
})
}
function testEventsQueryError (queryable, test, name) {
test.plan(6)
var emittedClose = false
, emittedError = false
, emittedEnd = false
var query = queryable.query('not a valid SQL statement', function (err, result) {
test.ok(emittedClose, 'callback called after query.emit("close")')
test.ok(!emittedError, 'callback is first listener to query.emit("error")')
test.ok(!emittedEnd, 'callback before query.emit("end")')
})
query.on('error', function (err) {
emittedError = true
test.ok(err, 'query.emit("error", err)')
})
query.on('close', function () {
emittedClose = true
test.pass('query.emit("close")')
})
query.on('end', function () {
emittedEnd = true
test.pass('query.emit("end")')
})
}
exports.testEvents.plan = 3

2

package.json
{
"name": "any-db-adapter-spec",
"version": "2.0.3",
"version": "2.1.0",
"description": "Specification and test suite for any-db adapters",

@@ -5,0 +5,0 @@ "main": "test-any-db-adapter.js",

@@ -147,7 +147,13 @@ # Any-DB API

* `'error', error` - Emitted if the query results in an error.
* `'error', error` - Emitted at most once per query. Note that this event will
be emitted for errors even if a callback was provided, the callback will
simply be subscribed to the 'error' event.
* `'fields', fields` - An array of [Field][ResultSet] objects emitted before
any `'data'` events.
The following events are part of the [Readable][] interface:
* `'data', row` - Emitted for each row in the query result set.
* `'end'` - Emitted when the query completes.
* `'close'` - Emitted when the query completes.
* `'end'` - Emitted after all query results have been consumed.

@@ -154,0 +160,0 @@ ## ResultSet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc