shamjs
Version:
Mock data generator.
489 lines (485 loc) • 16.2 kB
JavaScript
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 } ] }
)
})
})