waterline-sql-builder
Version:
Generate SQL (stage 5 query) from a Waterline statement (stage 4 query).
32 lines (26 loc) • 827 B
JavaScript
/**
* Given a db flavor and a query object, generate the SQL statement and test
* it against the expected outcome.
*/
var assert = require('assert');
var async = require('async');
var GeneratorFn = require('../../index');
module.exports = function(test, cb) {
var testDialect = function testDialect(outcome, next) {
var generator = GeneratorFn({ dialect: outcome.dialect });
var results = generator.generate(test.query);
try {
assert.equal(results.sql, outcome.sql, outcome.dialect);
if (outcome.bindings) {
assert.deepEqual(results.bindings, outcome.bindings, outcome.dialect);
}
} catch (e) {
e.dialect = outcome.dialect;
return cb(e);
}
return async.setImmediate(function() {
next();
});
};
async.each(test.outcomes, testDialect, cb);
};