@@ -14,7 +14,7 @@ describe("full text search", () => {
14
14
}
15
15
16
16
let db : Loki ;
17
- let coll : Collection ;
17
+ let coll : Collection < User > ;
18
18
19
19
beforeEach ( ( ) => {
20
20
db = new Loki ( "MyDB" ) ;
@@ -95,6 +95,40 @@ describe("full text search", () => {
95
95
expect ( coll . find ( { "$fts" : query } ) . length ) . toBe ( 3 ) ;
96
96
} ) ;
97
97
98
+ it ( "sort" , ( ) => {
99
+ let query = new QueryBuilder ( ) . fuzzy ( "name" , "quak" ) . fuzziness ( 3 ) . build ( ) ;
100
+
101
+ expect ( coll . chain ( ) . sortByScoring ) . toThrowAnyError ( ) ;
102
+
103
+ let res = coll . chain ( ) . find ( { "$fts" : query } ) ;
104
+ expect ( res . data ( ) . length ) . toBe ( 4 ) ;
105
+
106
+ const unsorted = res . data ( ) ;
107
+ const sorted_desc = res . sortByScoring ( ) . data ( ) ;
108
+ const sorted_asc = res . sortByScoring ( true ) . data ( ) ;
109
+
110
+ expect ( unsorted . length ) . toBe ( sorted_desc . length ) ;
111
+ expect ( sorted_desc . length ) . toBe ( sorted_asc . length ) ;
112
+ expect ( unsorted ) . not . toEqual ( sorted_desc ) ;
113
+ expect ( unsorted ) . not . toEqual ( sorted_asc ) ;
114
+
115
+ expect ( sorted_desc [ 0 ] . name ) . toBe ( "quak" ) ;
116
+ expect ( sorted_desc [ 3 ] . name ) . toBe ( "quarrk" ) ;
117
+
118
+ expect ( sorted_asc [ 0 ] . name ) . toBe ( "quarrk" ) ;
119
+ expect ( sorted_asc [ 3 ] . name ) . toBe ( "quak" ) ;
120
+
121
+ // With dynamic view.
122
+ const dv = coll . addDynamicView ( "MyScoringView" ) ;
123
+ expect ( dv . data ( ) ) . toEqual ( unsorted ) ;
124
+
125
+ expect ( dv . applySortByScoring ) . toThrowAnyError ( ) ;
126
+ dv . applyFind ( { "$fts" : query } ) ;
127
+
128
+ expect ( dv . applySortByScoring ( ) . data ( ) ) . toEqual ( sorted_desc ) ;
129
+ expect ( dv . applySortByScoring ( true ) . data ( ) ) . toEqual ( sorted_asc ) ;
130
+ } ) ;
131
+
98
132
it ( "save/load" , ( done ) => {
99
133
const adapter = { adapter : new LokiMemoryAdapter ( ) } ;
100
134
db . initializePersistence ( adapter )
0 commit comments