NodeBuilderTest.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /*
  3. * This file is part of the Symfony framework.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * This source file is subject to the MIT license that is bundled
  8. * with this source code in the file LICENSE.
  9. */
  10. namespace Symfony\Tests\Component\Config\Definition\Builder;
  11. use Symfony\Component\Config\Definition\Builder\NodeBuilder as BaseNodeBuilder;
  12. use Symfony\Component\Config\Definition\Builder\VariableNodeDefinition as BaseVariableNodeDefinition;
  13. class NodeBuilderTest extends \PHPUnit_Framework_TestCase
  14. {
  15. /**
  16. * @expectedException \RuntimeException
  17. */
  18. public function testThrowsAnExceptionWhenTryingToCreateANonRegisteredNodeType()
  19. {
  20. $builder = new BaseNodeBuilder();
  21. $builder->node('', 'foobar');
  22. }
  23. /**
  24. * @expectedException \RuntimeException
  25. */
  26. public function testThrowsAnExceptionWhenTheNodeClassIsNotFound()
  27. {
  28. $builder = new BaseNodeBuilder();
  29. $builder
  30. ->setNodeClass('noclasstype', '\\foo\\bar\\noclass')
  31. ->node('', 'noclasstype');
  32. }
  33. public function testAddingANewNodeType()
  34. {
  35. $class = __NAMESPACE__.'\\SomeNodeDefinition';
  36. $builder = new BaseNodeBuilder();
  37. $node = $builder
  38. ->setNodeClass('newtype', $class)
  39. ->node('', 'newtype');
  40. $this->assertEquals(get_class($node), $class);
  41. }
  42. public function testOverridingAnExistingNodeType()
  43. {
  44. $class = __NAMESPACE__.'\\SomeNodeDefinition';
  45. $builder = new BaseNodeBuilder();
  46. $node = $builder
  47. ->setNodeClass('variable', $class)
  48. ->node('', 'variable');
  49. $this->assertEquals(get_class($node), $class);
  50. }
  51. public function testNodeTypesAreNotCaseSensitive()
  52. {
  53. $builder = new BaseNodeBuilder();
  54. $node1 = $builder->node('', 'VaRiAbLe');
  55. $node2 = $builder->node('', 'variable');
  56. $this->assertEquals(get_class($node1), get_class($node2));
  57. $builder->setNodeClass('CuStOm', __NAMESPACE__.'\\SomeNodeDefinition');
  58. $node1 = $builder->node('', 'CUSTOM');
  59. $node2 = $builder->node('', 'custom');
  60. $this->assertEquals(get_class($node1), get_class($node2));
  61. }
  62. }
  63. class SomeNodeDefinition extends BaseVariableNodeDefinition
  64. {
  65. }