From ceca3721ace075891cf2e4b5402305df93c66b78 Mon Sep 17 00:00:00 2001 From: Sammyjo20 <29132017+Sammyjo20@users.noreply.github.com> Date: Sun, 12 Nov 2023 10:48:42 +0000 Subject: [PATCH] Fix | MockClient assertions with fixtures --- src/Http/Middleware/DetermineMockResponse.php | 2 +- src/Http/Middleware/RecordFixture.php | 11 ++++++++++- tests/Feature/MockRequestTest.php | 10 ++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/Http/Middleware/DetermineMockResponse.php b/src/Http/Middleware/DetermineMockResponse.php index af602300..76e9a35e 100644 --- a/src/Http/Middleware/DetermineMockResponse.php +++ b/src/Http/Middleware/DetermineMockResponse.php @@ -53,7 +53,7 @@ public function __invoke(PendingRequest $pendingRequest): PendingRequest // middleware on the response to record the response. if (is_null($mockResponse) && $mockObject instanceof Fixture) { - $pendingRequest->middleware()->onResponse(new RecordFixture($mockObject), 'recordFixture', PipeOrder::FIRST); + $pendingRequest->middleware()->onResponse(new RecordFixture($mockObject, $mockClient), 'recordFixture', PipeOrder::FIRST); } return $pendingRequest; diff --git a/src/Http/Middleware/RecordFixture.php b/src/Http/Middleware/RecordFixture.php index 4230d1c5..d0bc779e 100644 --- a/src/Http/Middleware/RecordFixture.php +++ b/src/Http/Middleware/RecordFixture.php @@ -7,6 +7,7 @@ use Saloon\Http\Response; use Saloon\Http\Faking\Fixture; use Saloon\Data\RecordedResponse; +use Saloon\Http\Faking\MockClient; use Saloon\Contracts\ResponseMiddleware; class RecordFixture implements ResponseMiddleware @@ -16,12 +17,18 @@ class RecordFixture implements ResponseMiddleware */ protected Fixture $fixture; + /** + * Mock Client + */ + protected MockClient $mockClient; + /** * Constructor */ - public function __construct(Fixture $fixture) + public function __construct(Fixture $fixture, MockClient $mockClient) { $this->fixture = $fixture; + $this->mockClient = $mockClient; } /** @@ -37,5 +44,7 @@ public function __invoke(Response $response): void $this->fixture->store( RecordedResponse::fromResponse($response) ); + + $this->mockClient->recordResponse($response); } } diff --git a/tests/Feature/MockRequestTest.php b/tests/Feature/MockRequestTest.php index bfb2accc..15e7cbe1 100644 --- a/tests/Feature/MockRequestTest.php +++ b/tests/Feature/MockRequestTest.php @@ -729,3 +729,13 @@ function (PendingRequest $pendingRequest): MockResponse { expect($middlewareC)->toBeTrue(); expect($middlewareD)->toBeTrue(); }); + +test('fixtures are still recorded on the first request', function () { + $mockClient = new MockClient([ + MockResponse::fixture('user'), // Test Exact Route + ]); + + connector()->send(new UserRequest, $mockClient); + + $mockClient->assertSent(UserRequest::class); +});