Completed
Push — master ( 285bc9...932fc1 )
by Marko
14s
created

testDashboardActionAjaxLayout()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 45
Code Lines 30

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 45
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 30
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\Action;
15
16
use PHPUnit\Framework\TestCase;
17
use Sonata\AdminBundle\Action\DashboardAction;
18
use Sonata\AdminBundle\Admin\BreadcrumbsBuilderInterface;
19
use Sonata\AdminBundle\Admin\Pool;
20
use Sonata\AdminBundle\Templating\MutableTemplateRegistryInterface;
21
use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;
22
use Symfony\Component\DependencyInjection\ContainerInterface;
23
use Symfony\Component\HttpFoundation\Request;
24
use Symfony\Component\HttpFoundation\RequestStack;
25
use Symfony\Component\HttpFoundation\Response;
26
27
class DashboardActionTest extends TestCase
28
{
29
    public function testdashboardActionStandardRequest(): void
30
    {
31
        $container = $this->createMock(ContainerInterface::class);
32
33
        $templateRegistry = $this->prophesize(MutableTemplateRegistryInterface::class);
34
        $templateRegistry->getTemplate('ajax')->willReturn('ajax.html');
35
        $templateRegistry->getTemplate('dashboard')->willReturn('dashboard.html');
36
        $templateRegistry->getTemplate('layout')->willReturn('layout.html');
37
38
        $pool = new Pool($container, 'title', 'logo.png');
39
        $pool->setTemplateRegistry($templateRegistry->reveal());
40
41
        $templating = $this->createMock(EngineInterface::class);
42
        $request = new Request();
43
44
        $requestStack = new RequestStack();
45
        $requestStack->push($request);
46
47
        $breadcrumbsBuilder = $this->getMockForAbstractClass(BreadcrumbsBuilderInterface::class);
48
49
        $dashboardAction = new DashboardAction(
50
            [],
51
            $breadcrumbsBuilder,
52
            $templateRegistry->reveal(),
53
            $pool
54
        );
55
        $values = [
56
            'templating' => $templating,
57
            'request_stack' => $requestStack,
58
        ];
59
        $dashboardAction->setContainer($container);
60
61
        $container->expects($this->any())->method('get')->will($this->returnCallback(function ($id) use ($values) {
62
            return $values[$id];
63
        }));
64
65
        $container->expects($this->any())
66
            ->method('has')
67
            ->will($this->returnCallback(function ($id) {
68
                return 'templating' === $id;
69
            }));
70
71
        $this->isInstanceOf(Response::class, $dashboardAction($request));
72
    }
73
74
    public function testDashboardActionAjaxLayout(): void
75
    {
76
        $container = $this->createMock(ContainerInterface::class);
77
78
        $templateRegistry = $this->prophesize(MutableTemplateRegistryInterface::class);
79
        $templateRegistry->getTemplate('ajax')->willReturn('ajax.html');
80
        $templateRegistry->getTemplate('dashboard')->willReturn('dashboard.html');
81
        $templateRegistry->getTemplate('layout')->willReturn('layout.html');
82
        $breadcrumbsBuilder = $this->getMockForAbstractClass(BreadcrumbsBuilderInterface::class);
83
84
        $pool = new Pool($container, 'title', 'logo.png');
85
        $pool->setTemplateRegistry($templateRegistry->reveal());
86
87
        $templating = $this->createMock(EngineInterface::class);
88
        $request = new Request();
89
        $request->headers->set('X-Requested-With', 'XMLHttpRequest');
90
91
        $requestStack = new RequestStack();
92
        $requestStack->push($request);
93
94
        $dashboardAction = new DashboardAction(
95
            [],
96
            $breadcrumbsBuilder,
97
            $templateRegistry->reveal(),
98
            $pool
99
        );
100
        $dashboardAction->setContainer($container);
101
        $values = [
102
            'templating' => $templating,
103
            'request_stack' => $requestStack,
104
        ];
105
        $dashboardAction->setContainer($container);
106
107
        $container->expects($this->any())->method('get')->will($this->returnCallback(function ($id) use ($values) {
108
            return $values[$id];
109
        }));
110
111
        $container->expects($this->any())
112
            ->method('has')
113
            ->will($this->returnCallback(function ($id) {
114
                return 'templating' === $id;
115
            }));
116
117
        $this->isInstanceOf(Response::class, $dashboardAction($request));
118
    }
119
}
120