UNPKG

mongoose-cursor-pagination

Version:
118 lines (101 loc) 3.64 kB
'use strict'; var _should = require('should'); var _should2 = _interopRequireDefault(_should); var _mongoose = require('mongoose'); var _mongoose2 = _interopRequireDefault(_mongoose); var _index = require('../index'); var _index2 = _interopRequireDefault(_index); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } describe('mongoose-cursor-pagination', function () { before(function () { _mongoose2.default.Promise = Promise; return _mongoose2.default.connect('mongodb://127.0.0.1/test', { useMongoClient: true }); }); before(function () { var UserSchema = new _mongoose2.default.Schema({ name: { type: String }, value: { type: Number, unique: true, index: true } }); UserSchema.plugin(_index2.default, { limit: 5 }); _mongoose2.default.model('User', UserSchema); }); before(function () { return _mongoose2.default.model('User').insertMany(Array(1000).fill().map(function (_, i) { return { name: 'User ' + i, value: i }; })); }); after(function () { return _mongoose2.default.model('User').remove(); }); it('pagination with no options', function () { return _mongoose2.default.model('User').paginate({}, { key: 'value' }).then(function (results) { _should2.default.equal(results.items.length, 5); }); }); it('pagination by key and ascendingly', function () { return _mongoose2.default.model('User').paginate({}, { key: 'value', sort: { value: 1 } }).then(function (results) { _should2.default.equal(results.items.length, 5); _should2.default.equal(results.hasMore, true); _should2.default.equal(results.items[0].value, 0); _should2.default.equal(results.items[4].value, 4); }); }); it('pagination by key, ascendingly and startingAfter', function () { return _mongoose2.default.model('User').paginate({}, { key: 'value', sort: { value: 1 }, startingAfter: 4 }).then(function (results) { _should2.default.equal(results.items.length, 5); _should2.default.equal(results.hasMore, true); _should2.default.equal(results.items[0].value, 5); _should2.default.equal(results.items[4].value, 9); }); }); it('pagination when it reaches the end', function () { return _mongoose2.default.model('User').paginate({}, { key: 'value', sort: { value: 1 }, startingAfter: 998 }).then(function (results) { _should2.default.equal(results.items.length, 1); _should2.default.equal(results.hasMore, false); _should2.default.equal(results.items[0].value, 999); }); }); it('pagination by key and descendingly', function () { return _mongoose2.default.model('User').paginate({}, { key: 'value', sort: { value: -1 } }).then(function (results) { _should2.default.equal(results.items.length, 5); _should2.default.equal(results.hasMore, true); _should2.default.equal(results.items[0].value, 999); _should2.default.equal(results.items[4].value, 995); }); }); it('pagination by key, ascendingly and endingBefore', function () { return _mongoose2.default.model('User').paginate({}, { key: 'value', sort: { value: -1 }, endingBefore: 995 }).then(function (results) { _should2.default.equal(results.items.length, 5); _should2.default.equal(results.hasMore, true); _should2.default.equal(results.items[0].value, 994); _should2.default.equal(results.items[4].value, 990); }); }); }); /* eslint-env mocha */