waterline-sql-builder
Version:
Generate SQL (stage 5 query) from a Waterline statement (stage 4 query).
74 lines (67 loc) • 1.9 kB
JavaScript
var Sequelizer = require('../../../index')({ dialect: 'postgres' }).sequelizer;
var analyze = require('../../support/analyze');
var assert = require('assert');
describe('Sequelizer ::', function() {
describe('WHERE Simple statements', function() {
it('should generate a query with a simple WHERE statement', function() {
var tree = analyze({
select: ['id'],
where: {
and: [
{
firstName: 'Test'
},
{
lastName: 'User'
}
]
},
from: 'users'
});
var result = Sequelizer(tree);
assert.equal(result.sql, 'select "id" from "users" where "firstName" = $1 and "lastName" = $2');
assert.deepEqual(result.bindings, ['Test', 'User']);
});
it('should generate a valid query when operators are used', function() {
var tree = analyze({
select: ['*'],
where: {
and: [
{
votes: {
'>': 100
}
}
]
},
from: 'users'
});
var result = Sequelizer(tree);
assert.equal(result.sql, 'select * from "users" where "votes" > $1');
assert.deepEqual(result.bindings, ['100']);
});
it('should generate a valid query when multiple columns and operators are used', function() {
var tree = analyze({
select: ['*'],
where: {
and: [
{
votes: {
'>': 100
}
},
{
age: {
'<': 50
}
}
]
},
from: 'users'
});
var result = Sequelizer(tree);
assert.equal(result.sql, 'select * from "users" where "votes" > $1 and "age" < $2');
assert.deepEqual(result.bindings, ['100', '50']);
});
});
});