diff --git a/Classes/Domain/Search/SearchService.php b/Classes/Domain/Search/SearchService.php index 1fc792e..7c8beeb 100644 --- a/Classes/Domain/Search/SearchService.php +++ b/Classes/Domain/Search/SearchService.php @@ -126,9 +126,7 @@ class SearchService ArrayUtility::mergeRecursiveWithOverrule( $filter, - $this->configuration->get('searching.filter'), - true, - false + $this->configuration->get('searching.filter') ); $searchRequest->setFilter($filter); diff --git a/Documentation/source/changelog.rst b/Documentation/source/changelog.rst index d6a2b09..2cad89f 100644 --- a/Documentation/source/changelog.rst +++ b/Documentation/source/changelog.rst @@ -13,3 +13,4 @@ Changelog changelog/20180308-131-respect-page-cache-clear changelog/20180308-introduce-php70-type-hints changelog/20180306-120-facet-configuration + changelog/20180926-163-allow-zero-as-typoscript-filter-value diff --git a/Documentation/source/changelog/20180926-163-allow-zero-as-typoscript-filter-value.rst b/Documentation/source/changelog/20180926-163-allow-zero-as-typoscript-filter-value.rst new file mode 100644 index 0000000..860e164 --- /dev/null +++ b/Documentation/source/changelog/20180926-163-allow-zero-as-typoscript-filter-value.rst @@ -0,0 +1,10 @@ +Bugfix 163 "It's not possible to configure a filter via TS with value 0 - zero" +=============================================================================== + +Prior to the change it was not possible to define a filter while searching, via +TypoScript, with the value `0`. `0` was filtered as empty value. + +Now the configured filter is no longer filtered, it's up to the integrator to provide +proper configuration. Therefore `0` is now a valid and respected filter value. + +See :issue:`163`. diff --git a/Tests/Unit/Domain/Search/SearchServiceTest.php b/Tests/Unit/Domain/Search/SearchServiceTest.php index 50c1f49..3b88076 100644 --- a/Tests/Unit/Domain/Search/SearchServiceTest.php +++ b/Tests/Unit/Domain/Search/SearchServiceTest.php @@ -164,6 +164,33 @@ class SearchServiceTest extends AbstractUnitTestCase $this->subject->search($searchRequest); } + /** + * @test + */ + public function configuredFilterWithValueZeroAreAddedToRequestWithoutAnyFilter() + { + $this->configuration->expects($this->any()) + ->method('getIfExists') + ->withConsecutive(['searching.size'], ['searching.facets']) + ->will($this->onConsecutiveCalls(null, null)); + $this->configuration->expects($this->any()) + ->method('get') + ->will($this->onConsecutiveCalls( + ['property' => '0'], + $this->throwException(new InvalidArgumentException) + )); + + $this->connection->expects($this->once()) + ->method('search') + ->with($this->callback(function ($searchRequest) { + return $searchRequest->getFilter() === ['property' => '0']; + })) + ->willReturn($this->getMockBuilder(SearchResultInterface::class)->getMock()); + + $searchRequest = new SearchRequest('SearchWord'); + $this->subject->search($searchRequest); + } + /** * @test */ @@ -220,34 +247,6 @@ class SearchServiceTest extends AbstractUnitTestCase $this->subject->search($searchRequest); } - /** - * @test - */ - public function emptyConfiguredFilterIsNotChangingRequestWithExistingFilter() - { - $this->configuration->expects($this->any()) - ->method('getIfExists') - ->withConsecutive(['searching.size'], ['searching.facets']) - ->will($this->onConsecutiveCalls(null, null)); - $this->configuration->expects($this->any()) - ->method('get') - ->will($this->onConsecutiveCalls( - ['anotherProperty' => ''], - $this->throwException(new InvalidArgumentException) - )); - - $this->connection->expects($this->once()) - ->method('search') - ->with($this->callback(function ($searchRequest) { - return $searchRequest->getFilter() === ['anotherProperty' => 'anything']; - })) - ->willReturn($this->getMockBuilder(SearchResultInterface::class)->getMock()); - - $searchRequest = new SearchRequest('SearchWord'); - $searchRequest->setFilter(['anotherProperty' => 'anything']); - $this->subject->search($searchRequest); - } - /** * @test */