UNPKG

water-orm

Version:

A monolith version of Standalone waterline ORM

224 lines (178 loc) 7.41 kB
var assert = require('assert'), _ = require('lodash'); describe('Queryable Interface', function() { describe('Modifiers', function() { describe('integers', function() { describe('lessThan (<)', function() { ///////////////////////////////////////////////////// // TEST SETUP //////////////////////////////////////////////////// var testName = 'lessThan 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 lessThan key', function(done) { Queryable.User.find({ first_name: testName, age: { lessThan: 42 }}) .sort('age asc') .exec(function(err, users) { assert.ifError(err); assert(Array.isArray(users)); assert.strictEqual(users.length, 2); assert.strictEqual(users[0].age, 40); done(); }); }); it('should return records with symbolic usage < usage', function(done) { Queryable.User.find({ first_name: testName, age: { '<': 42 }}) .sort('age asc') .exec(function(err, users) { assert.ifError(err); assert(Array.isArray(users)); assert.strictEqual(users.length, 2); assert.strictEqual(users[0].age, 40); done(); }); }); }); describe('dates', function() { ///////////////////////////////////////////////////// // TEST SETUP //////////////////////////////////////////////////// var testName = 'lessThan 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: 'lessThan_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 lessThan key when searching dates', function(done) { Queryable.User.find({ type: testName, dob: { lessThan: new Date(2013, 10, 2) }}).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, 'lessThan_dates_user0'); done(); }); }); it('should return records with symbolic usage < usage when searching dates', function(done) { Queryable.User.find({ type: testName, dob: { '<': new Date(2013, 10, 2) }}).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, 'lessThan_dates_user0'); done(); }); }); }); }); describe('lessThanOrEqual (<=)', function() { describe('integers', function() { ///////////////////////////////////////////////////// // TEST SETUP //////////////////////////////////////////////////// var testName = 'lessThanOrEqual 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 lessThanOrEqual key', function(done) { Queryable.User.find({ first_name: testName, age: { lessThanOrEqual: 42 }}).sort('age').exec(function(err, users) { assert.ifError(err); assert(Array.isArray(users)); assert.strictEqual(users.length, 3); assert.strictEqual(users[0].age, 40); done(); }); }); it('should return records with symbolic usage <= usage', function(done) { Queryable.User.find({ first_name: testName, age: { '<=': 42 }}).sort('age').exec(function(err, users) { assert.ifError(err); assert(Array.isArray(users)); assert.strictEqual(users.length, 3); assert.strictEqual(users[0].age, 40); done(); }); }); }); describe('dates', function() { ///////////////////////////////////////////////////// // TEST SETUP //////////////////////////////////////////////////// var testName = 'lessThanOrEqual 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: 'lessThanOrEqual_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 lessThanOrEqual key when searching dates', function(done) { Queryable.User.find({ type: testName, dob: { lessThanOrEqual: new Date(2013, 10, 2) }}).sort('first_name').exec(function(err, users) { assert.ifError(err); assert(Array.isArray(users)); assert.strictEqual(users.length, 2); assert.equal(users[1].first_name, 'lessThanOrEqual_dates_user1'); done(); }); }); it('should return records with symbolic usage <= usage when searching dates', function(done) { Queryable.User.find({ type: testName, dob: { '<=': new Date(2013, 10, 2) }}).sort('first_name').exec(function(err, users) { assert.ifError(err); assert(Array.isArray(users)); assert.strictEqual(users.length, 2); assert.equal(users[1].first_name, 'lessThanOrEqual_dates_user1'); done(); }); }); }); }); }); });