1 | "use strict";
|
2 |
|
3 | const parse = require('./parse');
|
4 | const assert = require('assert');
|
5 |
|
6 |
|
7 | describe(`parse`, function ()
|
8 | {
|
9 | it(`defaults`, function ()
|
10 | {
|
11 | assert.deepEqual(parse({}, {}), {
|
12 | offset: 0,
|
13 | limit: 20,
|
14 | filter: [],
|
15 | sort: false,
|
16 | order: 'asc',
|
17 | extra: [],
|
18 | returnFacets: false
|
19 | })
|
20 | })
|
21 |
|
22 | it(`facets`, function ()
|
23 | {
|
24 | assert.equal(parse({}, {})
|
25 | .returnFacets, false)
|
26 | assert.equal(parse({
|
27 | facets: true
|
28 | }, {
|
29 | facets: false
|
30 | })
|
31 | .returnFacets, true)
|
32 | assert.equal(parse({
|
33 | facets: true
|
34 | }, {
|
35 | facets: true
|
36 | })
|
37 | .returnFacets, true)
|
38 | })
|
39 |
|
40 | it(`extra`, function ()
|
41 | {
|
42 | assert.deepEqual(parse({}, {})
|
43 | .extra, [])
|
44 | assert.deepEqual(parse({}, {
|
45 | extra: 'a'
|
46 | })
|
47 | .extra, ['a'])
|
48 | assert.deepEqual(parse({}, {
|
49 | extra: 'a|b'
|
50 | })
|
51 | .extra, ['a', 'b'])
|
52 | })
|
53 |
|
54 | it(`limit`, function ()
|
55 | {
|
56 | assert.deepEqual(parse({}, {})
|
57 | .limit, 20)
|
58 | const limit = {
|
59 | minimum: 30,
|
60 | default: 45,
|
61 | maximum: 60
|
62 | };
|
63 | assert.deepEqual(parse({
|
64 | limit
|
65 | }, {})
|
66 | .limit, 45)
|
67 | assert.deepEqual(parse({
|
68 | limit
|
69 | }, {
|
70 | limit: 100
|
71 | })
|
72 | .limit, 60)
|
73 | assert.deepEqual(parse({
|
74 | limit
|
75 | }, {
|
76 | limit: 0
|
77 | })
|
78 | .limit, 30)
|
79 | })
|
80 |
|
81 | it(`sort`, function ()
|
82 | {
|
83 | assert.deepEqual(parse({}, {})
|
84 | .sort, false)
|
85 | const sort = ['a', 'b'];
|
86 | assert.deepEqual(parse({
|
87 | sort
|
88 | }, {
|
89 | sort: ''
|
90 | })
|
91 | .sort, false)
|
92 | assert.deepEqual(parse({
|
93 | sort
|
94 | }, {
|
95 | sort: 'a'
|
96 | })
|
97 | .sort, 'a')
|
98 | assert.deepEqual(parse({
|
99 | sort
|
100 | }, {
|
101 | sort: 'b'
|
102 | })
|
103 | .sort, 'b')
|
104 | assert.deepEqual(parse({
|
105 | sort
|
106 | }, {
|
107 | sort: 'c'
|
108 | })
|
109 | .sort, false)
|
110 | })
|
111 |
|
112 | it(`order`, function ()
|
113 | {
|
114 | assert.deepEqual(parse({}, {})
|
115 | .order, 'asc')
|
116 | assert.deepEqual(parse({}, {
|
117 | order: ''
|
118 | })
|
119 | .order, 'asc')
|
120 | assert.deepEqual(parse({}, {
|
121 | order: 'asc'
|
122 | })
|
123 | .order, 'asc')
|
124 | assert.deepEqual(parse({}, {
|
125 | order: 'dsc'
|
126 | })
|
127 | .order, 'dsc')
|
128 | assert.deepEqual(parse({}, {
|
129 | order: 'desc'
|
130 | })
|
131 | .order, 'dsc')
|
132 | })
|
133 |
|
134 | it(`offset`, function ()
|
135 | {
|
136 | assert.deepEqual(parse({}, {})
|
137 | .offset, 0)
|
138 | assert.deepEqual(parse({}, {
|
139 | offset: -99
|
140 | })
|
141 | .offset, 0)
|
142 | assert.deepEqual(parse({}, {
|
143 | offset: 50000
|
144 | })
|
145 | .offset, 50000)
|
146 | assert.deepEqual(parse({}, {
|
147 | offset: '2'
|
148 | })
|
149 | .offset, 2)
|
150 | })
|
151 |
|
152 | const fields = {
|
153 | fields: {
|
154 | field1: {},
|
155 | field2: {
|
156 | filters: []
|
157 | },
|
158 | field3: {
|
159 | filters: ['filter1']
|
160 | },
|
161 | field4: {
|
162 | filters: ['filter1', 'filter2']
|
163 | },
|
164 | field5: {
|
165 | filters: ['regex']
|
166 | },
|
167 | field6: {
|
168 | filters: ['filter'],
|
169 | enum: ['allowed']
|
170 | }
|
171 | }
|
172 | };
|
173 |
|
174 | it(`no fields 0`, function ()
|
175 | {
|
176 | assert.deepEqual(parse({}, {
|
177 | field0: 'xxx'
|
178 | })
|
179 | .filter, [])
|
180 | })
|
181 |
|
182 | it(`no fields 1`, function ()
|
183 | {
|
184 | assert.deepEqual(parse({
|
185 | fields: {}
|
186 | }, {
|
187 | field0: 'xxx'
|
188 | })
|
189 | .filter, [])
|
190 | })
|
191 |
|
192 | it(`no fields 2`, function ()
|
193 | {
|
194 | assert.deepEqual(parse({}, {
|
195 | field1: 'xxx'
|
196 | })
|
197 | .filter, [])
|
198 | })
|
199 | it(`no filters`, function ()
|
200 | {
|
201 | assert.deepEqual(parse(fields, {
|
202 | field1: 'xxx'
|
203 | })
|
204 | .filter, [])
|
205 | assert.deepEqual(parse(fields, {
|
206 | field2: 'xxx'
|
207 | })
|
208 | .filter, [])
|
209 | })
|
210 | it(`filter no match`, function ()
|
211 | {
|
212 | assert.deepEqual(parse(fields, {
|
213 | field3: 'xxx:xxx'
|
214 | })
|
215 | .filter, [{
|
216 | "field": "field3",
|
217 | "filter": "filter1",
|
218 | "value": [
|
219 | "xxx:xxx"
|
220 | ]
|
221 | }])
|
222 | })
|
223 | it(`default filter`, function ()
|
224 | {
|
225 | assert.deepEqual(parse(fields, {
|
226 | field3: 'xxx'
|
227 | })
|
228 | .filter, [{
|
229 | "field": "field3",
|
230 | "filter": "filter1",
|
231 | "value": [
|
232 | "xxx"
|
233 | ]
|
234 | }]
|
235 | )
|
236 | })
|
237 | it(`multi value seperator`, function ()
|
238 | {
|
239 | assert.deepEqual(parse(fields, {
|
240 | field3: 'xxx|yyy'
|
241 | })
|
242 | .filter, [{
|
243 | "field": "field3",
|
244 | "filter": "filter1",
|
245 | "value": [
|
246 | "xxx",
|
247 | "yyy"
|
248 | ]
|
249 | }]
|
250 | )
|
251 | })
|
252 | it(`multi filter seperator`, function ()
|
253 | {
|
254 | assert.deepEqual(parse(fields, {
|
255 | field3: ['xxx', 'yyy']
|
256 | })
|
257 | .filter, [{
|
258 | "field": "field3",
|
259 | "filter": "filter1",
|
260 | "value": [
|
261 | "xxx"
|
262 | ]
|
263 | }, {
|
264 | "field": "field3",
|
265 | "filter": "filter1",
|
266 | "value": [
|
267 | "yyy"
|
268 | ]
|
269 | }]
|
270 | )
|
271 | })
|
272 | it(`regex no seperator`, function ()
|
273 | {
|
274 | assert.deepEqual(parse(fields, {
|
275 | field5: 'xxx|yyy'
|
276 | })
|
277 | .filter, [{
|
278 | "field": "field5",
|
279 | "filter": "regex",
|
280 | "value": [
|
281 | "xxx|yyy"
|
282 | ]
|
283 | }]
|
284 | )
|
285 | })
|
286 | it(`non-default filter`, function ()
|
287 | {
|
288 | assert.deepEqual(parse(fields, {
|
289 | field4: 'filter2:yyy'
|
290 | })
|
291 | .filter, [{
|
292 | "field": "field4",
|
293 | "filter": "filter2",
|
294 | "value": [
|
295 | "yyy"
|
296 | ]
|
297 | }]
|
298 | )
|
299 | })
|
300 | it(`non-default filter empty value`, function ()
|
301 | {
|
302 | assert.deepEqual(parse(fields, {
|
303 | field4: 'filter2:'
|
304 | })
|
305 | .filter, [{
|
306 | "field": "field4",
|
307 | "filter": "filter2",
|
308 | "value": [
|
309 | ""
|
310 | ]
|
311 | }]
|
312 | )
|
313 | })
|
314 | it(`allowed values`, function ()
|
315 | {
|
316 | assert.deepEqual(parse(fields, {
|
317 | field6: 'allowed|notallowed'
|
318 | })
|
319 | .filter, [{
|
320 | "field": "field6",
|
321 | "filter": "filter",
|
322 | "value": [
|
323 | "allowed"
|
324 | ]
|
325 | }]
|
326 | )
|
327 | })
|
328 |
|
329 | });
|