76 lines
2.0 KiB
JavaScript
76 lines
2.0 KiB
JavaScript
define("dstore/tests/SimpleQuery", [
|
|
'../SimpleQuery',
|
|
'dojo/_base/declare',
|
|
'../Filter',
|
|
'intern!object',
|
|
'intern/chai!assert'
|
|
], function (SimpleQuery, declare, Filter, registerSuite, assert) {
|
|
var testData = [
|
|
{ id: 1, name: 'one', odd: true },
|
|
{ id: 2, name: 'two', odd: false },
|
|
{ id: 3, name: 'three', odd: true },
|
|
{ id: 4, name: 'four', odd: false },
|
|
{ id: 5, name: 'five', odd: true }
|
|
];
|
|
|
|
var simpleQuery = new SimpleQuery();
|
|
|
|
registerSuite({
|
|
name: 'SimpleQuery',
|
|
|
|
'filter with predicate': function () {
|
|
var filter = simpleQuery._createFilterQuerier({
|
|
type: 'function',
|
|
args: [function (o) { return o.odd; }]
|
|
});
|
|
|
|
assert.deepEqual(filter(testData), [
|
|
{ id: 1, name: 'one', odd: true },
|
|
{ id: 3, name: 'three', odd: true },
|
|
{ id: 5, name: 'five', odd: true }
|
|
]);
|
|
},
|
|
|
|
'filter with object': function () {
|
|
var filterExpression = new Filter();
|
|
var filter = simpleQuery._createFilterQuerier(filterExpression.eq('odd', false));
|
|
|
|
assert.deepEqual(filter(testData), [
|
|
{ id: 2, name: 'two', odd: false },
|
|
{ id: 4, name: 'four', odd: false }
|
|
]);
|
|
},
|
|
|
|
'sort with array of sort attributes': function () {
|
|
var sort = simpleQuery._createSortQuerier([
|
|
{ property: 'odd' },
|
|
{ property: 'name', descending: true }
|
|
]);
|
|
|
|
assert.deepEqual(sort(testData), [
|
|
{ id: 2, name: 'two', odd: false },
|
|
{ id: 4, name: 'four', odd: false },
|
|
{ id: 3, name: 'three', odd: true },
|
|
{ id: 1, name: 'one', odd: true },
|
|
{ id: 5, name: 'five', odd: true }
|
|
]);
|
|
},
|
|
|
|
'sort with comparator': function () {
|
|
var sort = simpleQuery._createSortQuerier(function (a, b) {
|
|
a = a.name;
|
|
b = b.name;
|
|
return (a < b) ? -1 : (a === b ? 0 : 1);
|
|
});
|
|
|
|
assert.deepEqual(sort(testData), [
|
|
{ id: 5, name: 'five', odd: true },
|
|
{ id: 4, name: 'four', odd: false },
|
|
{ id: 1, name: 'one', odd: true },
|
|
{ id: 3, name: 'three', odd: true },
|
|
{ id: 2, name: 'two', odd: false }
|
|
]);
|
|
}
|
|
});
|
|
});
|