13
13
14
14
use Psr \Container \ContainerInterface as Psr11ContainerInterface ;
15
15
use Psr \Log \LoggerInterface ;
16
+ use Symfony \Bundle \FrameworkBundle \Controller \AbstractController ;
16
17
use Symfony \Bundle \FrameworkBundle \Controller \ControllerNameParser ;
17
18
use Symfony \Bundle \FrameworkBundle \Controller \ControllerResolver ;
18
19
use Symfony \Component \DependencyInjection \Container ;
@@ -68,6 +69,24 @@ public function testGetControllerWithBundleNotation()
68
69
$ this ->assertSame ('testAction ' , $ controller [1 ]);
69
70
}
70
71
72
+ public function testContainerAwareControllerGetsContainerWhenNotSet ()
73
+ {
74
+ class_exists (AbstractControllerTest::class);
75
+
76
+ $ controller = new ContainerAwareController ();
77
+
78
+ $ container = new Container ();
79
+ $ container ->set (TestAbstractController::class, $ controller );
80
+
81
+ $ resolver = $ this ->createControllerResolver (null , $ container );
82
+
83
+ $ request = Request::create ('/ ' );
84
+ $ request ->attributes ->set ('_controller ' , TestAbstractController::class.':testAction ' );
85
+
86
+ $ this ->assertSame (array ($ controller , 'testAction ' ), $ resolver ->getController ($ request ));
87
+ $ this ->assertSame ($ container , $ controller ->getContainer ());
88
+ }
89
+
71
90
public function testAbstractControllerGetsContainerWhenNotSet ()
72
91
{
73
92
class_exists (AbstractControllerTest::class);
@@ -86,6 +105,24 @@ class_exists(AbstractControllerTest::class);
86
105
$ this ->assertSame ($ container , $ controller ->setContainer ($ container ));
87
106
}
88
107
108
+ public function testAbstractControllerServiceWithFcqnIdGetsContainerWhenNotSet ()
109
+ {
110
+ class_exists (AbstractControllerTest::class);
111
+
112
+ $ controller = new DummyController ();
113
+
114
+ $ container = new Container ();
115
+ $ container ->set (DummyController::class, $ controller );
116
+
117
+ $ resolver = $ this ->createControllerResolver (null , $ container );
118
+
119
+ $ request = Request::create ('/ ' );
120
+ $ request ->attributes ->set ('_controller ' , DummyController::class.':fooAction ' );
121
+
122
+ $ this ->assertSame (array ($ controller , 'fooAction ' ), $ resolver ->getController ($ request ));
123
+ $ this ->assertSame ($ container , $ controller ->getContainer ());
124
+ }
125
+
89
126
public function testAbstractControllerGetsNoContainerWhenSet ()
90
127
{
91
128
class_exists (AbstractControllerTest::class);
@@ -106,6 +143,26 @@ class_exists(AbstractControllerTest::class);
106
143
$ this ->assertSame ($ controllerContainer , $ controller ->setContainer ($ container ));
107
144
}
108
145
146
+ public function testAbstractControllerServiceWithFcqnIdGetsNoContainerWhenSet ()
147
+ {
148
+ class_exists (AbstractControllerTest::class);
149
+
150
+ $ controller = new DummyController ();
151
+ $ controllerContainer = new Container ();
152
+ $ controller ->setContainer ($ controllerContainer );
153
+
154
+ $ container = new Container ();
155
+ $ container ->set (DummyController::class, $ controller );
156
+
157
+ $ resolver = $ this ->createControllerResolver (null , $ container );
158
+
159
+ $ request = Request::create ('/ ' );
160
+ $ request ->attributes ->set ('_controller ' , DummyController::class.':fooAction ' );
161
+
162
+ $ this ->assertSame (array ($ controller , 'fooAction ' ), $ resolver ->getController ($ request ));
163
+ $ this ->assertSame ($ controllerContainer , $ controller ->getContainer ());
164
+ }
165
+
109
166
protected function createControllerResolver (LoggerInterface $ logger = null , Psr11ContainerInterface $ container = null , ControllerNameParser $ parser = null )
110
167
{
111
168
if (!$ parser ) {
@@ -152,3 +209,15 @@ public function __invoke()
152
209
{
153
210
}
154
211
}
212
+
213
+ class DummyController extends AbstractController
214
+ {
215
+ public function getContainer ()
216
+ {
217
+ return $ this ->container ;
218
+ }
219
+
220
+ public function fooAction ()
221
+ {
222
+ }
223
+ }
0 commit comments