Skip to content

Commit cea9254

Browse files
author
Dominik Brader
authored
Merge pull request #68 from findologic/develop
Develop
2 parents fcef0d3 + 52aeab5 commit cea9254

File tree

6 files changed

+75
-3
lines changed

6 files changed

+75
-3
lines changed

src/Definitions/QueryParameter.php

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class QueryParameter extends Definition
1919
FIRST = 'first',
2020
IDENTIFIER = 'identifier',
2121
GROUP = 'group',
22+
USERGROUP = 'usergrouphash',
2223
FORCE_ORIGINAL_QUERY = 'forceOriginalQuery',
2324
OUTPUT_ATTRIB = 'outputAttrib',
2425
SELECTED = 'selected',

src/Requests/Request.php

+19
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,25 @@ public function addGroup($value)
145145
return $this;
146146
}
147147

148+
/**
149+
* Adds the hashed usergroup param.
150+
*
151+
* @param $value string
152+
* @return $this
153+
*/
154+
public function addUserGroup($value)
155+
{
156+
$validator = new ParameterValidator([QueryParameter::USERGROUP => $value]);
157+
$validator->rule('string', QueryParameter::USERGROUP);
158+
159+
if (!$validator->validate()) {
160+
throw new InvalidParamException(QueryParameter::USERGROUP);
161+
}
162+
163+
$this->addParam(QueryParameter::USERGROUP, [$value], self::ADD_VALUE);
164+
return $this;
165+
}
166+
148167
/**
149168
* Adds the outputAdapter param. It is used to override the output format.
150169
*

tests/Tests/Definitions/QueryParameterTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public function testAllQueryParametersAreAvailable()
2424
'FIRST' => 'first',
2525
'IDENTIFIER' => 'identifier',
2626
'GROUP' => 'group',
27+
'USERGROUP' => 'usergrouphash',
2728
'FORCE_ORIGINAL_QUERY' => 'forceOriginalQuery',
2829
'OUTPUT_ATTRIB' => 'outputAttrib',
2930
'SELECTED' => 'selected',

tests/Tests/Requests/Autocomplete/SuggestRequestTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public function testSendingRequestsWithoutRequiredParamsWillThrowAnException()
4949
$this->assertEquals('Required param query is not set.', $e->getMessage());
5050
}
5151

52-
$this->httpClientMock->method('request')->willReturn($this->responseMock);
52+
$this->httpClientMock->method('get')->willReturn($this->responseMock);
5353
$this->responseMock->method('getBody')->willReturn($this->streamMock);
5454
$this->responseMock->method('getStatusCode')->willReturn(200);
5555
$this->streamMock->method('getContents')

tests/Tests/Requests/SearchNavigation/SearchNavigationRequestDataProvider.php

+18
Original file line numberDiff line numberDiff line change
@@ -389,4 +389,22 @@ public function individualParamProvider()
389389
'more different individual param' => ['best & *_\' shoes © ever!', 'very very FuNnY!!!', 'set']
390390
];
391391
}
392+
393+
public function userGroupProvider()
394+
{
395+
return [
396+
'normal usergroup' => ['NDEmNgEN'],
397+
'other usergrouphash' => ['HaKeLfGN'],
398+
'more different usergrouphash' => ['ThisGroupMayBeValid']
399+
];
400+
}
401+
402+
public function invalidUserGroupProvider()
403+
{
404+
return [
405+
'usergrouphash is an integer' => [123],
406+
'usergrouphash is an array' => [['aaaah']],
407+
'usergrouphash is an object' => [new \stdClass()],
408+
];
409+
}
392410
}

tests/Tests/Requests/SearchNavigation/SearchNavigationRequestTest.php

+35-2
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public function requiredParamsProvider()
5555
*/
5656
public function testSendingSearchRequestsWithoutRequiredParamsWillThrowAnException(array $options)
5757
{
58-
$this->httpClientMock->method('request')->willReturn($this->responseMock);
58+
$this->httpClientMock->method('get')->willReturn($this->responseMock);
5959
$this->responseMock->method('getBody')->willReturn($this->streamMock);
6060
$this->responseMock->method('getStatusCode')->willReturn(200);
6161
$this->streamMock->method('getContents')
@@ -88,7 +88,7 @@ public function testSendingSearchRequestsWithoutRequiredParamsWillThrowAnExcepti
8888

8989
public function testSendingNavigationRequestsWithoutRequiredParamsWillThrowAnException()
9090
{
91-
$this->httpClientMock->method('request')->willReturn($this->responseMock);
91+
$this->httpClientMock->method('get')->willReturn($this->responseMock);
9292
$this->responseMock->method('getBody')->willReturn($this->streamMock);
9393
$this->responseMock->method('getStatusCode')->willReturn(200);
9494
$this->streamMock->method('getContents')
@@ -648,6 +648,39 @@ public function testInvalidGroupWillThrowAnException($invalidGroup)
648648
$searchRequest->addGroup($invalidGroup);
649649
}
650650

651+
/**
652+
* @dataProvider userGroupProvider
653+
*
654+
* @param string $expectedUserGroupHash
655+
*/
656+
public function testAddUserGroupWillSetItInAValidFormat($expectedUserGroupHash)
657+
{
658+
$expectedParameter = 'usergrouphash';
659+
660+
$searchRequest = new SearchRequest();
661+
$this->setRequiredParamsForSearchNavigationRequest($searchRequest);
662+
663+
$searchRequest->addUserGroup($expectedUserGroupHash);
664+
$params = $searchRequest->getParams();
665+
$this->assertArrayHasKey($expectedParameter, $params);
666+
$this->assertEquals([$expectedUserGroupHash], $params[$expectedParameter]);
667+
}
668+
669+
/**
670+
* @dataProvider invalidUserGroupProvider
671+
* @param mixed $invalidUserGroup
672+
*/
673+
public function testInvalidUserGroupWillThrowAnException($invalidUserGroup)
674+
{
675+
$this->expectException(InvalidParamException::class);
676+
$this->expectExceptionMessage('Parameter usergrouphash is not valid.');
677+
678+
$searchRequest = new SearchRequest();
679+
$this->setRequiredParamsForSearchNavigationRequest($searchRequest);
680+
681+
$searchRequest->addUserGroup($invalidUserGroup);
682+
}
683+
651684
/**
652685
* @dataProvider attributeProvider
653686
* @param string $expectedAttributeName

0 commit comments

Comments
 (0)