UNPKG

@lykmapipo/permission

Version:

A representation of ability to perform an action or access a resource.

125 lines (115 loc) 4.17 kB
'use strict'; /* dependencies */ const _ = require('lodash'); const { expect } = require('@lykmapipo/mongoose-test-helpers'); const { Permission } = require('../..'); describe('Permission Get', () => { before((done) => { Permission.deleteMany(done); }); let permissions = Permission.fake(32); before((done) => { Permission.insertMany(permissions, (error, created) => { permissions = created; done(error, created); }); }); it('should be able to get without options', (done) => { Permission.get((error, results) => { expect(error).to.not.exist; expect(results).to.exist; expect(results.data).to.exist; expect(results.data).to.have.length(10); expect(results.total).to.exist; expect(results.total).to.be.equal(32); expect(results.limit).to.exist; expect(results.limit).to.be.equal(10); expect(results.skip).to.exist; expect(results.skip).to.be.equal(0); expect(results.page).to.exist; expect(results.page).to.be.equal(1); expect(results.pages).to.exist; expect(results.pages).to.be.equal(4); expect(results.lastModified).to.exist; expect(_.maxBy(results.data, 'updatedAt').updatedAt).to.be.at.most( results.lastModified ); done(error, results); }); }); it('should be able to get with options', (done) => { const options = { page: 1, limit: 20 }; Permission.get(options, (error, results) => { expect(error).to.not.exist; expect(results).to.exist; expect(results.data).to.exist; expect(results.data).to.have.length(20); expect(results.total).to.exist; expect(results.total).to.be.equal(32); expect(results.limit).to.exist; expect(results.limit).to.be.equal(20); expect(results.skip).to.exist; expect(results.skip).to.be.equal(0); expect(results.page).to.exist; expect(results.page).to.be.equal(1); expect(results.pages).to.exist; expect(results.pages).to.be.equal(2); expect(results.lastModified).to.exist; expect(_.maxBy(results.data, 'updatedAt').updatedAt).to.be.at.most( results.lastModified ); done(error, results); }); }); it('should be able to search with options', (done) => { const options = { filter: { q: permissions[0].wildcard } }; Permission.get(options, (error, results) => { expect(error).to.not.exist; expect(results).to.exist; expect(results.data).to.exist; expect(results.data).to.have.length.of.at.least(1); expect(results.total).to.exist; expect(results.total).to.be.at.least(1); expect(results.limit).to.exist; expect(results.limit).to.be.equal(10); expect(results.skip).to.exist; expect(results.skip).to.be.equal(0); expect(results.page).to.exist; expect(results.page).to.be.equal(1); expect(results.pages).to.exist; expect(results.pages).to.be.equal(1); expect(results.lastModified).to.exist; expect(_.maxBy(results.data, 'updatedAt').updatedAt).to.be.at.most( results.lastModified ); done(error, results); }); }); it('should parse filter options', (done) => { const options = { filter: { wildcard: permissions[0].wildcard } }; Permission.get(options, (error, results) => { expect(error).to.not.exist; expect(results).to.exist; expect(results.data).to.exist; expect(results.data).to.have.length.of.at.least(1); expect(results.total).to.exist; expect(results.total).to.be.at.least(1); expect(results.limit).to.exist; expect(results.limit).to.be.equal(10); expect(results.skip).to.exist; expect(results.skip).to.be.equal(0); expect(results.page).to.exist; expect(results.page).to.be.equal(1); expect(results.pages).to.exist; expect(results.pages).to.be.equal(1); expect(results.lastModified).to.exist; expect(_.maxBy(results.data, 'updatedAt').updatedAt).to.be.at.most( results.lastModified ); done(error, results); }); }); after((done) => { Permission.deleteMany(done); }); });