@@ -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
@@ -590,6 +592,81 @@ describe('PoPageDynamicSearchComponent:', () => {
590
592
expect ( component [ 'setDisclaimers' ] ( filters ) ) . toEqual ( result ) ;
591
593
} ) ;
592
594
595
+ it ( `addComplexFilter: should return {}` , ( ) => {
596
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' } ] ;
597
+
598
+ const filters = { } ;
599
+
600
+ const result = { } ;
601
+
602
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
603
+ } ) ;
604
+
605
+ it ( `addComplexFilter: should return filter without attribute 'range'` , ( ) => {
606
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' } ] ;
607
+
608
+ const filters = { name : 'Name1' , genre : 'male' , birthdate : '2020-01-15' } ;
609
+
610
+ const result = { name : 'Name1' , genre : 'male' , birthdate : '2020-01-15' } ;
611
+
612
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
613
+ } ) ;
614
+
615
+ it ( `addComplexFilter: should return filter with attribute 'range'` , ( ) => {
616
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' , range : true } ] ;
617
+
618
+ const filters = { name : 'Name1' , genre : 'male' , birthdate : { start : '2020-01-01' , end : '2020-01-31' } } ;
619
+
620
+ const result = { name : 'Name1' , genre : 'male' , $filter : 'birthdate ge 2020-01-01 and birthdate le 2020-01-31' } ;
621
+
622
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
623
+ } ) ;
624
+
625
+ it ( `addComplexFilter: should return filter with attribute 'range' and final date 'undefined'` , ( ) => {
626
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' , range : true } ] ;
627
+
628
+ const filters = { name : 'Name1' , genre : 'male' , birthdate : { start : '2020-01-01' , end : undefined } } ;
629
+
630
+ const result = { name : 'Name1' , genre : 'male' , birthdate : { start : '2020-01-01' , end : undefined } } ;
631
+
632
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
633
+ } ) ;
634
+
635
+ it ( `addComplexFilter: should return filter with attribute 'range' and initial date 'undefined'` , ( ) => {
636
+ component . filters = [ { property : 'name' } , { property : 'genre' } , { property : 'birthdate' , range : true } ] ;
637
+
638
+ const filters = { name : 'Name1' , genre : 'male' , birthdate : { start : undefined , end : '2020-01-31' } } ;
639
+
640
+ const result = { name : 'Name1' , genre : 'male' , birthdate : { start : undefined , end : '2020-01-31' } } ;
641
+
642
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
643
+ } ) ;
644
+
645
+ it ( `addComplexFilter: should return filter with two attribute 'range'` , ( ) => {
646
+ component . filters = [
647
+ { property : 'name' } ,
648
+ { property : 'genre' } ,
649
+ { property : 'birthdate' , range : true } ,
650
+ { property : 'deathdate' , range : true }
651
+ ] ;
652
+
653
+ const filters = {
654
+ name : 'Name1' ,
655
+ genre : 'male' ,
656
+ birthdate : { start : '2020-01-01' , end : '2020-01-31' } ,
657
+ deathdate : { start : '2021-01-01' , end : '2021-01-31' }
658
+ } ;
659
+
660
+ const result = {
661
+ name : 'Name1' ,
662
+ genre : 'male' ,
663
+ $filter :
664
+ 'birthdate ge 2020-01-01 and birthdate le 2020-01-31 and deathdate ge 2021-01-01 and deathdate le 2021-01-31'
665
+ } ;
666
+
667
+ expect ( component [ 'addComplexFilter' ] ( filters ) ) . toEqual ( result ) ;
668
+ } ) ;
669
+
593
670
it ( 'getFilterValueToDisclaimer: should return formated date if field type is PoDynamicFieldType.Date' , ( ) => {
594
671
const field = { type : PoDynamicFieldType . Date , property : '1' , label : 'date' } ;
595
672
const value = '2020-08-12' ;
0 commit comments