You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.0 KiB
80 lines
2.0 KiB
'use strict';
|
|
var assert = require('assert');
|
|
|
|
var Table = require(__dirname + '/../../lib/table');
|
|
|
|
// specify dialect classes
|
|
var dialects = {
|
|
pg : require('../../lib/dialect/postgres'),
|
|
sqlite: require('../../lib/dialect/sqlite'),
|
|
mysql : require('../../lib/dialect/mysql')
|
|
};
|
|
|
|
module.exports = {
|
|
test: function(expected) {
|
|
|
|
// for each dialect
|
|
Object.keys(dialects).forEach(function(dialect) {
|
|
if(expected[dialect]) {
|
|
|
|
var DialectClass = dialects[dialect];
|
|
|
|
var title = dialect+': '+(expected.title || expected[dialect].text || expected[dialect]);
|
|
test(title, function() {
|
|
|
|
// check if this query is expected to throw
|
|
if(expected[dialect].throws) {
|
|
|
|
assert.throws(function() {
|
|
new DialectClass().getQuery(expected.query);
|
|
});
|
|
|
|
} else {
|
|
|
|
// build query for dialect
|
|
var compiledQuery = new DialectClass().getQuery(expected.query);
|
|
|
|
// test result is correct
|
|
var expectedText = expected[dialect].text || expected[dialect];
|
|
assert.equal(compiledQuery.text, expectedText,'query result');
|
|
|
|
// if params are specified then test these are correct
|
|
var expectedParams = expected[dialect].params || expected.params;
|
|
if(expectedParams) {
|
|
assert.equal(expectedParams.length, compiledQuery.values.length, 'params length');
|
|
for(var i = 0; i < expectedParams.length; i++) {
|
|
assert.equal(expectedParams[i], compiledQuery.values[i], 'param '+(i+1));
|
|
}
|
|
}
|
|
|
|
}
|
|
});
|
|
|
|
|
|
} // if
|
|
}); // forEach
|
|
|
|
},
|
|
|
|
defineUserTable: function () {
|
|
return Table.define({
|
|
name: 'user',
|
|
quote: true,
|
|
columns: ['id','name']
|
|
});
|
|
},
|
|
|
|
definePostTable: function () {
|
|
return Table.define({
|
|
name: 'post',
|
|
columns: ['id', 'userId', 'content']
|
|
});
|
|
},
|
|
|
|
defineCommentTable: function () {
|
|
return Table.define({
|
|
name: 'comment',
|
|
columns: ['postId', 'text']
|
|
});
|
|
}
|
|
};
|
|
|