Skip to content

Commit 4ac8e9b

Browse files
committed
Add transaction param
1 parent 2f4799a commit 4ac8e9b

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

src/App.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -593,10 +593,16 @@ public function createTransaction(Request $request, Response $response)
593593
*
594594
* @param Request $request
595595
* @param Response $response
596+
* @param ?Transaction $transaction
596597
*/
597-
public function run(Request $request, Response $response): static
598+
public function run(Request $request, Response $response, Transaction $transaction = null): static
598599
{
599-
$transaction = $this->createTransaction($request, $response);
600+
if(empty($transaction)) {
601+
$transaction = $this->createTransaction($request, $response);
602+
} else {
603+
$transaction->setResource('request', fn () => $request);
604+
$transaction->setResource('response', fn () => $response);
605+
}
600606

601607
$method = $request->getMethod();
602608
$route = $this->match($request);

tests/AppTest.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,4 +606,36 @@ public function testWildcardRoute(): void
606606
$_SERVER['REQUEST_METHOD'] = $method;
607607
$_SERVER['REQUEST_URI'] = $uri;
608608
}
609+
610+
public function testRunWithTransaction(): void
611+
{
612+
$method = $_SERVER['REQUEST_METHOD'] ?? null;
613+
$uri = $_SERVER['REQUEST_URI'] ?? null;
614+
615+
$_SERVER['REQUEST_METHOD'] = 'GET';
616+
$_SERVER['REQUEST_URI'] = '/transaction-test';
617+
618+
$request = new Request();
619+
$response = new Response();
620+
$transaction = $this->app->createTransaction($request, $response);
621+
622+
$transaction->setResource('myResource', fn () => 'myText');
623+
624+
App::get('/transaction-test')
625+
->inject('myResource')
626+
->inject('response')
627+
->action(function (mixed $myResource, $response) {
628+
$response->send('Resource: ' . $myResource);
629+
});
630+
631+
\ob_start();
632+
@$this->app->run($request, $response, $transaction);
633+
$result = \ob_get_contents();
634+
\ob_end_clean();
635+
636+
$this->assertEquals('Resource: myText', $result);
637+
638+
$_SERVER['REQUEST_METHOD'] = $method;
639+
$_SERVER['REQUEST_URI'] = $uri;
640+
}
609641
}

0 commit comments

Comments
 (0)