forked from sonata-project/SonataAdminBundle
/
AdminPoolLoaderTest.php
108 lines (86 loc) · 3.74 KB
/
AdminPoolLoaderTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
declare(strict_types=1);
/*
* This file is part of the Sonata Project package.
*
* (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Sonata\AdminBundle\Tests\Route;
use PHPUnit\Framework\TestCase;
use Sonata\AdminBundle\Admin\AdminInterface;
use Sonata\AdminBundle\Admin\Pool;
use Sonata\AdminBundle\Route\AdminPoolLoader;
use Sonata\AdminBundle\Route\RouteCollection;
use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\Routing\Route as SymfonyRoute;
use Symfony\Component\Routing\RouteCollection as SymfonyRouteCollection;
/**
* @author Andrej Hudec <pulzarraider@gmail.com>
*/
class AdminPoolLoaderTest extends TestCase
{
// NEXT_MAJOR: Remove next line.
use ExpectDeprecationTrait;
public function testSupports(): void
{
$container = new Container();
$pool = new Pool($container, ['foo_admin', 'bar_admin']);
$adminPoolLoader = new AdminPoolLoader($pool);
$this->assertTrue($adminPoolLoader->supports('foo', 'sonata_admin'));
$this->assertFalse($adminPoolLoader->supports('foo', 'bar'));
}
public function testLoad(): void
{
$container = new Container();
$pool = new Pool($container, ['foo_admin', 'bar_admin']);
$adminPoolLoader = new AdminPoolLoader($pool);
$routeCollection1 = new RouteCollection('base.Code.Route.foo', 'baseRouteNameFoo', 'baseRoutePatternFoo', 'baseControllerNameFoo');
$routeCollection2 = new RouteCollection('base.Code.Route.bar', 'baseRouteNameBar', 'baseRoutePatternBar', 'baseControllerNameBar');
$routeCollection1->add('foo');
$routeCollection2->add('bar');
$routeCollection2->add('baz');
$admin1 = $this->getMockForAbstractClass(AdminInterface::class);
$admin1->expects($this->once())
->method('getRoutes')
->willReturn($routeCollection1);
$container->set('foo_admin', $admin1);
$admin2 = $this->getMockForAbstractClass(AdminInterface::class);
$admin2->expects($this->once())
->method('getRoutes')
->willReturn($routeCollection2);
$container->set('bar_admin', $admin2);
$collection = $adminPoolLoader->load('foo', 'sonata_admin');
$this->assertInstanceOf(SymfonyRouteCollection::class, $collection);
$this->assertInstanceOf(SymfonyRoute::class, $collection->get('baseRouteNameFoo_foo'));
$this->assertInstanceOf(SymfonyRoute::class, $collection->get('baseRouteNameBar_bar'));
$this->assertInstanceOf(SymfonyRoute::class, $collection->get('baseRouteNameBar_bar'));
}
/**
* NEXT_MAJOR: Remove this method.
*
* @group legacy
*/
public function testThrowsADeprecationConstructingWithContainer(): void
{
$container = new Container();
$pool = new Pool($container);
$this->expectDeprecation('Passing more than one argument to "Sonata\AdminBundle\Route\AdminPoolLoader::__construct()" is deprecated since sonata-project/admin-bundle 3.x.');
new AdminPoolLoader($pool, ['foo_admin', 'bar_admin'], $container);
}
/**
* NEXT_MAJOR: Remove this method.
*
* @group legacy
*/
public function testThrowsADeprecationConstructingWithAdminServicesIds(): void
{
$container = new Container();
$pool = new Pool($container);
$this->expectDeprecation('Passing more than one argument to "Sonata\AdminBundle\Route\AdminPoolLoader::__construct()" is deprecated since sonata-project/admin-bundle 3.x.');
new AdminPoolLoader($pool, ['foo_admin', 'bar_admin']);
}
}