@@ -32,10 +32,10 @@ protected function setUp(): void
32
32
/**
33
33
* @dataProvider provideRenderStimulusController
34
34
*/
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
36
36
{
37
37
$ extension = new StimulusTwigExtension (new StimulusHelper ($ this ->twig ));
38
- $ dto = $ extension ->renderStimulusController ($ controllerName , $ controllerValues , $ controllerClasses );
38
+ $ dto = $ extension ->renderStimulusController ($ controllerName , $ controllerValues , $ controllerClasses, $ controllerOutlets );
39
39
$ this ->assertSame ($ expectedString , (string ) $ dto );
40
40
$ this ->assertSame ($ expectedArray , $ dto ->toArray ());
41
41
}
@@ -50,14 +50,18 @@ public static function provideRenderStimulusController(): iterable
50
50
'controllerClasses ' => [
51
51
'second"Key" ' => 'loading ' ,
52
52
],
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 ' ],
55
58
];
56
59
57
60
yield 'short-single-controller-no-data ' => [
58
61
'controllerName ' => 'my-controller ' ,
59
62
'controllerValues ' => [],
60
63
'controllerClasses ' => [],
64
+ 'controllerOutlets ' => [],
61
65
'expectedString ' => 'data-controller="my-controller" ' ,
62
66
'expectedArray ' => ['data-controller ' => 'my-controller ' ],
63
67
];
@@ -66,6 +70,7 @@ public static function provideRenderStimulusController(): iterable
66
70
'controllerName ' => 'my-controller ' ,
67
71
'controllerValues ' => ['myValue ' => 'scalar-value ' ],
68
72
'controllerClasses ' => [],
73
+ 'controllerOutlets ' => [],
69
74
'expectedString ' => 'data-controller="my-controller" data-my-controller-my-value-value="scalar-value" ' ,
70
75
'expectedArray ' => ['data-controller ' => 'my-controller ' , 'data-my-controller-my-value-value ' => 'scalar-value ' ],
71
76
];
@@ -74,6 +79,7 @@ public static function provideRenderStimulusController(): iterable
74
79
'controllerName ' => 'false-controller ' ,
75
80
'controllerValues ' => ['isEnabled ' => false ],
76
81
'controllerClasses ' => [],
82
+ 'controllerOutlets ' => [],
77
83
'expectedString ' => 'data-controller="false-controller" data-false-controller-is-enabled-value="false" ' ,
78
84
'expectedArray ' => ['data-controller ' => 'false-controller ' , 'data-false-controller-is-enabled-value ' => 'false ' ],
79
85
];
@@ -82,6 +88,7 @@ public static function provideRenderStimulusController(): iterable
82
88
'controllerName ' => 'true-controller ' ,
83
89
'controllerValues ' => ['isEnabled ' => true ],
84
90
'controllerClasses ' => [],
91
+ 'controllerOutlets ' => [],
85
92
'expectedString ' => 'data-controller="true-controller" data-true-controller-is-enabled-value="true" ' ,
86
93
'expectedArray ' => ['data-controller ' => 'true-controller ' , 'data-true-controller-is-enabled-value ' => 'true ' ],
87
94
];
@@ -90,6 +97,7 @@ public static function provideRenderStimulusController(): iterable
90
97
'controllerName ' => 'null-controller ' ,
91
98
'controllerValues ' => ['firstName ' => null ],
92
99
'controllerClasses ' => [],
100
+ 'controllerOutlets ' => [],
93
101
'expectedString ' => 'data-controller="null-controller" ' ,
94
102
'expectedArray ' => ['data-controller ' => 'null-controller ' ],
95
103
];
@@ -98,9 +106,19 @@ public static function provideRenderStimulusController(): iterable
98
106
'controllerName ' => 'my-controller ' ,
99
107
'controllerValues ' => [],
100
108
'controllerClasses ' => ['loading ' => 'spinner ' ],
109
+ 'controllerOutlets ' => [],
101
110
'expectedString ' => 'data-controller="my-controller" data-my-controller-loading-class="spinner" ' ,
102
111
'expectedArray ' => ['data-controller ' => 'my-controller ' , 'data-my-controller-loading-class ' => 'spinner ' ],
103
112
];
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
+ ];
104
122
}
105
123
106
124
public function testAppendStimulusController (): void
0 commit comments