UNPKG

shamjs

Version:
489 lines (485 loc) 16.2 kB
var expect = require('expect.js') var sham = require('../../lib/index') describe('query/query.test.js', function () { it('query({page: Number, pageSize: 10})', function () { var list = new sham.g(123, function (index) { return { id: 'id-' + index, text: index } }) expect(sham.query(list, { page: 1, pageSize: 10 })).to.eql( { dataCount: 123, pageCount: 13, page: 1, data: [ { id: 'id-0', text: 0 }, { id: 'id-1', text: 1 }, { id: 'id-2', text: 2 }, { id: 'id-3', text: 3 }, { id: 'id-4', text: 4 }, { id: 'id-5', text: 5 }, { id: 'id-6', text: 6 }, { id: 'id-7', text: 7 }, { id: 'id-8', text: 8 }, { id: 'id-9', text: 9 } ] } ) expect(sham.q(list, { page: 1, pageSize: 10 })).to.eql( { dataCount: 123, pageCount: 13, page: 1, data: [ { id: 'id-0', text: 0 }, { id: 'id-1', text: 1 }, { id: 'id-2', text: 2 }, { id: 'id-3', text: 3 }, { id: 'id-4', text: 4 }, { id: 'id-5', text: 5 }, { id: 'id-6', text: 6 }, { id: 'id-7', text: 7 }, { id: 'id-8', text: 8 }, { id: 'id-9', text: 9 } ] } ) expect(sham.query(list, { page: 2, pageSize: 10 })).to.eql( { dataCount: 123, pageCount: 13, page: 2, data: [ { id: 'id-10', text: 10 }, { id: 'id-11', text: 11 }, { id: 'id-12', text: 12 }, { id: 'id-13', text: 13 }, { id: 'id-14', text: 14 }, { id: 'id-15', text: 15 }, { id: 'id-16', text: 16 }, { id: 'id-17', text: 17 }, { id: 'id-18', text: 18 }, { id: 'id-19', text: 19 } ] } ) expect(sham.query(list, { page: 3, pageSize: 10 })).to.eql( { dataCount: 123, pageCount: 13, page: 3, data: [ { id: 'id-20', text: 20 }, { id: 'id-21', text: 21 }, { id: 'id-22', text: 22 }, { id: 'id-23', text: 23 }, { id: 'id-24', text: 24 }, { id: 'id-25', text: 25 }, { id: 'id-26', text: 26 }, { id: 'id-27', text: 27 }, { id: 'id-28', text: 28 }, { id: 'id-29', text: 29 } ] } ) expect(sham.query(list, { page: 13, pageSize: 10 })).to.eql( { dataCount: 123, pageCount: 13, page: 13, data: [ { id: 'id-120', text: 120 }, { id: 'id-121', text: 121 }, { id: 'id-122', text: 122 } ] } ) expect(sham.query(list, { page: 14, pageSize: 10 })).to.eql( { dataCount: 123, pageCount: 13, page: 13, data: [ { id: 'id-120', text: 120 }, { id: 'id-121', text: 121 }, { id: 'id-122', text: 122 } ] } ) }) it('query({page: Number, pageSize: 4})', function () { var list = new sham.g(123, function (index) { return { id: 'id-' + index, text: index } }) expect(sham.query(list, { page: 1, pageSize: 4 })).to.eql( { dataCount: 123, pageCount: 31, page: 1, data: [ { id: 'id-0', text: 0 }, { id: 'id-1', text: 1 }, { id: 'id-2', text: 2 }, { id: 'id-3', text: 3 } ] } ) expect(sham.query(list, { page: 4, pageSize: 4 })).to.eql( { dataCount: 123, pageCount: 31, page: 4, data: [ { id: 'id-12', text: 12 }, { id: 'id-13', text: 13 }, { id: 'id-14', text: 14 }, { id: 'id-15', text: 15 } ] } ) expect(sham.query(list, { page: 33, pageSize: 4 })).to.eql( { dataCount: 123, pageCount: 31, page: 31, data: [ { id: 'id-120', text: 120 }, { id: 'id-121', text: 121 }, { id: 'id-122', text: 122 } ] } ) }) it('query({page: Number, pageSize: 10, sort: function & string})', function () { var list = [{"id":"id-17","text":17,"age":982},{"id":"id-5","text":5,"age":994},{"id":"id-19","text":19,"age":980},{"id":"id-7","text":7,"age":992},{"id":"id-14","text":14,"age":985},{"id":"id-8","text":8,"age":991},{"id":"id-18","text":18,"age":981},{"id":"id-10","text":10,"age":989},{"id":"id-9","text":9,"age":990},{"id":"id-4","text":4,"age":995},{"id":"id-1","text":1,"age":998},{"id":"id-16","text":16,"age":983},{"id":"id-0","text":0,"age":999},{"id":"id-15","text":15,"age":984},{"id":"id-6","text":6,"age":993},{"id":"id-12","text":12,"age":987},{"id":"id-2","text":2,"age":997},{"id":"id-3","text":3,"age":996},{"id":"id-11","text":11,"age":988},{"id":"id-13","text":13,"age":986}] expect(sham.query(list, { page: 1, pageSize: 10 })).to.eql( { dataCount: 20, pageCount: 2, page: 1, data: [ { id: 'id-17', text: 17, age: 982 }, { id: 'id-5', text: 5, age: 994 }, { id: 'id-19', text: 19, age: 980 }, { id: 'id-7', text: 7, age: 992 }, { id: 'id-14', text: 14, age: 985 }, { id: 'id-8', text: 8, age: 991 }, { id: 'id-18', text: 18, age: 981 }, { id: 'id-10', text: 10, age: 989 }, { id: 'id-9', text: 9, age: 990 }, { id: 'id-4', text: 4, age: 995 } ] } ) expect(sham.query(list, { page: 1, pageSize: 10, sort: function (a, b) { return b.age - a.age } })).to.eql( { dataCount: 20, pageCount: 2, page: 1, data: [ { id: 'id-0', text: 0, age: 999 }, { id: 'id-1', text: 1, age: 998 }, { id: 'id-2', text: 2, age: 997 }, { id: 'id-3', text: 3, age: 996 }, { id: 'id-4', text: 4, age: 995 }, { id: 'id-5', text: 5, age: 994 }, { id: 'id-6', text: 6, age: 993 }, { id: 'id-7', text: 7, age: 992 }, { id: 'id-8', text: 8, age: 991 }, { id: 'id-9', text: 9, age: 990 } ] } ) expect(sham.query(list, { page: 1, pageSize: 10, sort: 'age' })).to.eql( { page: 1, dataCount: 20, pageCount: 2, data: [ { id: 'id-0', text: 0, age: 999 }, { id: 'id-1', text: 1, age: 998 }, { id: 'id-2', text: 2, age: 997 }, { id: 'id-3', text: 3, age: 996 }, { id: 'id-4', text: 4, age: 995 }, { id: 'id-5', text: 5, age: 994 }, { id: 'id-6', text: 6, age: 993 }, { id: 'id-7', text: 7, age: 992 }, { id: 'id-8', text: 8, age: 991 }, { id: 'id-9', text: 9, age: 990 } ] } ) expect(sham.query(list, { page: 1, pageSize: 10, sort: 'id' })).to.eql( { page: 1, dataCount: 20, pageCount: 2, data: [ { id: 'id-9', text: 9, age: 990 }, { id: 'id-8', text: 8, age: 991 }, { id: 'id-7', text: 7, age: 992 }, { id: 'id-6', text: 6, age: 993 }, { id: 'id-5', text: 5, age: 994 }, { id: 'id-4', text: 4, age: 995 }, { id: 'id-3', text: 3, age: 996 }, { id: 'id-2', text: 2, age: 997 }, { id: 'id-19', text: 19, age: 980 }, { id: 'id-18', text: 18, age: 981 } ] } ) expect(sham.query(list, { page: 1, pageSize: 10, sort: function (a, b) { return a.age - b.age } })).to.eql( { dataCount: 20, pageCount: 2, page: 1, data: [ { id: 'id-19', text: 19, age: 980 }, { id: 'id-18', text: 18, age: 981 }, { id: 'id-17', text: 17, age: 982 }, { id: 'id-16', text: 16, age: 983 }, { id: 'id-15', text: 15, age: 984 }, { id: 'id-14', text: 14, age: 985 }, { id: 'id-13', text: 13, age: 986 }, { id: 'id-12', text: 12, age: 987 }, { id: 'id-11', text: 11, age: 988 }, { id: 'id-10', text: 10, age: 989 } ] } ) }) it('query({filter: function)', function () { var list = sham.g(123, function (index) { return { id: 'id-' + index, text: index } }) expect( sham.query(list, { filter: function (item) { return sham.query.fuzzy(item.id, '2') } }) ).to.eql( { data: [ { id: 'id-2', text: 2 }, { id: 'id-12', text: 12 }, { id: 'id-20', text: 20 }, { id: 'id-21', text: 21 }, { id: 'id-22', text: 22 }, { id: 'id-23', text: 23 }, { id: 'id-24', text: 24 }, { id: 'id-25', text: 25 }, { id: 'id-26', text: 26 }, { id: 'id-27', text: 27 }, { id: 'id-28', text: 28 }, { id: 'id-29', text: 29 }, { id: 'id-32', text: 32 }, { id: 'id-42', text: 42 }, { id: 'id-52', text: 52 }, { id: 'id-62', text: 62 }, { id: 'id-72', text: 72 }, { id: 'id-82', text: 82 }, { id: 'id-92', text: 92 }, { id: 'id-102', text: 102 }, { id: 'id-112', text: 112 }, { id: 'id-120', text: 120 }, { id: 'id-121', text: 121 }, { id: 'id-122', text: 122 } ] } ) expect( sham.query(list, { filter: function (item) { return sham.query.fuzzy(item.id, '2') }, sort: function (a, b) { return b.text - a.text } }) ).to.eql( { data: [ { id: 'id-122', text: 122 }, { id: 'id-121', text: 121 }, { id: 'id-120', text: 120 }, { id: 'id-112', text: 112 }, { id: 'id-102', text: 102 }, { id: 'id-92', text: 92 }, { id: 'id-82', text: 82 }, { id: 'id-72', text: 72 }, { id: 'id-62', text: 62 }, { id: 'id-52', text: 52 }, { id: 'id-42', text: 42 }, { id: 'id-32', text: 32 }, { id: 'id-29', text: 29 }, { id: 'id-28', text: 28 }, { id: 'id-27', text: 27 }, { id: 'id-26', text: 26 }, { id: 'id-25', text: 25 }, { id: 'id-24', text: 24 }, { id: 'id-23', text: 23 }, { id: 'id-22', text: 22 }, { id: 'id-21', text: 21 }, { id: 'id-20', text: 20 }, { id: 'id-12', text: 12 }, { id: 'id-2', text: 2 } ] } ) }) it('query({page: Number, pageSize: 10, query: Object)', function () { var list = sham.g(123, function (index) { return { id: 'id-' + index, text: index } }) expect( sham.query(list, { page: 1, query: { id: '2' } }) ).to.eql( { page: 1, dataCount: 24, pageCount: 3, data: [ { id: 'id-2', text: 2 }, { id: 'id-12', text: 12 }, { id: 'id-20', text: 20 }, { id: 'id-21', text: 21 }, { id: 'id-22', text: 22 }, { id: 'id-23', text: 23 }, { id: 'id-24', text: 24 }, { id: 'id-25', text: 25 }, { id: 'id-26', text: 26 }, { id: 'id-27', text: 27 } ] } ) expect( sham.query(list, { page: 3, query: { id: '2' } }) ).to.eql( { page: 3, dataCount: 24, pageCount: 3, data: [ { id: 'id-112', text: 112 }, { id: 'id-120', text: 120 }, { id: 'id-121', text: 121 }, { id: 'id-122', text: 122 } ] } ) }) it('query({query: Object)', function () { var list = sham.g(30, function (index) { return { id: 'id-' + index, text: index } }) expect( sham.query(list, { query: { id: '4' } }) ).to.eql( { data: [ { id: 'id-4', text: 4 }, { id: 'id-14', text: 14 }, { id: 'id-24', text: 24 } ] } ) }) it('query(empty)', function () { var list = sham.g(30, function (index) { return { id: 'id-' + index, text: index } }) expect( sham.query(list) ).to.eql( { data: [ { id: 'id-0', text: 0 }, { id: 'id-1', text: 1 }, { id: 'id-2', text: 2 }, { id: 'id-3', text: 3 }, { id: 'id-4', text: 4 }, { id: 'id-5', text: 5 }, { id: 'id-6', text: 6 }, { id: 'id-7', text: 7 }, { id: 'id-8', text: 8 }, { id: 'id-9', text: 9 }, { id: 'id-10', text: 10 }, { id: 'id-11', text: 11 }, { id: 'id-12', text: 12 }, { id: 'id-13', text: 13 }, { id: 'id-14', text: 14 }, { id: 'id-15', text: 15 }, { id: 'id-16', text: 16 }, { id: 'id-17', text: 17 }, { id: 'id-18', text: 18 }, { id: 'id-19', text: 19 }, { id: 'id-20', text: 20 }, { id: 'id-21', text: 21 }, { id: 'id-22', text: 22 }, { id: 'id-23', text: 23 }, { id: 'id-24', text: 24 }, { id: 'id-25', text: 25 }, { id: 'id-26', text: 26 }, { id: 'id-27', text: 27 }, { id: 'id-28', text: 28 }, { id: 'id-29', text: 29 } ] } ) }) })