44
55use Iterator ;
66use PHPStan \Type \Symfony \ExtensionTestCase ;
7- use Symfony \Component \Config \Definition \Builder \TreeBuilder ;
87
98final class TreeBuilderTest extends ExtensionTestCase
109{
@@ -14,20 +13,6 @@ final class TreeBuilderTest extends ExtensionTestCase
1413 */
1514 public function testGet (string $ expression , string $ type ): void
1615 {
17- $ arrayTreeBuilder = new TreeBuilder ('my_tree ' , 'array ' );
18- $ arrayRootNode = $ arrayTreeBuilder ->getRootNode ();
19- $ r = $ arrayRootNode
20- ->children ()
21- ->arrayNode ('methods ' )
22- ->prototype ('scalar ' )
23- ->validate ()
24- ->ifNotInArray (['one ' , 'two ' ])
25- ->thenInvalid ('%s is not a valid method. ' )
26- ->end ()
27- ->end ()
28- ->end ()
29- ->end ();
30-
3116 $ this ->processFile (
3217 __DIR__ . '/tree_builder.php ' ,
3318 $ expression ,
@@ -38,7 +23,7 @@ public function testGet(string $expression, string $type): void
3823 new ReturnParentDynamicReturnTypeExtension ('Symfony\Component\Config\Definition\Builder\NodeBuilder ' , ['end ' ]),
3924 new ReturnParentDynamicReturnTypeExtension ('Symfony\Component\Config\Definition\Builder\NodeDefinition ' , ['end ' ]),
4025 new PassParentObjectDynamicReturnTypeExtension ('Symfony\Component\Config\Definition\Builder\NodeBuilder ' , ['arrayNode ' , 'scalarNode ' , 'booleanNode ' , 'integerNode ' , 'floatNode ' , 'enumNode ' , 'variableNode ' ]),
41- new PassParentObjectDynamicReturnTypeExtension ('Symfony\Component\Config\Definition\Builder\NodeDefinition ' , ['children ' , 'validate ' ]),
26+ new PassParentObjectDynamicReturnTypeExtension ('Symfony\Component\Config\Definition\Builder\NodeDefinition ' , ['children ' , 'validate ' , ' beforeNormalization ' ]),
4227 new TreeBuilderGetRootNodeDynamicReturnTypeExtension (),
4328 ],
4429 [new TreeBuilderDynamicReturnTypeExtension ()]
@@ -153,35 +138,50 @@ public function getProvider(): Iterator
153138 yield ['
154139 $arrayRootNode
155140 ->children()
156- ->arrayNode("methods")
157- ->prototype("scalar")
158- ->defaultNull()
159- ->end()
160- ->end()
161- ->end()
141+ ->arrayNode("methods")
142+ ->prototype("scalar")
143+ ->defaultNull()
144+ ->end()
145+ ->end()
146+ ->end()
162147 ' , 'Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition ' ];
163148 yield ['
164149 $arrayRootNode
165150 ->children()
166- ->arrayNode("methods")
167- ->scalarPrototype()
168- ->defaultNull()
169- ->end()
170- ->end()
171- ->end()
151+ ->arrayNode("methods")
152+ ->scalarPrototype()
153+ ->defaultNull()
154+ ->end()
155+ ->end()
156+ ->end()
172157 ' , 'Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition ' ];
173158 yield ['
174159 $arrayRootNode
175160 ->children()
176- ->arrayNode("methods")
177- ->prototype("scalar")
178- ->validate()
179- ->ifNotInArray(["one", "two"])
180- ->thenInvalid("%s is not a valid method.")
181- ->end()
182- ->end()
183- ->end()
184- ->end()
161+ ->arrayNode("methods")
162+ ->prototype("scalar")
163+ ->validate()
164+ ->ifNotInArray(["one", "two"])
165+ ->thenInvalid("%s is not a valid method.")
166+ ->end()
167+ ->end()
168+ ->end()
169+ ->end()
170+ ' , 'Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition ' ];
171+ yield ['
172+ $arrayRootNode
173+ ->children()
174+ ->arrayNode("methods")
175+ ->prototype("array")
176+ ->beforeNormalization()
177+ ->ifString()
178+ ->then(static function ($v) {
179+ return [$v];
180+ })
181+ ->end()
182+ ->end()
183+ ->end()
184+ ->end()
185185 ' , 'Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition ' ];
186186
187187 yield ['$variableRootNode ' , 'Symfony\Component\Config\Definition\Builder\VariableNodeDefinition ' ];
0 commit comments