Skip to content

Commit 32db4c2

Browse files
dakurdg
authored andcommitted
Application: previous presenter is passed to error presenter (#317)
1 parent dae132b commit 32db4c2

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

src/Application/Application.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ public function processException(\Throwable $e): void
182182
$this->httpResponse->setCode($e instanceof BadRequestException ? ($e->getHttpCode() ?: 404) : 500);
183183
}
184184

185-
$args = ['exception' => $e, 'request' => Arrays::last($this->requests) ?: null];
185+
$args = ['exception' => $e, 'previousPresenter' => $this->presenter, 'request' => Arrays::last($this->requests) ?: null];
186186
if ($this->presenter instanceof UI\Presenter) {
187187
try {
188188
$this->presenter->forward(":$this->errorPresenter:", $args);

tests/Application/Application.run.phpt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ test('no route with error presenter', function () use ($httpRequest, $httpRespon
127127

128128
Assert::equal($requests[0], $errorPresenter->request);
129129
Assert::null($errorPresenter->request->getParameter('request'));
130+
Assert::null($errorPresenter->request->getParameter('previousPresenter'));
130131
Assert::type(BadRequestException::class, $errorPresenter->request->getParameter('exception'));
131132
});
132133

@@ -154,6 +155,7 @@ test('route to error presenter', function () use ($httpRequest, $httpResponse) {
154155

155156
Assert::equal($requests[1], $errorPresenter->request);
156157
Assert::equal($requests[0], $errorPresenter->request->getParameter('request'));
158+
Assert::null($errorPresenter->request->getParameter('previousPresenter'));
157159
Assert::type(BadRequestException::class, $errorPresenter->request->getParameter('exception'));
158160
});
159161

@@ -195,6 +197,7 @@ test('missing presenter with error presenter', function () use ($httpRequest, $h
195197

196198
Assert::equal($requests[1], $errorPresenter->request);
197199
Assert::equal($requests[0], $errorPresenter->request->getParameter('request'));
200+
Assert::null($errorPresenter->request->getParameter('previousPresenter'));
198201
Assert::type(BadRequestException::class, $errorPresenter->request->getParameter('exception'));
199202
});
200203

@@ -213,10 +216,11 @@ Assert::exception(function () use ($httpRequest, $httpResponse) {
213216

214217

215218
test('presenter error with error presenter', function () use ($httpRequest, $httpResponse) {
219+
$badPresenter = new BadPresenter;
216220
$errorPresenter = new ErrorPresenter;
217221

218222
$presenterFactory = Mockery::mock(IPresenterFactory::class);
219-
$presenterFactory->shouldReceive('createPresenter')->with('Bad')->andReturn(new BadPresenter);
223+
$presenterFactory->shouldReceive('createPresenter')->with('Bad')->andReturn($badPresenter);
220224
$presenterFactory->shouldReceive('createPresenter')->with('Error')->andReturn($errorPresenter);
221225

222226
$router = Mockery::mock(Router::class);
@@ -236,6 +240,7 @@ test('presenter error with error presenter', function () use ($httpRequest, $htt
236240

237241
Assert::equal($requests[1], $errorPresenter->request);
238242
Assert::equal($requests[0], $errorPresenter->request->getParameter('request'));
243+
Assert::equal($badPresenter, $errorPresenter->request->getParameter('previousPresenter'));
239244
Assert::type(BadException::class, $errorPresenter->request->getParameter('exception'));
240245
});
241246

0 commit comments

Comments
 (0)