Completed
Pull Request — master (#5032)
by Grégoire
03:41
created

e()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 9
rs 9.6666
cc 1
eloc 5
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Sonata Project package.
7
 *
8
 * (c) Thomas Rabaix <[email protected]>
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Sonata\AdminBundle\Tests\Twig\Extension;
15
16
use PHPUnit\Framework\TestCase;
17
use Sonata\AdminBundle\Templating\TemplateRegistryInterface;
18
use Sonata\AdminBundle\Twig\Extension\TemplateRegistryExtension;
19
use Symfony\Component\DependencyInjection\ContainerInterface;
20
use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
21
use Twig\TwigFunction;
22
23
/**
24
 * Class TemplateRegistryExtensionTest.
25
 */
26
class TemplateRegistryExtensionTest extends TestCase
27
{
28
    /**
29
     * @var TemplateRegistryExtension
30
     */
31
    private $extension;
32
33
    /**
34
     * @var TemplateRegistryInterface
35
     */
36
    private $templateRegistry;
37
38
    /**
39
     * @var ContainerInterface
40
     */
41
    private $container;
42
43
    private $admin;
44
45
    protected function setUp(): void
46
    {
47
        $this->templateRegistry = $this->prophesize(TemplateRegistryInterface::class);
48
        $this->container = $this->prophesize(ContainerInterface::class);
49
50
        $this->templateRegistry->getTemplate('edit')->willReturn('@SonataAdmin/CRUD/edit.html.twig');
51
52
        $this->extension = new TemplateRegistryExtension(
53
            $this->templateRegistry->reveal(),
54
            $this->container->reveal()
55
        );
56
    }
57
58
    public function getFunctionsTest(): void
59
    {
60
        $expected = [
61
            new TwigFunction('get_admin_template', [$this->extension, 'getAdminTemplate']),
62
            new TwigFunction('get_global_template', [$this->extension, 'getGlobalTemplate']),
63
64
            // NEXT MAJOR: Remove this line
65
            new TwigFunction('get_admin_pool_template', [$this->extension, 'getGlobalTemplate'], ['deprecated' => true]),
66
        ];
67
68
        $this->assertEquals($expected, $this->extension->getFunctions());
69
    }
70
71
    public function testGetAdminTemplate(): void
72
    {
73
        $this->container->get('admin.post.template_registry')->willReturn($this->templateRegistry);
74
75
        $this->assertEquals(
76
            '@SonataAdmin/CRUD/edit.html.twig',
77
            $this->extension->getAdminTemplate('edit', 'admin.post')
78
        );
79
    }
80
81
    public function testGetAdminTemplateFailure(): void
82
    {
83
        $this->container->get('admin.post.template_registry')->willReturn(null);
84
85
        $this->expectException(ServiceNotFoundException::class);
86
        $this->expectExceptionMessage('You have requested a non-existent service "admin.post.template_registry"');
87
88
        $this->assertEquals(
89
            '@SonataAdmin/CRUD/edit.html.twig',
90
            $this->extension->getAdminTemplate('edit', 'admin.post')
91
        );
92
    }
93
94
    public function testGetGlobalTemplate(): void
95
    {
96
        $this->assertEquals(
97
            '@SonataAdmin/CRUD/edit.html.twig',
98
            $this->extension->getGlobalTemplate('edit')
99
        );
100
    }
101
}
102