@@ 72-88 (lines=17) @@ | ||
69 | $this->assertEquals('Field1 = "test" or Field2 = "test" or Field3 = "test"', $reducedFilter[3]->toUQL()); |
|
70 | } |
|
71 | ||
72 | public function testReducesSearchTextFilterWithFilterConditionsAndUsesWildcardForLikeComparisonMethod() |
|
73 | { |
|
74 | $fields = [ |
|
75 | $this->buildField('Field1', new StringDataType(), 'field1'), |
|
76 | $this->buildField('Field2', new StringDataType(), 'field2'), |
|
77 | $this->buildField('Field3', new StringDataType(), 'field3'), |
|
78 | ]; |
|
79 | ||
80 | $filterToReduce = $this->createFilter(Filter::CONDITION_TYPE_OR, [ |
|
81 | $this->createFilterCondition('column_search_text', FilterCondition::METHOD_STRING_LIKE, 'test', true), |
|
82 | ]); |
|
83 | ||
84 | $searchTextFilterReducer = new SearchTextFilterReducer($fields); |
|
85 | $reducedFilter = $searchTextFilterReducer->reduceToFilterCondition($filterToReduce); |
|
86 | ||
87 | $this->assertEquals('Field1 ~ "%test%" or Field2 ~ "%test%" or Field3 ~ "%test%"', $reducedFilter[0]->toUQL()); |
|
88 | } |
|
89 | ||
90 | public function testReducesSearchTextFilterWithFilterConditionsButSkipsFieldsThatDoNotSupportGivenMethod() |
|
91 | { |
|
@@ 112-128 (lines=17) @@ | ||
109 | $this->assertEquals('StringField = "test" or AnotherStringField = "test"', $reducedFilter[0]->toUQL()); |
|
110 | } |
|
111 | ||
112 | public function testReducesSearchTextFilterWithFilterConditionsButSkipsFieldsThatDoNotDefineDatabaseFilterQueryField() |
|
113 | { |
|
114 | $fields = [ |
|
115 | $this->buildField('FieldWithDbQueryField', new StringDataType(), 'field_with_db_field'), |
|
116 | $this->buildField('FieldWithoutDbQueryField', new StringDataType(), null), |
|
117 | $this->buildField('AnotherFieldWithDbQueryField', new StringDataType(), 'another_field_with_db_field'), |
|
118 | ]; |
|
119 | ||
120 | $filterToReduce = $this->createFilter(Filter::CONDITION_TYPE_OR, [ |
|
121 | $this->createFilterCondition('column_search_text', FilterCondition::METHOD_STRING_EQ, 'test', true), |
|
122 | ]); |
|
123 | ||
124 | $searchTextFilterReducer = new SearchTextFilterReducer($fields); |
|
125 | $reducedFilter = $searchTextFilterReducer->reduceToFilterCondition($filterToReduce); |
|
126 | ||
127 | $this->assertEquals('FieldWithDbQueryField = "test" or AnotherFieldWithDbQueryField = "test"', $reducedFilter[0]->toUQL()); |
|
128 | } |
|
129 | ||
130 | public function testReducesSearchTextFilterWithFilterConditionsButSkipsFieldsThatDefineDatabaseSelectAliasAsArray() |
|
131 | { |