Skip to content

Commit 988d77f

Browse files
committed
Transformed static method forwardParamOptionsToFragmentRenderer to a trait
1 parent 0eccc29 commit 988d77f

File tree

3 files changed

+76
-53
lines changed

3 files changed

+76
-53
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
3+
/**
4+
* @copyright Copyright (C) Ibexa AS. All rights reserved.
5+
* @license For full copyright and license information view LICENSE file distributed with this source code.
6+
*/
7+
declare(strict_types=1);
8+
9+
namespace Ibexa\Tests\Core\MVC\Symfony\Templating;
10+
11+
use Ibexa\Contracts\Core\MVC\Templating\RenderStrategy;
12+
use Ibexa\Core\MVC\Symfony\Templating\RenderOptions;
13+
use PHPUnit\Framework\TestCase;
14+
use Symfony\Component\HttpFoundation\Response;
15+
use Symfony\Component\HttpKernel\Controller\ControllerReference;
16+
17+
trait ForwardParamOptionsToFragmentRendererTrait
18+
{
19+
/**
20+
* @param \Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface|\PHPUnit\Framework\MockObject\MockObject $fragmentRendererMock
21+
* @param \Ibexa\Contracts\Core\Repository\Values\ValueObject|\PHPUnit\Framework\MockObject\MockObject $valueObjectMock
22+
* @param class-string<RenderStrategy> $renderStrategyClass
23+
*/
24+
public function forwardParamOptionsToFragmentRenderer(
25+
object $fragmentRendererMock,
26+
object $valueObjectMock,
27+
string $renderStrategyClass
28+
): void {
29+
$params = [
30+
'param1' => 'value1',
31+
'param2' => 'value2',
32+
];
33+
34+
$fragmentRendererMock
35+
->method('getName')
36+
->willReturn('fragment_render_mock');
37+
$fragmentRendererMock->expects(self::once())
38+
->method('render')
39+
->with(
40+
self::callback(static function ($controllerReference) use ($params) {
41+
if (!$controllerReference instanceof ControllerReference) {
42+
return false;
43+
}
44+
45+
return $controllerReference->attributes['params'] === $params;
46+
}),
47+
self::anything(),
48+
)
49+
->willReturn(new Response('fragment_render_mock_rendered'));
50+
51+
$renderContentStrategy = self::createRenderStrategy(
52+
$renderStrategyClass,
53+
[
54+
$fragmentRendererMock,
55+
],
56+
);
57+
58+
/** @var \Ibexa\Contracts\Core\Repository\Values\ValueObject&\PHPUnit\Framework\MockObject\MockObject $valueObjectMock */
59+
TestCase::assertTrue($renderContentStrategy->supports($valueObjectMock));
60+
61+
TestCase::assertSame(
62+
'fragment_render_mock_rendered',
63+
$renderContentStrategy->render($valueObjectMock, new RenderOptions([
64+
'method' => 'fragment_render_mock',
65+
'viewType' => 'awesome',
66+
'params' => $params,
67+
]))
68+
);
69+
}
70+
}

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

Lines changed: 3 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,21 @@
88

99
namespace Ibexa\Tests\Core\MVC\Symfony\Templating;
1010

11-
use Ibexa\Contracts\Core\MVC\Templating\RenderStrategy;
1211
use Ibexa\Contracts\Core\Repository\Exceptions\InvalidArgumentException;
1312
use Ibexa\Contracts\Core\Repository\Values\Content\Content;
1413
use Ibexa\Contracts\Core\Repository\Values\ValueObject;
1514
use Ibexa\Core\MVC\Symfony\SiteAccess;
1615
use Ibexa\Core\MVC\Symfony\Templating\RenderContentStrategy;
1716
use Ibexa\Core\MVC\Symfony\Templating\RenderOptions;
18-
use PHPUnit\Framework\MockObject\MockObject;
1917
use Symfony\Component\HttpFoundation\Request;
2018
use Symfony\Component\HttpFoundation\Response;
2119
use Symfony\Component\HttpKernel\Controller\ControllerReference;
2220
use Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface;
2321

