Completed
Push — EZP-31460 ( fb49b1...efa331 )
by
unknown
19:23 queued 11s
created

DecoratedFragmentRendererTest::getRenderer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
5
 * @license For full copyright and license information view LICENSE file distributed with this source code.
6
 */
7
namespace eZ\Bundle\EzPublishCoreBundle\Tests\Fragment;
8
9
use eZ\Bundle\EzPublishCoreBundle\Fragment\DecoratedFragmentRenderer;
10
use eZ\Publish\Core\MVC\Symfony\SiteAccess;
11
use Symfony\Component\HttpFoundation\Request;
12
use Symfony\Component\HttpKernel\Controller\ControllerReference;
13
use Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface;
14
use Symfony\Component\HttpKernel\Fragment\RoutableFragmentRenderer;
15
16
class DecoratedFragmentRendererTest extends FragmentRendererBaseTest
17
{
18
    /** @var \PHPUnit\Framework\MockObject\MockObject */
19
    protected $innerRenderer;
20
21
    protected function setUp()
22
    {
23
        parent::setUp();
24
        $this->innerRenderer = $this->createMock(FragmentRendererInterface::class);
25
    }
26
27
    public function testSetFragmentPathNotRoutableRenderer()
28
    {
29
        $matcher = $this->createMock(SiteAccess\URILexer::class);
30
        $siteAccess = new SiteAccess('test', 'test', $matcher);
31
        $matcher
32
            ->expects($this->never())
33
            ->method('analyseLink');
34
35
        $renderer = new DecoratedFragmentRenderer($this->innerRenderer);
36
        $renderer->setSiteAccess($siteAccess);
37
        $renderer->setFragmentPath('foo');
38
    }
39
40
    public function testSetFragmentPath()
41
    {
42
        $matcher = $this->createMock(SiteAccess\URILexer::class);
43
        $siteAccess = new SiteAccess('test', 'test', $matcher);
44
        $matcher
45
            ->expects($this->once())
46
            ->method('analyseLink')
47
            ->with('/foo')
48
            ->will($this->returnValue('/bar/foo'));
49
50
        $innerRenderer = $this->createMock(RoutableFragmentRenderer::class);
51
        $innerRenderer
52
            ->expects($this->once())
53
            ->method('setFragmentPath')
54
            ->with('/bar/foo');
55
        $renderer = new DecoratedFragmentRenderer($innerRenderer);
56
        $renderer->setSiteAccess($siteAccess);
57
        $renderer->setFragmentPath('/foo');
58
    }
59
60
    public function testGetName()
61
    {
62
        $name = 'test';
63
        $this->innerRenderer
64
            ->expects($this->once())
65
            ->method('getName')
66
            ->will($this->returnValue($name));
67
68
        $renderer = new DecoratedFragmentRenderer($this->innerRenderer);
69
        $this->assertSame($name, $renderer->getName());
70
    }
71
72
    public function testRendererAbsoluteUrl()
73
    {
74
        $url = 'http://phoenix-rises.fm/foo/bar';
75
        $request = new Request();
76
        $options = ['foo' => 'bar'];
77
        $expectedReturn = '/_fragment?foo=bar';
78
        $this->innerRenderer
79
            ->expects($this->once())
80
            ->method('render')
81
            ->with($url, $request, $options)
82
            ->will($this->returnValue($expectedReturn));
83
84
        $renderer = new DecoratedFragmentRenderer($this->innerRenderer);
85
        $this->assertSame($expectedReturn, $renderer->render($url, $request, $options));
86
    }
87
88
    public function testRendererControllerReference()
89
    {
90
        $reference = new ControllerReference('FooBundle:bar:baz');
91
        $matcher = new SiteAccess\Matcher\URIElement(1);
92
        $siteAccess = new SiteAccess(
93
            'test',
94
            'test',
95
            $matcher
96
        );
97
        $request = new Request();
98
        $request->attributes->set('siteaccess', $siteAccess);
99
        $options = ['foo' => 'bar'];
100
        $expectedReturn = '/_fragment?foo=bar';
101
        $this->innerRenderer
102
            ->expects($this->once())
103
            ->method('render')
104
            ->with($reference, $request, $options)
105
            ->will($this->returnValue($expectedReturn));
106
107
        $renderer = new DecoratedFragmentRenderer($this->innerRenderer);
108
        $this->assertSame($expectedReturn, $renderer->render($reference, $request, $options));
109
        $this->assertTrue(isset($reference->attributes['serialized_siteaccess']));
110
        $serializedSiteAccess = json_encode($siteAccess);
111
        $this->assertSame($serializedSiteAccess, $reference->attributes['serialized_siteaccess']);
112
        $this->assertTrue(isset($reference->attributes['serialized_siteaccess_matcher']));
113
        $this->assertSame(
114
            $this->getSerializer()->serialize(
115
                $siteAccess->matcher,
116
                'json'
117
            ),
118
            $reference->attributes['serialized_siteaccess_matcher']
119
        );
120
    }
121
122
    public function getRequest(SiteAccess $siteAccess): Request
123
    {
124
        $request = new Request();
125
        $request->attributes->set('siteaccess', $siteAccess);
126
127
        return $request;
128
    }
129
130
    public function getRenderer(): FragmentRendererInterface
131
    {
132
        return new DecoratedFragmentRenderer($this->innerRenderer);
133
    }
134
}
135