123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\Config\Tests\Definition\Builder;
- use PHPUnit\Framework\TestCase;
- use Symfony\Component\Config\Definition\Builder\TreeBuilder;
- use Symfony\Component\Config\Tests\Fixtures\Builder\NodeBuilder as CustomNodeBuilder;
- class TreeBuilderTest extends TestCase
- {
- public function testUsingACustomNodeBuilder()
- {
- $builder = new TreeBuilder();
- $root = $builder->root('custom', 'array', new CustomNodeBuilder());
- $nodeBuilder = $root->children();
- $this->assertInstanceOf('Symfony\Component\Config\Tests\Fixtures\Builder\NodeBuilder', $nodeBuilder);
- $nodeBuilder = $nodeBuilder->arrayNode('deeper')->children();
- $this->assertInstanceOf('Symfony\Component\Config\Tests\Fixtures\Builder\NodeBuilder', $nodeBuilder);
- }
- public function testOverrideABuiltInNodeType()
- {
- $builder = new TreeBuilder();
- $root = $builder->root('override', 'array', new CustomNodeBuilder());
- $definition = $root->children()->variableNode('variable');
- $this->assertInstanceOf('Symfony\Component\Config\Tests\Fixtures\Builder\VariableNodeDefinition', $definition);
- }
- public function testAddANodeType()
- {
- $builder = new TreeBuilder();
- $root = $builder->root('override', 'array', new CustomNodeBuilder());
- $definition = $root->children()->barNode('variable');
- $this->assertInstanceOf('Symfony\Component\Config\Tests\Fixtures\Builder\BarNodeDefinition', $definition);
- }
- public function testCreateABuiltInNodeTypeWithACustomNodeBuilder()
- {
- $builder = new TreeBuilder();
- $root = $builder->root('builtin', 'array', new CustomNodeBuilder());
- $definition = $root->children()->booleanNode('boolean');
- $this->assertInstanceOf('Symfony\Component\Config\Definition\Builder\BooleanNodeDefinition', $definition);
- }
- public function testPrototypedArrayNodeUseTheCustomNodeBuilder()
- {
- $builder = new TreeBuilder();
- $root = $builder->root('override', 'array', new CustomNodeBuilder());
- $root->prototype('bar')->end();
- $this->assertInstanceOf('Symfony\Component\Config\Tests\Fixtures\BarNode', $root->getNode(true)->getPrototype());
- }
- public function testAnExtendedNodeBuilderGetsPropagatedToTheChildren()
- {
- $builder = new TreeBuilder();
- $builder->root('propagation')
- ->children()
- ->setNodeClass('extended', 'Symfony\Component\Config\Definition\Builder\BooleanNodeDefinition')
- ->node('foo', 'extended')->end()
- ->arrayNode('child')
- ->children()
- ->node('foo', 'extended')
- ->end()
- ->end()
- ->end()
- ->end();
- $node = $builder->buildTree();
- $children = $node->getChildren();
- $this->assertInstanceOf('Symfony\Component\Config\Definition\BooleanNode', $children['foo']);
- $childChildren = $children['child']->getChildren();
- $this->assertInstanceOf('Symfony\Component\Config\Definition\BooleanNode', $childChildren['foo']);
- }
- public function testDefinitionInfoGetsTransferredToNode()
- {
- $builder = new TreeBuilder();
- $builder->root('test')->info('root info')
- ->children()
- ->node('child', 'variable')->info('child info')->defaultValue('default')
- ->end()
- ->end();
- $tree = $builder->buildTree();
- $children = $tree->getChildren();
- $this->assertEquals('root info', $tree->getInfo());
- $this->assertEquals('child info', $children['child']->getInfo());
- }
- public function testDefinitionExampleGetsTransferredToNode()
- {
- $builder = new TreeBuilder();
- $builder->root('test')
- ->example(array('key' => 'value'))
- ->children()
- ->node('child', 'variable')->info('child info')->defaultValue('default')->example('example')
- ->end()
- ->end();
- $tree = $builder->buildTree();
- $children = $tree->getChildren();
- $this->assertInternalType('array', $tree->getExample());
- $this->assertEquals('example', $children['child']->getExample());
- }
- }
|