node-query/tests/query-builder-base.js

255 lines
5.9 KiB
JavaScript

'use strict';
module.exports = (function() {
var base = {};
/**
* Inject the appropriate driver and adapter for the test suite
*
* @param {Object} qb - The adapter-specific query builder object
* @param {Function} callback - The test callback
* @return void
*/
base._setUp = function(qb, callback) {
base.qb = qb;
base.testCallback = callback;
};
/**
* Generic query builder tests
*/
base.tests = {
'Get tests' : {
'Get with function': function(test) {
base.qb.select('id, COUNT(id) as count')
.from('create_test')
.groupBy('id')
.get(base.testCallback.bind(test, test));
test.done();
},
'Basic select all get': function(test) {
base.qb.get('create_test', base.testCallback.bind(test, test));
test.done();
},
'Basic select all with from': function(test) {
base.qb.from('create_test')
.get(base.testCallback.bind(test, test));
test.done();
},
'Get with limit': function(test) {
base.qb.get('create_test', 2, base.testCallback.bind(test, test));
test.done();
},
'Get with limit and offset': function(test) {
base.qb.get('create_test', 2, 1, base.testCallback.bind(test, test));
test.done();
},
'Test get with having': function(test) {
base.qb.select('id')
.from('create_test')
.groupBy('id')
.having({'id >':1})
.having('id !=', 3)
.get(base.testCallback.bind(test, test));
test.done();
},
"Test get with 'orHaving'": function(test) {
base.qb.select('id')
.from('create_test')
.groupBy('id')
.having({'id >':1})
.orHaving('id !=', 3)
.get(base.testCallback.bind(test, test));
test.done();
}
},
'Select tests' : {
'Select where get': function(test) {
base.qb.select(['id', 'key as k', 'val'])
.where('id >', 1)
.where('id <', 900)
.get('create_test', 2, 1, base.testCallback.bind(test, test));
base.qb.select('id, key as k, val')
.where('id !=', 1)
.get('create_test', 2, 1, base.testCallback.bind(test, test));
test.done();
},
'Multi Order By': function(test) {
base.qb.from('create_test')
.orderBy('id, key')
.get(base.testCallback.bind(test, test));
test.done();
},
'Select get': function(test) {
base.qb.select('id, key as k, val')
.get('create_test', 2, 1, base.testCallback.bind(test, test));
test.done();
},
'Select from get': function(test) {
base.qb.select('id, key as k, val')
.from('create_test ct')
.where('id >', 1)
.get(base.testCallback.bind(test, test));
test.done();
},
'Select from limit get': function(test) {
base.qb.select('id, key as k, val')
.from('create_test ct')
.where('id >', 1)
.limit(3)
.get(base.testCallback.bind(test, test));
test.done();
}
},
'Grouping tests' : {
'Using grouping method': function(test) {
base.qb.select('id, key as k, val')
.from('create_test')
.groupStart()
.where('id >', 1)
.where('id <', 900)
.groupEnd()
.limit(2, 1)
.get(base.testCallback.bind(test, test));
test.done();
},
'Using or grouping method': function(test) {
base.qb.select('id, key as k, val')
.from('create_test')
.groupStart()
.where('id >', 1)
.where('id <', 900)
.groupEnd()
.orGroupStart()
.where('id', 0)
.groupEnd()
.limit(2, 1)
.get(base.testCallback.bind(test, test));
test.done();
},
'Using or not grouping method': function(test) {
base.qb.select('id, key as k, val')
.from('create_test')
.groupStart()
.where('id >', 1)
.where('id <', 900)
.groupEnd()
.orNotGroupStart()
.where('id', 0)
.groupEnd()
.limit(2, 1)
.get(base.testCallback.bind(test, test));
test.done();
}
},
'Where in tests' : {
'Where in': function(test) {
base.qb.from('create_test')
.whereIn('id', [0, 6, 56, 563, 341])
.get(base.testCallback.bind(test, test));
test.done();
},
'Or Where in': function(test) {
base.qb.from('create_test')
.where('key', 'false')
.orWhereIn('id', [0, 6, 56, 563, 341])
.get(base.testCallback.bind(test, test));
test.done();
},
'Where Not in': function(test) {
base.qb.from('create_test')
.where('key', 'false')
.whereNotIn('id', [0, 6, 56, 563, 341])
.get(base.testCallback.bind(test, test));
test.done();
},
'Or Where Not in': function(test) {
base.qb.from('create_test')
.where('key', 'false')
.orWhereNotIn('id', [0, 6, 56, 563, 341])
.get(base.testCallback.bind(test, test));
test.done();
}
},
'Query modifier tests': {
'Order By': function(test) {
base.qb.select('id, key as k, val')
.from('create_test')
.where('id >', 0)
.where('id <', 9000)
.orderBy('id', 'DESC')
.orderBy('k', "ASC")
.limit(5, 2)
.get(base.testCallback.bind(test, test));
test.done();
},
'Group by': function(test) {
base.qb.select('id, key as k, val')
.from('create_test')
.where('id >', 0)
.where('id <', 9000)
.groupBy('k')
.groupBy(['id', 'val'])
.orderBy('id', 'DESC')
.orderBy('k', "ASC")
.limit(5, 2)
.get(base.testCallback.bind(test, test));
test.done();
},
'Or Where': function(test) {
base.qb.select('id, key as k, val')
.from('create_test')
.where(' id ', 1)
.orWhere('key >', 0)
.limit(2, 1)
.get(base.testCallback.bind(test, test));
test.done();
},
'Like' : function(test) {
base.qb.from('create_test')
.like('key', 'og')
.get(base.testCallback.bind(test, test));
test.done();
},
'Or Like': function(test) {
base.qb.from('create_test')
.like('key', 'og')
.orLike('key', 'val')
.get(base.testCallback.bind(test, test));
test.done();
}
},
'DB update tests' : {
},
'Compiled query tests' : {
},
'Error tests' : {
}
};
return base;
}());