@@ -155,18 +155,20 @@ describe('PoPageDynamicSearchComponent:', () => {
155
155
expect ( component . poAdvancedFilter . open ) . toHaveBeenCalled ( ) ;
156
156
} ) ;
157
157
158
- it ( `onAdvancedSearch: should call 'setDisclaimers', 'setFilters' and 'advancedSearch.emit'` , ( ) => {
158
+ it ( `onAdvancedSearch: should call 'setDisclaimers', 'setFilters', 'addComplexFilter' and 'advancedSearch.emit'` , ( ) => {
159
159
const filter = { property : 'value1' } ;
160
160
const optionsService = undefined ;
161
161
162
162
spyOn ( component , < any > 'setDisclaimers' ) ;
163
+ spyOn ( component , < any > 'addComplexFilter' ) . and . returnValue ( filter ) ;
163
164
spyOn ( component . advancedSearch , 'emit' ) ;
164
165
spyOn ( component , < any > 'setFilters' ) ;
165
166
166
167
component . onAdvancedSearch ( { filter, optionsService } ) ;
167
168
168
169
expect ( component [ 'setDisclaimers' ] ) . toHaveBeenCalledWith ( filter , optionsService ) ;
169
170
expect ( component [ 'setFilters' ] ) . toHaveBeenCalledBefore ( component . advancedSearch . emit ) ;
171
+ expect ( component [ 'addComplexFilter' ] ) . toHaveBeenCalledWith ( filter ) ;
170
172
expect ( component . advancedSearch . emit ) . toHaveBeenCalledWith ( filter ) ;
171
173
} ) ;
172
174
@@ -339,6 +341,81 @@ describe('PoPageDynamicSearchComponent:', () => {
339
341
expect ( component [ 'setDisclaimers' ] ( filters ) ) . toEqual ( result ) ;
340
342
} ) ;
341
343
344
+ it ( `addComplexFilter: should return {}` , ( ) => {
345
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' } ] ;
346
+
347
+ const filters = { } ;
348
+
349
+ const result = { } ;
350
+
351
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
352
+ } ) ;
353
+
354
+ it ( `addComplexFilter: should return filter without attribute 'range'` , ( ) => {
355
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' } ] ;
356
+
357
+ const filters = { name : 'Name1' , genre : 'male' , birthdate : '2020-01-15' } ;
358
+
359
+ const result = { name : 'Name1' , genre : 'male' , birthdate : '2020-01-15' } ;
360
+
361
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
362
+ } ) ;
363
+
364
+ it ( `addComplexFilter: should return filter with attribute 'range'` , ( ) => {
365
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' , range : true } ] ;
366
+
367
+ const filters = { name : 'Name1' , genre : 'male' , birthdate : { start : '2020-01-01' , end : '2020-01-31' } } ;
368
+
369
+ const result = { name : 'Name1' , genre : 'male' , $filter : 'birthdate ge 2020-01-01 and birthdate le 2020-01-31' } ;
370
+
371
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
372
+ } ) ;
373
+
374
+ it ( `addComplexFilter: should return filter with attribute 'range' and final date 'undefined'` , ( ) => {
375
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' , range : true } ] ;
376
+
377
+ const filters = { name : 'Name1' , genre : 'male' , birthdate : { start : '2020-01-01' , end : undefined } } ;
378
+
379
+ const result = { name : 'Name1' , genre : 'male' , birthdate : { start : '2020-01-01' , end : undefined } } ;
380
+
381
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
382
+ } ) ;
383
+
384
+ it ( `addComplexFilter: should return filter with attribute 'range' and initial date 'undefined'` , ( ) => {
385
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' , range : true } ] ;
386
+
387
+ const filters = { name : 'Name1' , genre : 'male' , birthdate : { start : undefined , end : '2020-01-31' } } ;
388
+
389
+ const result = { name : 'Name1' , genre : 'male' , birthdate : { start : undefined , end : '2020-01-31' } } ;
390
+
391
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
392
+ } ) ;
393
+
394
+ it ( `addComplexFilter: should return filter with two attribute 'range'` , ( ) => {
395
+ component . filters = [
396
+ { property : 'name' } ,
397
+ { property : 'genre' } ,
398
+ { property : 'birthdate' , range : true } ,
399
+ { property : 'deathdate' , range : true }
400
+ ] ;
401
+
402
+ const filters = {
403
+ name : 'Name1' ,
404
+ genre : 'male' ,
405
+ birthdate : { start : '2020-01-01' , end : '2020-01-31' } ,
406
+ deathdate : { start : '2021-01-01' , end : '2021-01-31' }
407
+ } ;
408
+
409
+ const result = {
410
+ name : 'Name1' ,
411
+ genre : 'male' ,
412
+ $filter :
413
+ 'birthdate ge 2020-01-01 and birthdate le 2020-01-31 and deathdate ge 2021-01-01 and deathdate le 2021-01-31'
414
+ } ;
415
+
416
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
417
+ } ) ;
418
+
342
419
it ( 'getFilterValueToDisclaimer: should return formated date if field type is PoDynamicFieldType.Date' , ( ) => {
343
420
const field = { type : PoDynamicFieldType . Date , property : '1' , label : 'date' } ;
344
421
const value = '2020-08-12' ;
0 commit comments