Skip to content

Commit

Permalink
#bugfix findAcceptable filters returns empty results for empty filter…
Browse files Browse the repository at this point in the history
…s and none empty id list in arguments
  • Loading branch information
k-samuel committed Dec 13, 2021
1 parent c35ea9b commit f52b904
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 1 deletion.
4 changes: 4 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
# Changelog
### v1.3.4 (13.12.2021)

#bugfix findAcceptable filters returns empty results for empty filters and none empty id list in arguments


### v1.3.3 (10.12.2021)
Performance update
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "k-samuel/faceted-search",
"version": "1.3.3",
"version": "1.3.4",
"type": "library",
"description": "PHP Faceted search",
"keywords": ["php","faceted search"],
Expand Down
4 changes: 4 additions & 0 deletions src/Search.php
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,10 @@ private function findFilters(array $filters = [], array $inputRecords = [], bool
$indexedFilters[$filter->getFieldName()] = $filter;
}
$filteredRecords = $this->findRecordsMap($indexedFilters, $input);
}else{
if(!empty($input)){
$filteredRecords = $this->findRecordsMap([], $input);
}
}

foreach ($facetsData as $filterName => $filterValues) {
Expand Down
36 changes: 36 additions & 0 deletions tests/unit/SearchTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,42 @@ public function testGetAcceptableFiltersCount()
$this->assertEquals($values, $acceptableFilters[$filter]);
}
}
public function testGetAcceptableFiltersCountLimit()
{
$records = [
['id' => 1, 'color' => 'black', 'size' => 7, 'group' => 'A'],
['id' => 2, 'color' => 'black', 'size' => 8, 'group' => 'A'],
['id' => 3, 'color' => 'white', 'size' => 7, 'group' => 'B'],
['id' => 4, 'color' => 'yellow', 'size' => 7, 'group' => 'C'],
['id' => 5, 'color' => 'black', 'size' => 7, 'group' => 'C'],
];
$index = new Index();
foreach ($records as $item) {
$index->addRecord($item['id'], $item);
}
$facets = new Search($index);

$acceptableFilters = $facets->findAcceptableFiltersCount([], [1, 2]);

$expect = [
'color' => ['black' => 2],
'size' => [7 => 1, 8 => 1],
'group' => ['A' => 2],
];
foreach ($expect as $field => &$values) {
asort($values);
}
unset($values);
foreach ($acceptableFilters as $field => &$values) {
asort($values);
}
unset($values);

foreach ($expect as $filter => $values) {
$this->assertArrayHasKey($filter, $acceptableFilters);
$this->assertEquals($values, $acceptableFilters[$filter]);
}
}

public function testGetAcceptableFiltersCountMulty()
{
Expand Down

0 comments on commit f52b904

Please sign in to comment.