@@ -32,10 +32,10 @@ protected function setUp(): void
3232 /**
3333 * @dataProvider provideRenderStimulusController
3434 */
35- public function testRenderStimulusController (string $ controllerName , array $ controllerValues , array $ controllerClasses , string $ expectedString , array $ expectedArray ): void
35+ public function testRenderStimulusController (string $ controllerName , array $ controllerValues , array $ controllerClasses , array $ controllerOutlets , string $ expectedString , array $ expectedArray ): void
3636 {
3737 $ extension = new StimulusTwigExtension (new StimulusHelper ($ this ->twig ));
38- $ dto = $ extension ->renderStimulusController ($ controllerName , $ controllerValues , $ controllerClasses );
38+ $ dto = $ extension ->renderStimulusController ($ controllerName , $ controllerValues , $ controllerClasses, $ controllerOutlets );
3939 $ this ->assertSame ($ expectedString , (string ) $ dto );
4040 $ this ->assertSame ($ expectedArray , $ dto ->toArray ());
4141 }
@@ -50,14 +50,18 @@ public static function provideRenderStimulusController(): iterable
5050 'controllerClasses ' => [
5151 'second"Key" ' => 'loading ' ,
5252 ],
53- 'expectedString ' => 'data-controller="symfony--ux-dropzone--dropzone" data-symfony--ux-dropzone--dropzone-my-key-value="true" data-symfony--ux-dropzone--dropzone-second-key-class="loading" ' ,
54- 'expectedArray ' => ['data-controller ' => 'symfony--ux-dropzone--dropzone ' , 'data-symfony--ux-dropzone--dropzone-my-key-value ' => 'true ' , 'data-symfony--ux-dropzone--dropzone-second-key-class ' => 'loading ' ],
53+ 'controllerOutlets ' => [
54+ 'other ' => '.test ' ,
55+ ],
56+ 'expectedString ' => 'data-controller="symfony--ux-dropzone--dropzone" data-symfony--ux-dropzone--dropzone-my-key-value="true" data-symfony--ux-dropzone--dropzone-second-key-class="loading" data-symfony--ux-dropzone--dropzone-other-outlet=".test" ' ,
57+ 'expectedArray ' => ['data-controller ' => 'symfony--ux-dropzone--dropzone ' , 'data-symfony--ux-dropzone--dropzone-my-key-value ' => 'true ' , 'data-symfony--ux-dropzone--dropzone-second-key-class ' => 'loading ' , 'data-symfony--ux-dropzone--dropzone-other-outlet ' => '.test ' ],
5558 ];
5659
5760 yield 'short-single-controller-no-data ' => [
5861 'controllerName ' => 'my-controller ' ,
5962 'controllerValues ' => [],
6063 'controllerClasses ' => [],
64+ 'controllerOutlets ' => [],
6165 'expectedString ' => 'data-controller="my-controller" ' ,
6266 'expectedArray ' => ['data-controller ' => 'my-controller ' ],
6367 ];
@@ -66,6 +70,7 @@ public static function provideRenderStimulusController(): iterable
6670 'controllerName ' => 'my-controller ' ,
6771 'controllerValues ' => ['myValue ' => 'scalar-value ' ],
6872 'controllerClasses ' => [],
73+ 'controllerOutlets ' => [],
6974 'expectedString ' => 'data-controller="my-controller" data-my-controller-my-value-value="scalar-value" ' ,
7075 'expectedArray ' => ['data-controller ' => 'my-controller ' , 'data-my-controller-my-value-value ' => 'scalar-value ' ],
7176 ];
@@ -74,6 +79,7 @@ public static function provideRenderStimulusController(): iterable
7479 'controllerName ' => 'false-controller ' ,
7580 'controllerValues ' => ['isEnabled ' => false ],
7681 'controllerClasses ' => [],
82+ 'controllerOutlets ' => [],
7783 'expectedString ' => 'data-controller="false-controller" data-false-controller-is-enabled-value="false" ' ,
7884 'expectedArray ' => ['data-controller ' => 'false-controller ' , 'data-false-controller-is-enabled-value ' => 'false ' ],
7985 ];
@@ -82,6 +88,7 @@ public static function provideRenderStimulusController(): iterable
8288 'controllerName ' => 'true-controller ' ,
8389 'controllerValues ' => ['isEnabled ' => true ],
8490 'controllerClasses ' => [],
91+ 'controllerOutlets ' => [],
8592 'expectedString ' => 'data-controller="true-controller" data-true-controller-is-enabled-value="true" ' ,
8693 'expectedArray ' => ['data-controller ' => 'true-controller ' , 'data-true-controller-is-enabled-value ' => 'true ' ],
8794 ];
@@ -90,6 +97,7 @@ public static function provideRenderStimulusController(): iterable
9097 'controllerName ' => 'null-controller ' ,
9198 'controllerValues ' => ['firstName ' => null ],
9299 'controllerClasses ' => [],
100+ 'controllerOutlets ' => [],
93101 'expectedString ' => 'data-controller="null-controller" ' ,
94102 'expectedArray ' => ['data-controller ' => 'null-controller ' ],
95103 ];
@@ -98,9 +106,19 @@ public static function provideRenderStimulusController(): iterable
98106 'controllerName ' => 'my-controller ' ,
99107 'controllerValues ' => [],
100108 'controllerClasses ' => ['loading ' => 'spinner ' ],
109+ 'controllerOutlets ' => [],
101110 'expectedString ' => 'data-controller="my-controller" data-my-controller-loading-class="spinner" ' ,
102111 'expectedArray ' => ['data-controller ' => 'my-controller ' , 'data-my-controller-loading-class ' => 'spinner ' ],
103112 ];
113+
114+ yield 'short-single-controller-no-data-with-outlet ' => [
115+ 'controllerName ' => 'my-controller ' ,
116+ 'controllerValues ' => [],
117+ 'controllerClasses ' => [],
118+ 'controllerOutlets ' => ['other-controller ' => '.target ' ],
119+ 'expectedString ' => 'data-controller="my-controller" data-my-controller-other-controller-outlet=".target" ' ,
120+ 'expectedArray ' => ['data-controller ' => 'my-controller ' , 'data-my-controller-other-controller-outlet ' => '.target ' ],
121+ ];
104122 }
105123
106124 public function testAppendStimulusController (): void
0 commit comments