Skip to content

Commit 06543bc

Browse files
committed
Initialize SendRequestAction in lazy mode for easier testing
1 parent 3686b0a commit 06543bc

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

src/AbstractApi.php

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ abstract class AbstractApi implements ApiContract
2929
*/
3030
protected array $cachedEndpoints = [];
3131

32-
private readonly SendRequestAction $sendRequestAction;
32+
private ?SendRequestAction $sendRequestAction = null;
3333

3434
/**
3535
* @var array<class-string<AbstractEndpoint>, class-string<AbstractEndpoint>>
@@ -48,9 +48,6 @@ public function __construct(
4848
$overrideEndpoints,
4949
$environment instanceof EnvironmentOverrideEndpointsContract ? $environment->endpoints() : []
5050
);
51-
$this->sendRequestAction = $this->factory()
52-
->container()
53-
->make(SendRequestAction::class);
5451
}
5552

5653
public function environment(): AbstractEnvironment
@@ -88,7 +85,7 @@ public function get(
8885
->request()
8986
->createRequest('GET', $uri->toString());
9087

91-
return $this->sendRequestAction
88+
return $this->sendRequestAction()
9289
->execute(
9390
api: $this,
9491
request: $request,
@@ -119,7 +116,7 @@ public function post(
119116
->request()
120117
->createRequest('POST', $uri->toString());
121118

122-
return $this->sendRequestAction
119+
return $this->sendRequestAction()
123120
->execute(
124121
api: $this,
125122
request: $request,
@@ -151,7 +148,7 @@ public function put(
151148
->request()
152149
->createRequest('PUT', $uri->toString());
153150

154-
return $this->sendRequestAction
151+
return $this->sendRequestAction()
155152
->execute(
156153
api: $this,
157154
request: $request,
@@ -183,7 +180,7 @@ public function delete(
183180
->request()
184181
->createRequest('DELETE', $uri->toString());
185182

186-
return $this->sendRequestAction
183+
return $this->sendRequestAction()
187184
->execute($this, $request, $responseClass, $body, $headers, $expectedResponseStatusCode);
188185
}
189186

@@ -207,7 +204,7 @@ public function fake(
207204
array $headers = [],
208205
?int $expectedResponseStatusCode = null
209206
): AbstractResponse {
210-
return $this->sendRequestAction
207+
return $this->sendRequestAction()
211208
->execute(
212209
api: $this,
213210
request: $this->factory()
@@ -283,4 +280,15 @@ private function getOverrideEndpointClassIfCan(string $endpoint): string
283280

284281
return $endpoint;
285282
}
283+
284+
private function sendRequestAction(): SendRequestAction
285+
{
286+
if ($this->sendRequestAction instanceof SendRequestAction === false) {
287+
$this->sendRequestAction = $this->factory()
288+
->container()
289+
->make(SendRequestAction::class);
290+
}
291+
292+
return $this->sendRequestAction;
293+
}
286294
}

0 commit comments

Comments
 (0)