-
Notifications
You must be signed in to change notification settings - Fork 3
/
RegisterControllersPassTest.php
75 lines (61 loc) · 2.87 KB
/
RegisterControllersPassTest.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
<?php
namespace Symplify\ControllerAutowire\Tests\DependencyInjection\Compiler;
use PHPUnit_Framework_TestCase;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
use Symplify\ControllerAutowire\DependencyInjection\Compiler\RegisterControllersPass;
use Symplify\ControllerAutowire\DependencyInjection\ControllerClassMap;
use Symplify\ControllerAutowire\HttpKernel\Controller\ControllerFinder;
use Symplify\ControllerAutowire\SymplifyControllerAutowireBundle;
use Symplify\ControllerAutowire\Tests\DependencyInjection\Compiler\RegisterControllersPassSource\SomeController;
final class RegisterControllersPassTest extends PHPUnit_Framework_TestCase
{
/**
* @var RegisterControllersPass
*/
private $registerControllersPass;
protected function setUp()
{
$controllerClassMap = new ControllerClassMap();
$controllerClassMap->addController('somecontroller', 'SomeController');
$controllerFinder = new ControllerFinder();
$this->registerControllersPass = new RegisterControllersPass($controllerClassMap, $controllerFinder);
}
public function testProcess()
{
$containerBuilder = new ContainerBuilder();
$this->assertCount(0, $containerBuilder->getDefinitions());
$containerBuilder->prependExtensionConfig(SymplifyControllerAutowireBundle::ALIAS, [
'controller_dirs' => [
__DIR__.'/RegisterControllersPassSource',
],
]);
$this->registerControllersPass->process($containerBuilder);
$definitions = $containerBuilder->getDefinitions();
$this->assertCount(1, $definitions);
/** @var Definition $controllerDefinition */
$controllerDefinition = array_pop($definitions);
$this->assertInstanceOf(Definition::class, $controllerDefinition);
$this->assertSame(SomeController::class, $controllerDefinition->getClass());
$this->assertTrue($controllerDefinition->isAutowired());
}
public function testServiceDefinitionExists()
{
$containerBuilder = new ContainerBuilder();
$containerBuilder->prependExtensionConfig(SymplifyControllerAutowireBundle::ALIAS, [
'controller_dirs' => [
__DIR__.'/RegisterControllersPassSource',
],
]);
$controllerDefition = new Definition(SomeController::class);
$containerBuilder->setDefinition(
'symplify.controllerautowire.tests.dependencyinjection.'
.'compiler.registercontrollerspasssource.somecontroller',
$controllerDefition
);
$this->assertCount(1, $containerBuilder->getDefinitions());
$this->registerControllersPass->process($containerBuilder);
$this->assertCount(1, $containerBuilder->getDefinitions());
$this->assertTrue($controllerDefition->isAutowired());
}
}