Skip to content

Commit 5934c1b

Browse files
authored
Merge pull request #174 from einorler/issue153
implemented exception when array given to choice
2 parents a42f185 + 5fc70de commit 5934c1b

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

Filter/Widget/Choice/SingleTermChoice.php

+4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace ONGR\FilterManagerBundle\Filter\Widget\Choice;
1313

14+
use Doctrine\Common\Proxy\Exception\InvalidArgumentException;
1415
use ONGR\ElasticsearchDSL\Aggregation\FilterAggregation;
1516
use ONGR\ElasticsearchDSL\Aggregation\TermsAggregation;
1617
use ONGR\ElasticsearchDSL\Query\TermQuery;
@@ -60,6 +61,9 @@ public function getSortType()
6061
public function modifySearch(Search $search, FilterState $state = null, SearchRequest $request = null)
6162
{
6263
if ($state && $state->isActive()) {
64+
if (is_array($state->getValue())) {
65+
throw new InvalidArgumentException('Value given to `SingleTermChoice` filter must not be an array');
66+
}
6367
$search->addPostFilter(new TermQuery($this->getField(), $state->getValue()));
6468
}
6569
}

Tests/Functional/Filter/Widget/Choice/SingleTermChoiceTest.php

+13
Original file line numberDiff line numberDiff line change
@@ -211,4 +211,17 @@ public function testChoicesSize()
211211

212212
$this->assertEquals(11, count($result->getChoices()));
213213
}
214+
215+
/**
216+
* Tests bad request sent to manager
217+
*/
218+
public function testArrayValueException()
219+
{
220+
$client = static::createClient();
221+
$crawler = $client->request('GET', '/list?single_choice[]=blue+black');
222+
$this->assertContains(
223+
'Value given to `SingleTermChoice` filter must not be an array',
224+
$crawler->html()
225+
);
226+
}
214227
}

Tests/app/config/config_test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ ongr_elasticsearch:
5454
ongr_filter_manager:
5555
managers:
5656
foo_filters:
57-
filters: ['phrase', 'single_choice', 'foo_range']
57+
filters: ['phrase', 'single_choice', 'foo_range', 'single_choice']
5858
repository: 'es.manager.default.product'
5959
bar_filters:
6060
filters: ['sort', 'inclusive_range', 'bar_range']

0 commit comments

Comments
 (0)