Skip to content

Commit 8754f5f

Browse files
authored
Chore: Test covering edge case of same-name param and resource (#237)
1 parent ff58201 commit 8754f5f

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

tests/HttpTest.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)