diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 75fc31118b..5486afafc7 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -30570,12 +30570,6 @@ parameters: count: 1 path: tests/bundle/Core/Fragment/DirectFragmentRendererTest.php - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\) with ''Symfony\\\\Component\\\\HttpFoundation\\\\Response'' and Symfony\\Component\\HttpFoundation\\Response will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 4 - path: tests/bundle/Core/Fragment/DirectFragmentRendererTest.php - - message: '#^Method Ibexa\\Tests\\Bundle\\Core\\Fragment\\FragmentListenerFactoryTest\:\:buildFragmentListenerProvider\(\) has no return type specified\.$#' identifier: missingType.return @@ -58764,12 +58758,6 @@ parameters: count: 1 path: tests/lib/MVC/Symfony/Templating/RenderContentStrategyTest.php - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\) with ''Symfony\\\\Component\\\\HttpKernel\\\\Controller\\\\ControllerReference'' and Symfony\\Component\\HttpKernel\\Controller\\ControllerReference will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 1 - path: tests/lib/MVC/Symfony/Templating/RenderContentStrategyTest.php - - message: '#^Anonymous function has an unused use \$content\.$#' identifier: closure.unusedUse diff --git a/src/bundle/Core/Fragment/DirectFragmentRenderer.php b/src/bundle/Core/Fragment/DirectFragmentRenderer.php index 9a832a5eae..7c6daf736d 100644 --- a/src/bundle/Core/Fragment/DirectFragmentRenderer.php +++ b/src/bundle/Core/Fragment/DirectFragmentRenderer.php @@ -145,6 +145,8 @@ public function render( if ($response instanceof Response) { return $response; } elseif ($response instanceof View) { + $response->addParameters($options['params'] ?? []); + return new Response($this->viewTemplateRenderer->render($response)); } elseif (is_string($response)) { return new Response($response); diff --git a/src/bundle/Core/Fragment/InlineFragmentRenderer.php b/src/bundle/Core/Fragment/InlineFragmentRenderer.php index 020a211e84..5235fe4c4a 100644 --- a/src/bundle/Core/Fragment/InlineFragmentRenderer.php +++ b/src/bundle/Core/Fragment/InlineFragmentRenderer.php @@ -58,6 +58,10 @@ public function render($uri, Request $request, array $options = []) if ($request->attributes->has('viewParametersString')) { $uri->attributes['viewParametersString'] = $request->attributes->get('viewParametersString'); } + if ($options['params'] ?? false) { + $uri->attributes['params'] = $options['params']; + unset($options['params']); + } } return $this->innerRenderer->render($uri, $request, $options); diff --git a/src/lib/MVC/Symfony/Templating/RenderContentStrategy.php b/src/lib/MVC/Symfony/Templating/RenderContentStrategy.php index fead09659d..23b4990806 100644 --- a/src/lib/MVC/Symfony/Templating/RenderContentStrategy.php +++ b/src/lib/MVC/Symfony/Templating/RenderContentStrategy.php @@ -45,7 +45,7 @@ public function render(ValueObject $valueObject, RenderOptions $options): string $renderer = $this->getFragmentRenderer($options->get('method', $this->defaultRenderer)); - return $renderer->render($controllerReference, $currentRequest)->getContent(); + return $renderer->render($controllerReference, $currentRequest, $options->has('params') ? ['params' => $options->get('params')] : [])->getContent(); } } diff --git a/src/lib/MVC/Symfony/Templating/RenderLocationStrategy.php b/src/lib/MVC/Symfony/Templating/RenderLocationStrategy.php index 15b794d85e..bcc7c18514 100644 --- a/src/lib/MVC/Symfony/Templating/RenderLocationStrategy.php +++ b/src/lib/MVC/Symfony/Templating/RenderLocationStrategy.php @@ -46,7 +46,7 @@ public function render(ValueObject $valueObject, RenderOptions $options): string $renderer = $this->getFragmentRenderer($options->get('method', $this->defaultRenderer)); - return $renderer->render($controllerReference, $currentRequest)->getContent(); + return $renderer->render($controllerReference, $currentRequest, $options->has('params') ? ['params' => $options->get('params')] : [])->getContent(); } } diff --git a/tests/bundle/Core/Fragment/DirectFragmentRendererTest.php b/tests/bundle/Core/Fragment/DirectFragmentRendererTest.php index 8d18c1aacf..1893336433 100644 --- a/tests/bundle/Core/Fragment/DirectFragmentRendererTest.php +++ b/tests/bundle/Core/Fragment/DirectFragmentRendererTest.php @@ -31,13 +31,13 @@ public function testSubRequestBuilding(): void $controllerResolver ->expects($this->any()) ->method('getController') - ->with($this->callback(function (Request $request) { - $this->assertEquals('/_fragment', $request->getPathInfo()); - $this->assertEquals('some::controller', $request->attributes->get('_controller')); - $this->assertEquals('attribute_value', $request->attributes->get('some')); - $this->assertEquals('else', $request->attributes->get('something')); - $this->assertInstanceOf(SiteAccess::class, $request->attributes->get('siteaccess')); - $this->assertEquals('test', $request->attributes->get('siteaccess')->name); + ->with($this->callback(static function (Request $request) { + self::assertEquals('/_fragment', $request->getPathInfo()); + self::assertEquals('some::controller', $request->attributes->get('_controller')); + self::assertEquals('attribute_value', $request->attributes->get('some')); + self::assertEquals('else', $request->attributes->get('something')); + self::assertInstanceOf(SiteAccess::class, $request->attributes->get('siteaccess')); + self::assertEquals('test', $request->attributes->get('siteaccess')->name); return true; })) @@ -65,8 +65,7 @@ public function testSubRequestBuilding(): void $directFragmentRenderer = $this->getDirectFragmentRenderer($controllerResolver); $response = $directFragmentRenderer->render($controllerReference, $request); - $this->assertInstanceOf(Response::class, $response); - $this->assertSame('rendered_response', $response->getContent()); + self::assertSame('rendered_response', $response->getContent()); } public function testControllerResponse(): void @@ -82,11 +81,27 @@ public function testControllerResponse(): void $directFragmentRenderer = $this->getDirectFragmentRenderer($controllerResolver); $response = $directFragmentRenderer->render('', new Request(), []); - $this->assertInstanceOf(Response::class, $response); - $this->assertSame('response_body', $response->getContent()); + self::assertSame('response_body', $response->getContent()); } - public function testControllerViewResponse(): void + /** + * @return iterable|null}> + */ + public function controllerViewResponseDataProvider(): iterable + { + yield [[ + 'my_param1' => 'custom_data', + 'my_param2' => 'foobar', + ]]; + + yield [null]; + } + + /** + * @param array|null $params + * @dataProvider controllerViewResponseDataProvider + */ + public function testControllerViewResponse(?array $params = null): void { $contentView = new ContentView(); $contentView->setTemplateIdentifier('template_identifier'); @@ -105,16 +120,33 @@ public function testControllerViewResponse(): void ->expects($this->once()) ->method('render') ->with($contentView) - ->willReturn('rendered_' . $contentView->getTemplateIdentifier()); + ->willReturnCallback( + static function (ContentView $cV) use ($params): string { + if ($params !== null) { + foreach ($params as $key => $value) { + self::assertArrayHasKey($key, $cV->getParameters()); + } + } + + return 'rendered_' . $cV->getTemplateIdentifier(); + } + ); $directFragmentRenderer = $this->getDirectFragmentRenderer( $controllerResolverMock, $templateRendererMock ); - $response = $directFragmentRenderer->render('', new Request(), []); + $response = $directFragmentRenderer->render( + '', + new Request(), + [ + 'viewType' => 'line', + 'method' => 'direct', + 'params' => $params, + ] + ); - $this->assertInstanceOf(Response::class, $response); - $this->assertSame('rendered_template_identifier', $response->getContent()); + self::assertSame('rendered_template_identifier', $response->getContent()); } public function testControllerStringResponse(): void @@ -130,8 +162,7 @@ public function testControllerStringResponse(): void $directFragmentRenderer = $this->getDirectFragmentRenderer($controllerResolver); $response = $directFragmentRenderer->render('', new Request(), []); - $this->assertInstanceOf(Response::class, $response); - $this->assertSame('some_prerendered_response', $response->getContent()); + self::assertSame('some_prerendered_response', $response->getContent()); } public function testControllerUnhandledStringResponse(): void diff --git a/tests/bundle/Core/Fragment/FragmentRendererBaseTest.php b/tests/bundle/Core/Fragment/FragmentRendererBaseTest.php index c62c68b6df..d312b1597d 100644 --- a/tests/bundle/Core/Fragment/FragmentRendererBaseTest.php +++ b/tests/bundle/Core/Fragment/FragmentRendererBaseTest.php @@ -43,12 +43,12 @@ public function testRendererControllerReferenceWithCompoundMatcher(): Controller ->will($this->returnValue($expectedReturn)); $renderer = $this->getRenderer(); - $this->assertSame($expectedReturn, $renderer->render($reference, $request, $options)); - $this->assertArrayHasKey('serialized_siteaccess', $reference->attributes); + self::assertSame($expectedReturn, $renderer->render($reference, $request, $options)); + self::assertArrayHasKey('serialized_siteaccess', $reference->attributes); $serializedSiteAccess = json_encode($siteAccess); - $this->assertSame($serializedSiteAccess, $reference->attributes['serialized_siteaccess']); - $this->assertArrayHasKey('serialized_siteaccess_matcher', $reference->attributes); - $this->assertSame( + self::assertSame($serializedSiteAccess, $reference->attributes['serialized_siteaccess']); + self::assertArrayHasKey('serialized_siteaccess_matcher', $reference->attributes); + self::assertSame( $this->getSerializer()->serialize( $siteAccess->matcher, 'json', @@ -56,9 +56,9 @@ public function testRendererControllerReferenceWithCompoundMatcher(): Controller ), $reference->attributes['serialized_siteaccess_matcher'] ); - $this->assertArrayHasKey('serialized_siteaccess_sub_matchers', $reference->attributes); + self::assertArrayHasKey('serialized_siteaccess_sub_matchers', $reference->attributes); foreach ($siteAccess->matcher->getSubMatchers() as $subMatcher) { - $this->assertSame( + self::assertSame( $this->getSerializer()->serialize( $subMatcher, 'json', diff --git a/tests/bundle/Core/Fragment/InlineFragmentRendererTest.php b/tests/bundle/Core/Fragment/InlineFragmentRendererTest.php index a57ef663f7..4eea7ad7fd 100644 --- a/tests/bundle/Core/Fragment/InlineFragmentRendererTest.php +++ b/tests/bundle/Core/Fragment/InlineFragmentRendererTest.php @@ -11,6 +11,7 @@ use Ibexa\Core\MVC\Symfony\Component\Serializer\SerializerTrait; use Ibexa\Core\MVC\Symfony\SiteAccess; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Controller\ControllerReference; use Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface; use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; @@ -22,7 +23,24 @@ class InlineFragmentRendererTest extends DecoratedFragmentRendererTest { use SerializerTrait; - public function testRendererControllerReference() + /** + * @return iterable|null}> + */ + public function rendererControllerReferenceDataProvider(): iterable + { + yield [[ + 'my_param1' => 'custom_data', + 'my_param2' => 'foobar', + ]]; + + yield [null]; + } + + /** + * @param array|null $params + * @dataProvider rendererControllerReferenceDataProvider + */ + public function testRendererControllerReference(?array $params = null) { $reference = new ControllerReference('FooBundle:bar:baz'); $matcher = new SiteAccess\Matcher\HostElement(1); @@ -36,20 +54,34 @@ public function testRendererControllerReference() $request->attributes->set('semanticPathinfo', '/foo/bar'); $request->attributes->set('viewParametersString', '/(foo)/bar'); $options = ['foo' => 'bar']; + $expectedReturn = '/_fragment?foo=bar'; $this->innerRenderer ->expects($this->once()) ->method('render') ->with($reference, $request, $options) - ->will($this->returnValue($expectedReturn)); + ->willReturnCallback( + static function (ControllerReference $url, Request $request, array $callBackOptions) use ($expectedReturn, $params, $options): Response { + if ($params !== null) { + self::assertEquals($params, $url->attributes['params']); + } + self::assertEquals($options, $callBackOptions); + + return new Response($expectedReturn); + } + ); + + if ($params !== null) { + $options['params'] = $params; + } $renderer = $this->getRenderer(); - $this->assertSame($expectedReturn, $renderer->render($reference, $request, $options)); - $this->assertTrue(isset($reference->attributes['serialized_siteaccess'])); + self::assertEquals(new Response($expectedReturn), $renderer->render($reference, $request, $options)); + self::assertTrue(isset($reference->attributes['serialized_siteaccess'])); $serializedSiteAccess = json_encode($siteAccess); - $this->assertSame($serializedSiteAccess, $reference->attributes['serialized_siteaccess']); - $this->assertTrue(isset($reference->attributes['serialized_siteaccess_matcher'])); - $this->assertSame( + self::assertSame($serializedSiteAccess, $reference->attributes['serialized_siteaccess']); + self::assertTrue(isset($reference->attributes['serialized_siteaccess_matcher'])); + self::assertSame( $this->getSerializer()->serialize( $siteAccess->matcher, 'json', @@ -57,20 +89,20 @@ public function testRendererControllerReference() ), $reference->attributes['serialized_siteaccess_matcher'] ); - $this->assertTrue(isset($reference->attributes['semanticPathinfo'])); - $this->assertSame('/foo/bar', $reference->attributes['semanticPathinfo']); - $this->assertTrue(isset($reference->attributes['viewParametersString'])); - $this->assertSame('/(foo)/bar', $reference->attributes['viewParametersString']); + self::assertTrue(isset($reference->attributes['semanticPathinfo'])); + self::assertSame('/foo/bar', $reference->attributes['semanticPathinfo']); + self::assertTrue(isset($reference->attributes['viewParametersString'])); + self::assertSame('/(foo)/bar', $reference->attributes['viewParametersString']); } public function testRendererControllerReferenceWithCompoundMatcher(): ControllerReference { $reference = parent::testRendererControllerReferenceWithCompoundMatcher(); - $this->assertArrayHasKey('semanticPathinfo', $reference->attributes); - $this->assertSame('/foo/bar', $reference->attributes['semanticPathinfo']); - $this->assertArrayHasKey('viewParametersString', $reference->attributes); - $this->assertSame('/(foo)/bar', $reference->attributes['viewParametersString']); + self::assertArrayHasKey('semanticPathinfo', $reference->attributes); + self::assertSame('/foo/bar', $reference->attributes['semanticPathinfo']); + self::assertArrayHasKey('viewParametersString', $reference->attributes); + self::assertSame('/(foo)/bar', $reference->attributes['viewParametersString']); return $reference; } diff --git a/tests/lib/MVC/Symfony/Templating/BaseRenderStrategyTest.php b/tests/lib/MVC/Symfony/Templating/BaseRenderStrategyTest.php index 66f71a4bf1..8fae0cd46a 100644 --- a/tests/lib/MVC/Symfony/Templating/BaseRenderStrategyTest.php +++ b/tests/lib/MVC/Symfony/Templating/BaseRenderStrategyTest.php @@ -24,7 +24,7 @@ abstract class BaseRenderStrategyTest extends TestCase { - public function createRenderStrategy( + public static function createRenderStrategy( string $typeClass, array $fragmentRenderers, string $defaultMethod = 'inline', diff --git a/tests/lib/MVC/Symfony/Templating/RenderContentStrategyTest.php b/tests/lib/MVC/Symfony/Templating/RenderContentStrategyTest.php index 8c12857349..173b7bc40b 100644 --- a/tests/lib/MVC/Symfony/Templating/RenderContentStrategyTest.php +++ b/tests/lib/MVC/Symfony/Templating/RenderContentStrategyTest.php @@ -14,6 +14,7 @@ use Ibexa\Core\MVC\Symfony\SiteAccess; use Ibexa\Core\MVC\Symfony\Templating\RenderContentStrategy; use Ibexa\Core\MVC\Symfony\Templating\RenderOptions; +use PHPUnit\Framework\MockObject\MockObject; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Controller\ControllerReference; @@ -23,7 +24,7 @@ class RenderContentStrategyTest extends BaseRenderStrategyTest { public function testUnsupportedValueObject(): void { - $renderContentStrategy = $this->createRenderStrategy( + $renderContentStrategy = self::createRenderStrategy( RenderContentStrategy::class, [ $this->createFragmentRenderer(), @@ -32,7 +33,7 @@ public function testUnsupportedValueObject(): void $valueObject = new class() extends ValueObject { }; - $this->assertFalse($renderContentStrategy->supports($valueObject)); + self::assertFalse($renderContentStrategy->supports($valueObject)); $this->expectException(InvalidArgumentException::class); $renderContentStrategy->render($valueObject, new RenderOptions()); @@ -40,7 +41,7 @@ public function testUnsupportedValueObject(): void public function testDefaultFragmentRenderer(): void { - $renderContentStrategy = $this->createRenderStrategy( + $renderContentStrategy = self::createRenderStrategy( RenderContentStrategy::class, [ $this->createFragmentRenderer('inline'), @@ -49,9 +50,9 @@ public function testDefaultFragmentRenderer(): void ); $contentMock = $this->createMock(Content::class); - $this->assertTrue($renderContentStrategy->supports($contentMock)); + self::assertTrue($renderContentStrategy->supports($contentMock)); - $this->assertSame( + self::assertSame( 'inline_rendered', $renderContentStrategy->render($contentMock, new RenderOptions()) ); @@ -59,13 +60,13 @@ public function testDefaultFragmentRenderer(): void public function testUnknownFragmentRenderer(): void { - $renderContentStrategy = $this->createRenderStrategy( + $renderContentStrategy = self::createRenderStrategy( RenderContentStrategy::class, [], ); $contentMock = $this->createMock(Content::class); - $this->assertTrue($renderContentStrategy->supports($contentMock)); + self::assertTrue($renderContentStrategy->supports($contentMock)); $this->expectException(InvalidArgumentException::class); $renderContentStrategy->render($contentMock, new RenderOptions()); @@ -73,7 +74,7 @@ public function testUnknownFragmentRenderer(): void public function testMultipleFragmentRenderers(): void { - $renderContentStrategy = $this->createRenderStrategy( + $renderContentStrategy = self::createRenderStrategy( RenderContentStrategy::class, [ $this->createFragmentRenderer('method_a'), @@ -83,9 +84,9 @@ public function testMultipleFragmentRenderers(): void ); $contentMock = $this->createMock(Content::class); - $this->assertTrue($renderContentStrategy->supports($contentMock)); + self::assertTrue($renderContentStrategy->supports($contentMock)); - $this->assertSame( + self::assertSame( 'method_b_rendered', $renderContentStrategy->render($contentMock, new RenderOptions([ 'method' => 'method_b', @@ -93,9 +94,62 @@ public function testMultipleFragmentRenderers(): void ); } + public function testForwardOptionsToFragmentRenderer(): void + { + static::forwardOptionsToFragmentRenderer( + $this->createMock(FragmentRendererInterface::class), + $this->createMock(Content::class), + RenderContentStrategy::class, + ); + } + + public static function forwardOptionsToFragmentRenderer(MockObject $fragmentRendererMock, MockObject $valueObjectMock, string $renderStrategyClass): void + { + $params = [ + 'param1' => 'value1', + 'param2' => 'value2', + ]; + + $fragmentRendererMock + ->method('getName') + ->willReturn('fragment_render_mock'); + $fragmentRendererMock->expects(self::once()) + ->method('render') + ->with( + self::anything(), + self::anything(), + self::equalTo([ + 'params' => $params, + ]) + ) + ->willReturn(new Response('fragment_render_mock_rendered')); + + $renderContentStrategy = self::createRenderStrategy( + $renderStrategyClass, + [ + $fragmentRendererMock, + ], + ); + + /** @var \Ibexa\Contracts\Core\Repository\Values\ValueObject&\PHPUnit\Framework\MockObject\MockObject $valueObjectMock */ + self::assertTrue($renderContentStrategy->supports($valueObjectMock)); + + self::assertSame( + 'fragment_render_mock_rendered', + $renderContentStrategy->render($valueObjectMock, new RenderOptions([ + 'method' => 'fragment_render_mock', + 'viewType' => 'awesome', + 'params' => [ + 'param1' => 'value1', + 'param2' => 'value2', + ], + ])) + ); + } + public function testDuplicatedFragmentRenderers(): void { - $renderContentStrategy = $this->createRenderStrategy( + $renderContentStrategy = self::createRenderStrategy( RenderContentStrategy::class, [ $this->createFragmentRenderer('method_a', 'decorator service used'), @@ -127,10 +181,9 @@ public function testExpectedMethodRenderArgumentsFormat(): void ->method('getName') ->willReturn('method_b'); - $controllerReferenceCallback = $this->callback(function (ControllerReference $controllerReference) { - $this->assertInstanceOf(ControllerReference::class, $controllerReference); - $this->assertEquals('ibexa_content::viewAction', $controllerReference->controller); - $this->assertSame([ + $controllerReferenceCallback = $this->callback(static function (ControllerReference $controllerReference) { + self::assertEquals('ibexa_content::viewAction', $controllerReference->controller); + self::assertSame([ 'contentId' => 123, 'viewType' => 'awesome', ], $controllerReference->attributes); @@ -138,8 +191,8 @@ public function testExpectedMethodRenderArgumentsFormat(): void return true; }); - $requestCallback = $this->callback(function (Request $request) use ($siteAccess, $content): bool { - $this->assertSame('TEST/1.0', $request->headers->get('Surrogate-Capability')); + $requestCallback = $this->callback(static function (Request $request) use ($siteAccess, $content): bool { + self::assertSame('TEST/1.0', $request->headers->get('Surrogate-Capability')); return true; }); @@ -150,7 +203,7 @@ public function testExpectedMethodRenderArgumentsFormat(): void ->with($controllerReferenceCallback, $requestCallback) ->willReturn(new Response('some_rendered_content')); - $renderContentStrategy = $this->createRenderStrategy( + $renderContentStrategy = self::createRenderStrategy( RenderContentStrategy::class, [ $this->createFragmentRenderer('method_a'), @@ -162,7 +215,7 @@ public function testExpectedMethodRenderArgumentsFormat(): void $request ); - $this->assertSame('some_rendered_content', $renderContentStrategy->render( + self::assertSame('some_rendered_content', $renderContentStrategy->render( $content, new RenderOptions([ 'method' => 'method_b', diff --git a/tests/lib/MVC/Symfony/Templating/RenderLocationStrategyTest.php b/tests/lib/MVC/Symfony/Templating/RenderLocationStrategyTest.php index 94e28a4f64..899565c227 100644 --- a/tests/lib/MVC/Symfony/Templating/RenderLocationStrategyTest.php +++ b/tests/lib/MVC/Symfony/Templating/RenderLocationStrategyTest.php @@ -23,7 +23,7 @@ class RenderLocationStrategyTest extends BaseRenderStrategyTest { public function testUnsupportedValueObject(): void { - $renderLocationStrategy = $this->createRenderStrategy( + $renderLocationStrategy = self::createRenderStrategy( RenderLocationStrategy::class, [ $this->createFragmentRenderer(), @@ -40,7 +40,7 @@ public function testUnsupportedValueObject(): void public function testDefaultFragmentRenderer(): void { - $renderLocationStrategy = $this->createRenderStrategy( + $renderLocationStrategy = self::createRenderStrategy( RenderLocationStrategy::class, [ $this->createFragmentRenderer('inline'), @@ -59,7 +59,7 @@ public function testDefaultFragmentRenderer(): void public function testUnknownFragmentRenderer(): void { - $renderLocationStrategy = $this->createRenderStrategy( + $renderLocationStrategy = self::createRenderStrategy( RenderLocationStrategy::class, [], ); @@ -73,7 +73,7 @@ public function testUnknownFragmentRenderer(): void public function testMultipleFragmentRenderers(): void { - $renderLocationStrategy = $this->createRenderStrategy( + $renderLocationStrategy = self::createRenderStrategy( RenderLocationStrategy::class, [ $this->createFragmentRenderer('method_a'), @@ -93,6 +93,15 @@ public function testMultipleFragmentRenderers(): void ); } + public function testForwardOptionsToFragmentRenderer(): void + { + RenderContentStrategyTest::forwardOptionsToFragmentRenderer( + $this->createMock(FragmentRendererInterface::class), + $this->createMock(Location::class), + RenderLocationStrategy::class, + ); + } + public function testExpectedMethodRenderRequestFormat(): void { $request = new Request(); @@ -131,7 +140,7 @@ public function testExpectedMethodRenderRequestFormat(): void ->with($controllerReferenceCallback, $requestCallback) ->willReturn(new Response('some_rendered_content')); - $renderLocationStrategy = $this->createRenderStrategy( + $renderLocationStrategy = self::createRenderStrategy( RenderLocationStrategy::class, [ $this->createFragmentRenderer('method_a'),