Skip to content

Commit 95739ba

Browse files
committed
fix: add operator tests
1 parent 7e184fd commit 95739ba

File tree

2 files changed

+106
-3
lines changed

2 files changed

+106
-3
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"coveralls": "^3.0.1",
3838
"env-test": "^1.0.0",
3939
"istanbul": "^1.1.0-alpha.1",
40+
"js-promise-queue": "^1.1.0",
4041
"mocha": "^5.2.0",
4142
"semantic-release": "^15.13.4",
4243
"should": "~4.0.4",

test/fileStore.js

+105-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ const EventEmitter = require('events').EventEmitter
22
const FileStoreAdapter = require('../lib')
33
const fs = require('fs')
44
const path = require('path')
5-
const querystring = require('querystring')
5+
const promiseQueue = require('js-promise-queue')
66
const should = require('should')
7-
const url = require('url')
87
const uuid = require('uuid')
98

109
const config = require(__dirname + '/../config')
@@ -606,6 +605,109 @@ describe('FileStore', function () {
606605
})
607606
})
608607

608+
// Operator tests for:
609+
// '$eq'
610+
// $in'
611+
// '$lte'
612+
// '$lt'
613+
// '$gte'
614+
// '$gt'
615+
describe('query operators', function () {
616+
it('should handle all query operators', done => {
617+
let fileStore = new FileStoreAdapter()
618+
619+
fileStore.connect({ database: 'content', collection: 'users' }).then(() => {
620+
fileStore.getCollection('users').then((collection) => {
621+
collection.clear()
622+
623+
let users = [
624+
{ name: 'Ernie', age: 7, colour: 'yellow' },
625+
{ name: 'BigBird', age: 17, colour: 'yellow' },
626+
{ name: 'Bert', age: 9, colour: 'orange' }
627+
]
628+
629+
fileStore.insert({ data: users, collection: 'users', schema: {}}).then(results => {
630+
let queue = []
631+
queue.push({ name: 'Ernie' })
632+
queue.push({ colour: { '$eq': 'yellow' } })
633+
queue.push({ age: { '$in': [7, 9] } })
634+
queue.push({ age: { '$lt': 9 } })
635+
queue.push({ age: { '$lte': 9 } })
636+
queue.push({ age: { '$gt': 9 } })
637+
queue.push({ age: { '$gte': 7 } })
638+
639+
function testFn (query) {
640+
return fileStore.find({
641+
query: query,
642+
collection: 'users',
643+
options: {},
644+
schema: {},
645+
settings: {}
646+
})
647+
}
648+
649+
promiseQueue(queue, testFn, {
650+
interval: 300
651+
}).then(results => {
652+
let result = results[0].results[0]
653+
if (result && result.name === 'Ernie') {
654+
console.log(' = OK')
655+
} else {
656+
done(new Error('Implicit equality query failed with ' + JSON.stringify(result)))
657+
}
658+
659+
result = results[1].results[0]
660+
if (result && result.colour === 'yellow') {
661+
console.log(' $eq OK')
662+
} else {
663+
done(new Error('$eq query failed with ' + JSON.stringify(result)))
664+
}
665+
666+
result = results[2].results
667+
if (result && result.length === 2 && (result[0].age === 7 || result[1].age === 9)) {
668+
console.log(' $in OK')
669+
} else {
670+
done(new Error('$in query failed with ' + JSON.stringify(result)))
671+
}
672+
673+
result = results[3].results
674+
if (result && result.length === 1 && (result[0].age === 7)) {
675+
console.log(' $lt OK')
676+
} else {
677+
done(new Error('$lt query failed with ' + JSON.stringify(result)))
678+
}
679+
680+
result = results[4].results
681+
if (result && result.length === 2 && (result[0].age === 7 || result[1].age === 9)) {
682+
console.log(' $lte OK')
683+
} else {
684+
done(new Error('$lte query failed with ' + JSON.stringify(result)))
685+
}
686+
687+
result = results[5].results
688+
if (result && result.length === 1 && (result[0].age === 17)) {
689+
console.log(' $gt OK')
690+
} else {
691+
done(new Error('$gt query failed with ' + JSON.stringify(result)))
692+
}
693+
694+
result = results[6].results
695+
if (result && result.length === 3) {
696+
console.log(' $gte OK')
697+
} else {
698+
done(new Error('$gte query failed with ' + JSON.stringify(result)))
699+
}
700+
701+
done()
702+
})
703+
})
704+
})
705+
}).catch(err => {
706+
done(err)
707+
})
708+
})
709+
})
710+
609711
describe('update', function () {
610712
describe('$set', function () {
611713
it('should update documents matching the query', function (done) {
@@ -834,7 +936,7 @@ describe('FileStore', function () {
834936
done()
835937
}).catch((err) => {
836938
done(err)
837-
})
939+
})
838940
})
839941
}).catch((err) => {
840942
done(err)

0 commit comments

Comments
 (0)