@@ -648,4 +648,46 @@ public function testCallableStringParametersNotExecuted(): void
648648
649649 $ this ->assertEquals ('generated: generated-value ' , $ result );
650650 }
651+
652+ public function testCanInjectResourceAndParamWithSameName (): void
653+ {
654+ // Register a 'locale' resource returning a Locale instance whose
655+ // `name` statically resolves to "en".
656+ $ this ->container ->set ('locale ' , fn () => new Locale ());
657+
658+ $ route = new Route ('GET ' , '/path ' );
659+
660+ $ route
661+ ->param ('locale ' , 'en-default ' , new Text (10 ), 'locale param ' , false )
662+ ->inject ('locale ' )
663+ ->action (function (string $ localeParam , Locale $ localeResource ) {
664+ echo \json_encode ([
665+ 'localeParam ' => $ localeParam ,
666+ 'localeResource ' => $ localeResource ->name ,
667+ ]);
668+ });
669+
670+ \ob_start ();
671+ $ request = new UtopiaFPMRequestTest ();
672+ $ request ::_setParams (['locale ' => 'es ' ]);
673+ $ this ->http ->execute ($ route , $ request , new Response ());
674+ $ result = \ob_get_contents ();
675+ \ob_end_clean ();
676+
677+ $ expected = \json_encode ([
678+ 'localeParam ' => 'es ' ,
679+ 'localeResource ' => 'en ' ,
680+ ]);
681+
682+ $ this ->assertEquals ($ expected , $ result );
683+ }
684+ }
685+
686+ /**
687+ * Dummy Locale class used by testCanInjectResourceAndParamWithSameName to
688+ * verify resource injection alongside a same-named request parameter.
689+ */
690+ class Locale
691+ {
692+ public string $ name = 'en ' ;
651693}
0 commit comments