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