File tree Expand file tree Collapse file tree 2 files changed +40
-2
lines changed Expand file tree Collapse file tree 2 files changed +40
-2
lines changed Original file line number Diff line number Diff line change @@ -593,10 +593,16 @@ public function createTransaction(Request $request, Response $response)
593
593
*
594
594
* @param Request $request
595
595
* @param Response $response
596
+ * @param ?Transaction $transaction
596
597
*/
597
- public function run (Request $ request , Response $ response ): static
598
+ public function run (Request $ request , Response $ response, Transaction $ transaction = null ): static
598
599
{
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
+ }
600
606
601
607
$ method = $ request ->getMethod ();
602
608
$ route = $ this ->match ($ request );
Original file line number Diff line number Diff line change @@ -606,4 +606,36 @@ public function testWildcardRoute(): void
606
606
$ _SERVER ['REQUEST_METHOD ' ] = $ method ;
607
607
$ _SERVER ['REQUEST_URI ' ] = $ uri ;
608
608
}
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
+ }
609
641
}
You can’t perform that action at this time.
0 commit comments