|
3 | 3 | namespace Sammyjo20\Saloon\Clients; |
4 | 4 |
|
5 | 5 | use ReflectionClass; |
| 6 | +use Sammyjo20\Saloon\Http\Fixture; |
6 | 7 | use Sammyjo20\Saloon\Helpers\URLHelper; |
7 | 8 | use Sammyjo20\Saloon\Http\MockResponse; |
8 | 9 | use PHPUnit\Framework\Assert as PHPUnit; |
@@ -80,12 +81,12 @@ public function addResponses(array $responses): void |
80 | 81 | /** |
81 | 82 | * Add a mock response to the client |
82 | 83 | * |
83 | | - * @param MockResponse|callable $response |
| 84 | + * @param MockResponse|Fixture|callable $response |
84 | 85 | * @param string|null $captureMethod |
85 | 86 | * @return void |
86 | 87 | * @throws SaloonInvalidMockResponseCaptureMethodException |
87 | 88 | */ |
88 | | - public function addResponse(MockResponse|callable $response, ?string $captureMethod = null): void |
| 89 | + public function addResponse(MockResponse|Fixture|callable $response, ?string $captureMethod = null): void |
89 | 90 | { |
90 | 91 | if (is_null($captureMethod)) { |
91 | 92 | $this->sequenceResponses[] = $response; |
@@ -135,11 +136,12 @@ public function getNextFromSequence(): mixed |
135 | 136 | * Guess the next response based on the request. |
136 | 137 | * |
137 | 138 | * @param SaloonRequest $request |
138 | | - * @return MockResponse |
| 139 | + * @return MockResponse|Fixture |
139 | 140 | * @throws SaloonNoMockResponseFoundException |
| 141 | + * @throws \ReflectionException |
140 | 142 | * @throws \Sammyjo20\Saloon\Exceptions\SaloonInvalidConnectorException |
141 | 143 | */ |
142 | | - public function guessNextResponse(SaloonRequest $request): MockResponse |
| 144 | + public function guessNextResponse(SaloonRequest $request): MockResponse|Fixture |
143 | 145 | { |
144 | 146 | $requestClass = get_class($request); |
145 | 147 |
|
@@ -173,7 +175,7 @@ public function guessNextResponse(SaloonRequest $request): MockResponse |
173 | 175 | * @return MockResponse|null |
174 | 176 | * @throws \Sammyjo20\Saloon\Exceptions\SaloonInvalidConnectorException |
175 | 177 | */ |
176 | | - private function guessResponseFromUrl(SaloonRequest $request): MockResponse|callable|null |
| 178 | + private function guessResponseFromUrl(SaloonRequest $request): MockResponse|Fixture|callable|null |
177 | 179 | { |
178 | 180 | foreach ($this->urlResponses as $url => $response) { |
179 | 181 | if (! URLHelper::matches($url, $request->getFullRequestUrl())) { |
@@ -458,18 +460,22 @@ private function checkHistoryEmpty(): bool |
458 | 460 | } |
459 | 461 |
|
460 | 462 | /** |
461 | | - * Create the mock response. If it is a callable, we will call it. |
| 463 | + * Get the mock value. |
462 | 464 | * |
463 | | - * @param MockResponse|callable $mockResponse |
| 465 | + * @param MockResponse|Fixture|callable $mockable |
464 | 466 | * @param SaloonRequest $request |
465 | | - * @return MockResponse |
| 467 | + * @return MockResponse|Fixture |
466 | 468 | */ |
467 | | - private function mockResponseValue(MockResponse|callable $mockResponse, SaloonRequest $request): MockResponse |
| 469 | + private function mockResponseValue(MockResponse|Fixture|callable $mockable, SaloonRequest $request): MockResponse|Fixture |
468 | 470 | { |
469 | | - if ($mockResponse instanceof MockResponse) { |
470 | | - return $mockResponse; |
| 471 | + if ($mockable instanceof MockResponse) { |
| 472 | + return $mockable; |
| 473 | + } |
| 474 | + |
| 475 | + if ($mockable instanceof Fixture) { |
| 476 | + return $mockable; |
471 | 477 | } |
472 | 478 |
|
473 | | - return $mockResponse($request); |
| 479 | + return $mockable($request); |
474 | 480 | } |
475 | 481 | } |
0 commit comments