@@ -2,9 +2,8 @@ const EventEmitter = require('events').EventEmitter
2
2
const FileStoreAdapter = require ( '../lib' )
3
3
const fs = require ( 'fs' )
4
4
const path = require ( 'path' )
5
- const querystring = require ( 'querystring ' )
5
+ const promiseQueue = require ( 'js-promise-queue ' )
6
6
const should = require ( 'should' )
7
- const url = require ( 'url' )
8
7
const uuid = require ( 'uuid' )
9
8
10
9
const config = require ( __dirname + '/../config' )
@@ -606,6 +605,109 @@ describe('FileStore', function () {
606
605
} )
607
606
} )
608
607
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
+
609
711
describe ( 'update' , function ( ) {
610
712
describe ( '$set' , function ( ) {
611
713
it ( 'should update documents matching the query' , function ( done ) {
@@ -834,7 +936,7 @@ describe('FileStore', function () {
834
936
done ( )
835
937
} ) . catch ( ( err ) => {
836
938
done ( err )
837
- } )
939
+ } )
838
940
} )
839
941
} ) . catch ( ( err ) => {
840
942
done ( err )
0 commit comments