Skip to content

Commit 31cdfa6

Browse files
j-oppenhuisksassnowski
authored andcommitted
fix: added missing response middleware dropped event
1 parent fd97d4b commit 31cdfa6

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/Downloader/Downloader.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,11 @@ private function onResponseReceived(Response $response, ?callable $callback): vo
132132
$response = $middleware->handleResponse($response);
133133

134134
if ($response->wasDropped()) {
135+
$this->eventDispatcher->dispatch(
136+
new ResponseDropped($response),
137+
ResponseDropped::NAME,
138+
);
139+
135140
return;
136141
}
137142
}

tests/Downloader/DownloaderTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,29 @@ public function testDispatchEventWhenResponseWasReceived(): void
234234
);
235235
}
236236

237+
public function testDoesNotDispatchEventIfResponseWasNotDropped(): void
238+
{
239+
$this->downloader->prepare($this->makeRequest());
240+
$this->downloader->flush();
241+
242+
$this->dispatcher->assertNotDispatched(ResponseDropped::NAME);
243+
}
244+
245+
public function testDispatchesAnEventIfResponseWasDropped(): void
246+
{
247+
$request = $this->makeRequest();
248+
$dropMiddleware = new FakeMiddleware(null, static fn (Response $response) => $response->drop('::reason::'));
249+
$this->downloader->withMiddleware($dropMiddleware);
250+
251+
$this->downloader->prepare($request);
252+
$this->downloader->flush();
253+
254+
$this->dispatcher->assertDispatched(
255+
ResponseDropped::NAME,
256+
static fn (ResponseDropped $event) => $event->response->wasDropped() && $event->response->getUri() === $request->getUri(),
257+
);
258+
}
259+
237260
public function testDontPassResponseToMiddlewareIfDroppedByExtension(): void
238261
{
239262
$request = $this->makeRequest();

0 commit comments

Comments
 (0)