@@ -214,7 +214,7 @@ describe('PoPageDynamicSearchComponent:', () => {
214
214
expect ( component . poAdvancedFilter . open ) . toHaveBeenCalled ( ) ;
215
215
} ) ;
216
216
217
- it ( `onAdvancedSearch: should call 'setDisclaimers', 'setFilters' and 'advancedSearch.emit'` , ( ) => {
217
+ it ( `onAdvancedSearch: should call 'setDisclaimers', 'setFilters', 'addComplexFilter' and 'advancedSearch.emit'` , ( ) => {
218
218
const filter = { property : 'value1' } ;
219
219
const optionsService = undefined ;
220
220
@@ -224,13 +224,15 @@ describe('PoPageDynamicSearchComponent:', () => {
224
224
: component . filters ;
225
225
226
226
spyOn ( component , < any > 'setDisclaimers' ) ;
227
+ spyOn ( component , < any > 'addComplexFilter' ) . and . returnValue ( filter ) ;
227
228
spyOn ( component . advancedSearch , 'emit' ) ;
228
229
spyOn ( component , < any > 'setFilters' ) ;
229
230
230
231
component . onAdvancedSearch ( { filter, optionsService } ) ;
231
232
232
233
expect ( component [ 'setDisclaimers' ] ) . toHaveBeenCalledWith ( filter , optionsService , visibleFilters ) ;
233
234
expect ( component [ 'setFilters' ] ) . toHaveBeenCalledBefore ( component . advancedSearch . emit ) ;
235
+ expect ( component [ 'addComplexFilter' ] ) . toHaveBeenCalledWith ( filter ) ;
234
236
expect ( component . advancedSearch . emit ) . toHaveBeenCalledWith ( filter ) ;
235
237
} ) ;
236
238
@@ -285,7 +287,8 @@ describe('PoPageDynamicSearchComponent:', () => {
285
287
} ,
286
288
poPageList : {
287
289
clearInputSearch : ( ) => { }
288
- }
290
+ } ,
291
+ addComplexFilter : ( ) => ( { } )
289
292
} ;
290
293
const filteredItems = { filter : 'fakeFilter' , optionsService : 'fakeOptionsService' } ;
291
294
const isAdvancedSearch = true ;
@@ -590,6 +593,81 @@ describe('PoPageDynamicSearchComponent:', () => {
590
593
expect ( component [ 'setDisclaimers' ] ( filters ) ) . toEqual ( result ) ;
591
594
} ) ;
592
595
596
+ it ( `addComplexFilter: should return {}` , ( ) => {
597
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' } ] ;
598
+
599
+ const filters = { } ;
600
+
601
+ const result = { } ;
602
+
603
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
604
+ } ) ;
605
+
606
+ it ( `addComplexFilter: should return filter without attribute 'range'` , ( ) => {
607
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' } ] ;
608
+
609
+ const filters = { name : 'Name1' , genre : 'male' , birthdate : '2020-01-15' } ;
610
+
611
+ const result = { name : 'Name1' , genre : 'male' , birthdate : '2020-01-15' } ;
612
+
613
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
614
+ } ) ;
615
+
616
+ it ( `addComplexFilter: should return filter with attribute 'range'` , ( ) => {
617
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' , range : true } ] ;
618
+
619
+ const filters = { name : 'Name1' , genre : 'male' , birthdate : { start : '2020-01-01' , end : '2020-01-31' } } ;
620
+
621
+ const result = { name : 'Name1' , genre : 'male' , $filter : 'birthdate ge 2020-01-01 and birthdate le 2020-01-31' } ;
622
+
623
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
624
+ } ) ;
625
+
626
+ it ( `addComplexFilter: should return filter with attribute 'range' and final date 'undefined'` , ( ) => {
627
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' , range : true } ] ;
628
+
629
+ const filters = { name : 'Name1' , genre : 'male' , birthdate : { start : '2020-01-01' , end : undefined } } ;
630
+
631
+ const result = { name : 'Name1' , genre : 'male' , birthdate : { start : '2020-01-01' , end : undefined } } ;
632
+
633
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
634
+ } ) ;
635
+
636
+ it ( `addComplexFilter: should return filter with attribute 'range' and initial date 'undefined'` , ( ) => {
637
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' , range : true } ] ;
638
+
639
+ const filters = { name : 'Name1' , genre : 'male' , birthdate : { start : undefined , end : '2020-01-31' } } ;
640
+
641
+ const result = { name : 'Name1' , genre : 'male' , birthdate : { start : undefined , end : '2020-01-31' } } ;
642
+
643
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
644
+ } ) ;
645
+
646
+ it ( `addComplexFilter: should return filter with two attribute 'range'` , ( ) => {
647
+ component . filters = [
648
+ { property : 'name' } ,
649
+ { property : 'genre' } ,
650
+ { property : 'birthdate' , range : true } ,
651
+ { property : 'deathdate' , range : true }
652
+ ] ;
653
+
654
+ const filters = {
655
+ name : 'Name1' ,
656
+ genre : 'male' ,
657
+ birthdate : { start : '2020-01-01' , end : '2020-01-31' } ,
658
+ deathdate : { start : '2021-01-01' , end : '2021-01-31' }
659
+ } ;
660
+
661
+ const result = {
662
+ name : 'Name1' ,
663
+ genre : 'male' ,
664
+ $filter :
665
+ 'birthdate ge 2020-01-01 and birthdate le 2020-01-31 and deathdate ge 2021-01-01 and deathdate le 2021-01-31'
666
+ } ;
667
+
668
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
669
+ } ) ;
670
+
593
671
it ( 'getFilterValueToDisclaimer: should return formated date if field type is PoDynamicFieldType.Date' , ( ) => {
594
672
const field = { type : PoDynamicFieldType . Date , property : '1' , label : 'date' } ;
595
673
const value = '2020-08-12' ;
0 commit comments