UNPKG

5.82 kBJavaScriptView Raw
1"use strict";
2
3const parse = require('./parse');
4const assert = require('assert');
5
6// mirror of error
7describe(`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});