2422
class RenderContentStrategyTest extends BaseRenderStrategyTest
2523
{
24+
use ForwardParamOptionsToFragmentRendererTrait;
25+
2626
public function testUnsupportedValueObject(): void
2727
{
2828
$renderContentStrategy = $this->createRenderStrategy(
@@ -97,62 +97,13 @@ public function testMultipleFragmentRenderers(): void
9797

9898
public function testForwardParamOptionsToFragmentRenderer(): void
9999
{
100-
static::forwardParamOptionsToFragmentRenderer(
100+
$this->forwardParamOptionsToFragmentRenderer(
101101
$this->createMock(FragmentRendererInterface::class),
102102
$this->createMock(Content::class),
103103
RenderContentStrategy::class,
104104
);
105105
}
106106

107-
/**
108-
* @param \PHPUnit\Framework\MockObject\MockObject&\Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface $fragmentRendererMock
109-
* @param \PHPUnit\Framework\MockObject\MockObject&\Ibexa\Contracts\Core\Repository\Values\ValueObject $valueObjectMock
110-
* @param class-string<RenderStrategy> $renderStrategyClass
111-
*/
112-
public static function forwardParamOptionsToFragmentRenderer(MockObject $fragmentRendererMock, MockObject $valueObjectMock, string $renderStrategyClass): void
113-
{
114-
$params = [
115-
'param1' => 'value1',
116-
'param2' => 'value2',
117-
];
118-
119-
$fragmentRendererMock
120-
->method('getName')
121-
->willReturn('fragment_render_mock');
122-
$fragmentRendererMock->expects(self::once())
123-
->method('render')
124-
->with(
125-
self::callback(static function ($controllerReference) use ($params) {
126-
if (!$controllerReference instanceof ControllerReference) {
127-
return false;
128-
}
129-
130-
return $controllerReference->attributes['params'] === $params;
131-
}),
132-
self::anything(),
133-
)
134-
->willReturn(new Response('fragment_render_mock_rendered'));
135-
136-
$renderContentStrategy = self::createRenderStrategy(
137-
$renderStrategyClass,
138-
[
139-
$fragmentRendererMock,
140-
],
141-
);
142-
143-
/** @var \Ibexa\Contracts\Core\Repository\Values\ValueObject&\PHPUnit\Framework\MockObject\MockObject $valueObjectMock */
144-
self::assertTrue($renderContentStrategy->supports($valueObjectMock));
145-
146-
self::assertSame(
147-
'fragment_render_mock_rendered',
148-
$renderContentStrategy->render($valueObjectMock, new RenderOptions([
149-
'method' => 'fragment_render_mock',
150-
'viewType' => 'awesome',
151-
'params' => $params,
152-
]))
153-
);
154-
}
155-
156107
public function testDuplicatedFragmentRenderers(): void
157108
{
158109
$renderContentStrategy = $this->createRenderStrategy(

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
class RenderLocationStrategyTest extends BaseRenderStrategyTest
2323
{
24+
use ForwardParamOptionsToFragmentRendererTrait;
25+
2426
public function testUnsupportedValueObject(): void
2527
{
2628
$renderLocationStrategy = $this->createRenderStrategy(
@@ -95,7 +97,7 @@ public function testMultipleFragmentRenderers(): void
9597

9698
public function testForwardParamOptionsToFragmentRenderer(): void
9799
{
98-
RenderContentStrategyTest::forwardParamOptionsToFragmentRenderer(
100+
$this->forwardParamOptionsToFragmentRenderer(
99101
$this->createMock(FragmentRendererInterface::class),
100102
$this->createMock(Location::class),
101103
RenderLocationStrategy::class,

0 commit comments

Comments
 (0)