// This test written in mocha+should.js var should = require('./init.js'); var db, Railway, Station; describe('scope', function () { before(function () { db = getSchema(); Railway = db.define('Railway', { URID: {type: String, index: true} }, { scopes: { highSpeed: { where: { highSpeed: true } } } }); Station = db.define('Station', { USID: {type: String, index: true}, capacity: {type: Number, index: true}, thoughput: {type: Number, index: true}, isActive: {type: Boolean, index: true}, isUndeground: {type: Boolean, index: true} }); }); beforeEach(function (done) { Railway.destroyAll(function () { Station.destroyAll(done); }); }); it('should define scope using options.scopes', function () { Railway.scopes.should.have.property('highSpeed'); Railway.highSpeed.should.be.function; }); it('should define scope with query', function (done) { Station.scope('active', {where: {isActive: true}}); Station.scopes.should.have.property('active'); Station.active.create(function (err, station) { should.not.exist(err); should.exist(station); should.exist(station.isActive); station.isActive.should.be.true; done(); }); }); it('should allow scope chaining', function (done) { Station.scope('active', {where: {isActive: true}}); Station.scope('subway', {where: {isUndeground: true}}); Station.active.subway.create(function (err, station) { should.not.exist(err); should.exist(station); station.isActive.should.be.true; station.isUndeground.should.be.true; done(); }) }); it('should query all', function (done) { Station.scope('active', {where: {isActive: true}}); Station.scope('inactive', {where: {isActive: false}}); Station.scope('ground', {where: {isUndeground: true}}); Station.active.ground.create(function () { Station.inactive.ground.create(function () { Station.ground.inactive(function (err, ss) { ss.should.have.lengthOf(1); done(); }); }); }); }); });