water-orm
Version:
A monolith version of Standalone waterline ORM
336 lines (271 loc) • 11.9 kB
JavaScript
var assert = require('assert'),
_ = require('lodash');
describe('Queryable Interface', function() {
describe('Modifiers', function() {
describe('greaterThan (>)', function() {
describe('integers', function() {
/////////////////////////////////////////////////////
// TEST SETUP
////////////////////////////////////////////////////
var testName = 'greaterThan test';
before(function(done) {
var users = [];
for(var i=40; i<44; i++) {
users.push({ first_name: testName, age: i });
}
Queryable.User.createEach(users, function(err) {
if(err) return done(err);
done();
});
});
/////////////////////////////////////////////////////
// TEST METHODS
////////////////////////////////////////////////////
it('should return records with greaterThan key', function(done) {
Queryable.User.find({ first_name: testName, age: { greaterThan: 40 }}).sort('age').exec(function(err, users) {
assert.ifError(err);
assert(Array.isArray(users));
assert.strictEqual(users.length, 3);
assert.strictEqual(users[0].age, 41);
done();
});
});
it('should return records with symbolic usage > usage', function(done) {
Queryable.User.find({ first_name: testName, age: { '>': 40 }}).sort('age').exec(function(err, users) {
assert.ifError(err);
assert(Array.isArray(users));
assert.strictEqual(users.length, 3);
assert.strictEqual(users[0].age, 41);
done();
});
});
});
describe('dates', function() {
/////////////////////////////////////////////////////
// TEST SETUP
////////////////////////////////////////////////////
var testName = 'greaterThan dates test';
before(function(done) {
// Insert 10 Users
var users = [],
date;
for(var i=0; i<10; i++) {
date = new Date(2013,10,1);
date.setDate(date.getDate() + i);
users.push({
first_name: 'greaterThan_dates_user' + i,
type: testName,
dob: date
});
}
Queryable.User.createEach(users, function(err, users) {
if(err) return done(err);
done();
});
});
/////////////////////////////////////////////////////
// TEST METHODS
////////////////////////////////////////////////////
it('should return records with greaterThan key when searching dates', function(done) {
Queryable.User.find({ type: testName, dob: { greaterThan: new Date(2013, 10, 9) }}).sort('first_name').exec(function(err, users) {
assert.ifError(err);
assert(Array.isArray(users));
assert.strictEqual(users.length, 1);
assert.equal(users[0].first_name, 'greaterThan_dates_user9');
done();
});
});
it('should return records with symbolic usage > usage when searching dates', function(done) {
Queryable.User.find({ type: testName, dob: { '>': new Date(2013, 10, 9) }}).sort('first_name').exec(function(err, users) {
assert.ifError(err);
assert(Array.isArray(users));
assert.strictEqual(users.length, 1);
assert.equal(users[0].first_name, 'greaterThan_dates_user9');
done();
});
});
});
describe('strings', function() {
/////////////////////////////////////////////////////
// TEST SETUP
////////////////////////////////////////////////////
var testName = 'greaterThan strings test';
before(function(done) {
// Insert 10 Users
var users = [],
date;
for(var i=0; i<10; i++) {
users.push({
first_name: i + ' greaterThan_strings_user',
type: testName,
dob: date
});
}
Queryable.User.createEach(users, function(err, users) {
if(err) return done(err);
done();
});
});
/////////////////////////////////////////////////////
// TEST METHODS
////////////////////////////////////////////////////
it('should return records with greaterThan key when searching strings', function(done) {
Queryable.User.find({ type: testName, first_name: { greaterThan: '2 greaterThan_strings_user' }}).sort('first_name').exec(function(err, users) {
assert.ifError(err);
assert(Array.isArray(users));
assert.strictEqual(users.length, 7);
assert.equal(users[0].first_name, '3 greaterThan_strings_user');
done();
});
});
it('should return records with symbolic usage > usage when searching strings', function(done) {
Queryable.User.find({ type: testName, first_name: { '>': '2 greaterThan_strings_user' }}).sort('first_name').exec(function(err, users) {
assert.ifError(err);
assert(Array.isArray(users));
assert.strictEqual(users.length, 7);
assert.equal(users[0].first_name, '3 greaterThan_strings_user');
done();
});
});
});
});
describe('greaterThanOrEqual (>=)', function() {
describe('integers', function() {
/////////////////////////////////////////////////////
// TEST SETUP
////////////////////////////////////////////////////
var testName = 'greaterThanOrEqual test';
before(function(done) {
var users = [];
for(var i=40; i<44; i++) {
users.push({ first_name: testName, age: i });
}
Queryable.User.createEach(users, function(err) {
if(err) return done(err);
done();
});
});
/////////////////////////////////////////////////////
// TEST METHODS
////////////////////////////////////////////////////
it('should return records with greaterThanOrEqual key', function(done) {
Queryable.User.find({ first_name: testName, age: { greaterThanOrEqual: 41 }}).sort('age').exec(function(err, users) {
assert.ifError(err);
assert(Array.isArray(users));
assert.strictEqual(users.length, 3);
assert.strictEqual(users[0].age, 41);
done();
});
});
it('should return records with symbolic usage >= usage', function(done) {
Queryable.User.find({ first_name: testName, age: { '>=': 41 }}).sort('age').exec(function(err, users) {
assert.ifError(err);
assert(Array.isArray(users));
assert.strictEqual(users.length, 3);
assert.strictEqual(users[0].age, 41);
done();
});
});
});
describe('dates', function() {
/////////////////////////////////////////////////////
// TEST SETUP
////////////////////////////////////////////////////
var testName = 'greaterThanOrEqual dates test';
before(function(done) {
// Insert 10 Users
var users = [],
date;
for(var i=0; i<10; i++) {
date = new Date(2013,10,1);
date.setDate(date.getDate() + i);
users.push({
first_name: 'greaterThanOrEqual_dates_user' + i,
type: testName,
dob: date
});
}
Queryable.User.createEach(users, function(err, users) {
if(err) return done(err);
done();
});
});
/////////////////////////////////////////////////////
// TEST METHODS
////////////////////////////////////////////////////
it('should return records with greaterThanOrEqual key when searching dates', function(done) {
Queryable.User.find({ type: testName, dob: { greaterThanOrEqual: new Date(2013, 10, 9) }}).sort('first_name').exec(function(err, users) {
assert.ifError(err);
assert(Array.isArray(users));
assert.strictEqual(users.length, 2);
assert.equal(users[0].first_name, 'greaterThanOrEqual_dates_user8');
done();
});
});
it('should return records with symbolic usage >= usage when searching dates', function(done) {
Queryable.User.find({ type: testName, dob: { '>=': new Date(2013, 10, 9) }}).sort('first_name').exec(function(err, users) {
assert.ifError(err);
assert(Array.isArray(users));
assert.strictEqual(users.length, 2);
assert.equal(users[0].first_name, 'greaterThanOrEqual_dates_user8');
done();
});
});
it('should return records with symbolic usage >= usage when searching dates as strings', function(done) {
var dateString = new Date(2013,10,9);
dateString = dateString.toString();
Queryable.User.find({ type: testName, dob: { '>=': dateString }}).sort('first_name').exec(function(err, users) {
assert.ifError(err);
assert(Array.isArray(users));
assert.strictEqual(users.length, 2);
assert.equal(users[0].first_name, 'greaterThanOrEqual_dates_user8');
done();
});
});
});
describe('strings', function() {
/////////////////////////////////////////////////////
// TEST SETUP
////////////////////////////////////////////////////
var testName = 'greaterThanOrEqual strings test';
before(function(done) {
// Insert 10 Users
var users = [],
date;
for(var i=0; i<10; i++) {
users.push({
first_name: i + ' greaterThanOrEqual_strings_user',
type: testName,
dob: date
});
}
Queryable.User.createEach(users, function(err, users) {
if(err) return done(err);
done();
});
});
/////////////////////////////////////////////////////
// TEST METHODS
////////////////////////////////////////////////////
it('should return records with greaterThanOrEqual key when searching strings', function(done) {
Queryable.User.find({ type: testName, first_name: { greaterThanOrEqual: '2 greaterThanOrEqual_strings_user' }}).sort('first_name').exec(function(err, users) {
assert.ifError(err);
assert(Array.isArray(users));
assert.strictEqual(users.length, 8);
assert.equal(users[0].first_name, '2 greaterThanOrEqual_strings_user');
done();
});
});
it('should return records with symbolic usage >= usage when searching strings', function(done) {
Queryable.User.find({ type: testName, first_name: { '>=': '2 greaterThanOrEqual_strings_user' }}).sort('first_name').exec(function(err, users) {
assert.ifError(err);
assert(Array.isArray(users));
assert.strictEqual(users.length, 8);
assert.equal(users[0].first_name, '2 greaterThanOrEqual_strings_user');
done();
});
});
});
});
});
});