Skip to content

Commit d5bbca4

Browse files
authored
Merge pull request #20 from Sammyjo20/fix/no-more-has-query-params-trait
Removed requirement for HasQueryParams trait
2 parents 9ac3bca + 1d8ca97 commit d5bbca4

File tree

9 files changed

+48
-47
lines changed

9 files changed

+48
-47
lines changed

src/Managers/RequestManager.php

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Sammyjo20\Saloon\Traits\ManagesFeatures;
1717
use Sammyjo20\Saloon\Traits\CollectsHandlers;
1818
use GuzzleHttp\Exception\BadResponseException;
19+
use Sammyjo20\Saloon\Traits\CollectsQueryParams;
1920
use Sammyjo20\Saloon\Traits\CollectsInterceptors;
2021
use Sammyjo20\Saloon\Exceptions\SaloonMultipleMockMethodsException;
2122
use Sammyjo20\Saloon\Exceptions\SaloonInvalidResponseClassException;
@@ -27,6 +28,7 @@ class RequestManager
2728
ManagesFeatures,
2829
CollectsHeaders,
2930
CollectsConfig,
31+
CollectsQueryParams,
3032
CollectsHandlers,
3133
CollectsInterceptors;
3234

@@ -89,6 +91,7 @@ public function __construct(SaloonRequest $request, MockClient $mockClient = nul
8991
*
9092
* @return void
9193
* @throws \ReflectionException
94+
* @throws \Sammyjo20\Saloon\Exceptions\SaloonInvalidConnectorException
9295
*/
9396
public function hydrate(): void
9497
{
@@ -111,10 +114,22 @@ public function hydrate(): void
111114

112115
$this->mergeHeaders($this->connector->getHeaders(), $this->request->getHeaders());
113116

117+
// Merge in query params
118+
119+
$this->mergeQuery($this->connector->getQuery(), $this->request->getQuery());
120+
114121
// Merge the config
115122

116123
$this->mergeConfig($this->connector->getConfig(), $this->request->getConfig());
117124

125+
// Add the query parameters to the config
126+
127+
$query = $this->getQuery();
128+
129+
if (! empty($query)) {
130+
$this->mergeConfig(['query' => $query]);
131+
}
132+
118133
// Merge in any handlers
119134

120135
$this->mergeHandlers($this->connector->getHandlers(), $this->request->getHandlers());
@@ -149,15 +164,7 @@ public function send()
149164

150165
// Build up the config!
151166

152-
$requestOptions = [
153-
RequestOptions::HEADERS => $this->getHeaders(),
154-
];
155-
156-
// Recursively add config variables...
157-
158-
foreach ($this->getConfig() as $configVariable => $value) {
159-
$requestOptions[$configVariable] = $value;
160-
}
167+
$requestOptions = $this->buildRequestOptions();
161168

162169
// Boot up our Guzzle client... This will also boot up handlers...
163170

@@ -268,6 +275,24 @@ private function bootMockClient(MockClient|null $mockClient): void
268275
$this->mockClient = $mockClient;
269276
}
270277

278+
/**
279+
* Build up all the request options
280+
*
281+
* @return array
282+
*/
283+
private function buildRequestOptions(): array
284+
{
285+
$requestOptions = [
286+
RequestOptions::HEADERS => $this->getHeaders(),
287+
];
288+
289+
foreach ($this->getConfig() as $configVariable => $value) {
290+
$requestOptions[$configVariable] = $value;
291+
}
292+
293+
return $requestOptions;
294+
}
295+
271296
/**
272297
* Is the manager in mocking mode?
273298
*

src/Traits/CollectsQueryParams.php

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public function addQuery(string $query, $value): self
7777
}
7878

7979
/**
80-
* Get all query or filter with a key.
80+
* Get all query or filter with a key.
8181
*
8282
* @param string|null $key
8383
* @return mixed
@@ -109,18 +109,6 @@ public function getQuery(string $key = null): mixed
109109
return $queryBag;
110110
}
111111

112-
/**
113-
* Get an individual query param
114-
*
115-
* @param string $key
116-
* @return string
117-
* @throws \Sammyjo20\Saloon\Exceptions\SaloonInvalidConnectorException
118-
*/
119-
public function getQueryByKey(string $key): string
120-
{
121-
return $this->getQuery($key);
122-
}
123-
124112
/**
125113
* Should we ignore the default query when calling `->getQuery()`?
126114
*

src/Traits/Features/HasQueryParams.php

Lines changed: 0 additions & 11 deletions
This file was deleted.

tests/Resources/Connectors/QueryParameterConnector.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@
44

55
use Sammyjo20\Saloon\Http\SaloonConnector;
66
use Sammyjo20\Saloon\Traits\Features\AcceptsJson;
7-
use Sammyjo20\Saloon\Traits\Features\HasQueryParams;
87

98
class QueryParameterConnector extends SaloonConnector
109
{
1110
use AcceptsJson;
12-
use HasQueryParams;
1311

1412
public function defineBaseUrl(): string
1513
{

tests/Resources/Requests/OverwrittenQueryParameterConnectorRequest.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,10 @@
44

55
use Sammyjo20\Saloon\Constants\Saloon;
66
use Sammyjo20\Saloon\Http\SaloonRequest;
7-
use Sammyjo20\Saloon\Traits\Features\HasQueryParams;
87
use Sammyjo20\Saloon\Tests\Resources\Connectors\QueryParameterConnector;
98

109
class OverwrittenQueryParameterConnectorRequest extends SaloonRequest
1110
{
12-
use HasQueryParams;
13-
1411
/**
1512
* Define the method that the request will use.
1613
*

tests/Resources/Requests/QueryParameterConnectorBlankRequest.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,10 @@
44

55
use Sammyjo20\Saloon\Constants\Saloon;
66
use Sammyjo20\Saloon\Http\SaloonRequest;
7-
use Sammyjo20\Saloon\Traits\Features\HasQueryParams;
87
use Sammyjo20\Saloon\Tests\Resources\Connectors\QueryParameterConnector;
98

109
class QueryParameterConnectorBlankRequest extends SaloonRequest
1110
{
12-
use HasQueryParams;
13-
1411
/**
1512
* Define the method that the request will use.
1613
*

tests/Resources/Requests/QueryParameterConnectorRequest.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,10 @@
44

55
use Sammyjo20\Saloon\Constants\Saloon;
66
use Sammyjo20\Saloon\Http\SaloonRequest;
7-
use Sammyjo20\Saloon\Traits\Features\HasQueryParams;
87
use Sammyjo20\Saloon\Tests\Resources\Connectors\QueryParameterConnector;
98

109
class QueryParameterConnectorRequest extends SaloonRequest
1110
{
12-
use HasQueryParams;
13-
1411
/**
1512
* Define the method that the request will use.
1613
*

tests/Resources/Requests/QueryParameterRequest.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,10 @@
44

55
use Sammyjo20\Saloon\Constants\Saloon;
66
use Sammyjo20\Saloon\Http\SaloonRequest;
7-
use Sammyjo20\Saloon\Traits\Features\HasQueryParams;
87
use Sammyjo20\Saloon\Tests\Resources\Connectors\TestConnector;
98

109
class QueryParameterRequest extends SaloonRequest
1110
{
12-
use HasQueryParams;
13-
1411
/**
1512
* Define the method that the request will use.
1613
*

tests/Unit/Features/QueryParameterTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php
22

33
use Sammyjo20\Saloon\Managers\RequestManager;
4+
use Sammyjo20\Saloon\Tests\Resources\Requests\UserRequest;
45
use Sammyjo20\Saloon\Tests\Resources\Requests\QueryParameterRequest;
56
use Sammyjo20\Saloon\Tests\Resources\Requests\QueryParameterConnectorRequest;
67
use Sammyjo20\Saloon\Tests\Resources\Requests\QueryParameterConnectorBlankRequest;
@@ -95,3 +96,15 @@
9596
expect($config)->toHaveKey('query');
9697
expect($config['query'])->toEqual(['per_page' => 500]);
9798
});
99+
100+
test('when not sending query parameters, the query option is not set', function () {
101+
$request = new UserRequest();
102+
103+
$requestManager = new RequestManager($request);
104+
105+
$requestManager->hydrate();
106+
107+
$config = $requestManager->getConfig();
108+
109+
expect(isset($config['query']))->toBeFalse();
110+
});

0 commit comments

Comments
 (0)