Skip to content

Commit 7bbaf69

Browse files
authored
IBX-10116: Fixed ibexa_render() not using decorated fragment renders (#579)
1 parent d24854c commit 7bbaf69

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

src/contracts/MVC/Templating/BaseRenderStrategy.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ public function __construct(
3434
RequestStack $requestStack
3535
) {
3636
foreach ($fragmentRenderers as $fragmentRenderer) {
37-
$this->fragmentRenderers[$fragmentRenderer->getName()] = $fragmentRenderer;
37+
if (!isset($this->fragmentRenderers[$fragmentRenderer->getName()])) {
38+
$this->fragmentRenderers[$fragmentRenderer->getName()] = $fragmentRenderer;
39+
}
3840
}
3941

4042
$this->defaultRenderer = $defaultRenderer;

tests/lib/MVC/Symfony/Templating/RenderContentStrategyTest.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,27 @@ public function testMultipleFragmentRenderers(): void
9393
);
9494
}
9595

96+
public function testDuplicatedFragmentRenderers(): void
97+
{
98+
$renderContentStrategy = $this->createRenderStrategy(
99+
RenderContentStrategy::class,
100+
[
101+
$this->createFragmentRenderer('method_a', 'decorator service used'),
102+
$this->createFragmentRenderer('method_a', 'original service used'),
103+
],
104+
);
105+
106+
$contentMock = $this->createMock(Content::class);
107+
self::assertTrue($renderContentStrategy->supports($contentMock));
108+
109+
self::assertSame(
110+
'decorator service used',
111+
$renderContentStrategy->render($contentMock, new RenderOptions([
112+
'method' => 'method_a',
113+
]))
114+
);
115+
}
116+
96117
public function testExpectedMethodRenderArgumentsFormat(): void
97118
{
98119
$request = new Request();

0 commit comments

Comments
 (0)