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

testRendererControllerReferenceWithCompoundMatcher()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 11
rs 9.9
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\InlineFragmentRenderer;
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
15
class InlineFragmentRendererTest extends DecoratedFragmentRendererTest
16
{
17
    public function testRendererControllerReference()
18
    {
19
        $reference = new ControllerReference('FooBundle:bar:baz');
20
        $matcher = new SiteAccess\Matcher\HostElement(1);
21
        $siteAccess = new SiteAccess(
22
            'test',
23
            'test',
24
            $matcher
25
        );
26
        $request = new Request();
27
        $request->attributes->set('siteaccess', $siteAccess);
28
        $request->attributes->set('semanticPathinfo', '/foo/bar');
29
        $request->attributes->set('viewParametersString', '/(foo)/bar');
30
        $options = ['foo' => 'bar'];
31
        $expectedReturn = '/_fragment?foo=bar';
32
        $this->innerRenderer
33
            ->expects($this->once())
34
            ->method('render')
35
            ->with($reference, $request, $options)
36
            ->will($this->returnValue($expectedReturn));
37
38
        $renderer = new InlineFragmentRenderer($this->innerRenderer);
39
        $this->assertSame($expectedReturn, $renderer->render($reference, $request, $options));
40
        $this->assertTrue(isset($reference->attributes['serialized_siteaccess']));
41
        $serializedSiteAccess = json_encode($siteAccess);
42
        $this->assertSame($serializedSiteAccess, $reference->attributes['serialized_siteaccess']);
43
        $this->assertTrue(isset($reference->attributes['serialized_siteaccess_matcher']));
44
        $this->assertSame(
45
            $this->getSerializer()->serialize(
46
                $siteAccess->matcher,
47
                'json'
48
            ),
49
            $reference->attributes['serialized_siteaccess_matcher']
50
        );
51
        $this->assertTrue(isset($reference->attributes['semanticPathinfo']));
52
        $this->assertSame('/foo/bar', $reference->attributes['semanticPathinfo']);
53
        $this->assertTrue(isset($reference->attributes['viewParametersString']));
54
        $this->assertSame('/(foo)/bar', $reference->attributes['viewParametersString']);
55
    }
56
57
    public function testRendererControllerReferenceWithCompoundMatcher(): ControllerReference
58
    {
59
        $reference = parent::testRendererControllerReferenceWithCompoundMatcher();
60
61
        $this->assertArrayHasKey('semanticPathinfo', $reference->attributes);
62
        $this->assertSame('/foo/bar', $reference->attributes['semanticPathinfo']);
63
        $this->assertArrayHasKey('viewParametersString', $reference->attributes);
64
        $this->assertSame('/(foo)/bar', $reference->attributes['viewParametersString']);
65
66
        return $reference;
67
    }
68
69
    public function getRequest(SiteAccess $siteAccess): Request
70
    {
71
        $request = new Request();
72
        $request->attributes->set('siteaccess', $siteAccess);
73
        $request->attributes->set('semanticPathinfo', '/foo/bar');
74
        $request->attributes->set('viewParametersString', '/(foo)/bar');
75
76
        return $request;
77
    }
78
79
    public function getRenderer(): FragmentRendererInterface
80
    {
81
        return new InlineFragmentRenderer($this->innerRenderer);
82
    }
83
}
84