NodeBuilderTest.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace Symfony\Tests\Component\Config\Definition\Builder;
  3. use Symfony\Component\Config\Definition\Builder\NodeBuilder as BaseNodeBuilder;
  4. use Symfony\Component\Config\Definition\Builder\VariableNodeDefinition as BaseVariableNodeDefinition;
  5. class NodeBuilderTest extends \PHPUnit_Framework_TestCase
  6. {
  7. /**
  8. * @expectedException \RuntimeException
  9. */
  10. public function testThrowsAnExceptionWhenTryingToCreateANonRegisteredNodeType()
  11. {
  12. $builder = new BaseNodeBuilder();
  13. $builder->node('', 'foobar');
  14. }
  15. /**
  16. * @expectedException \RuntimeException
  17. */
  18. public function testThrowsAnExceptionWhenTheNodeClassIsNotFound()
  19. {
  20. $builder = new BaseNodeBuilder();
  21. $builder
  22. ->setNodeClass('noclasstype', '\\foo\\bar\\noclass')
  23. ->node('', 'noclasstype');
  24. }
  25. public function testAddingANewNodeType()
  26. {
  27. $class = __NAMESPACE__.'\\SomeNodeDefinition';
  28. $builder = new BaseNodeBuilder();
  29. $node = $builder
  30. ->setNodeClass('newtype', $class)
  31. ->node('', 'newtype');
  32. $this->assertEquals(get_class($node), $class);
  33. }
  34. public function testOverridingAnExistingNodeType()
  35. {
  36. $class = __NAMESPACE__.'\\SomeNodeDefinition';
  37. $builder = new BaseNodeBuilder();
  38. $node = $builder
  39. ->setNodeClass('variable', $class)
  40. ->node('', 'variable');
  41. $this->assertEquals(get_class($node), $class);
  42. }
  43. public function testNodeTypesAreNotCaseSensitive()
  44. {
  45. $builder = new BaseNodeBuilder();
  46. $node1 = $builder->node('', 'VaRiAbLe');
  47. $node2 = $builder->node('', 'variable');
  48. $this->assertEquals(get_class($node1), get_class($node2));
  49. $builder->setNodeClass('CuStOm', __NAMESPACE__.'\\SomeNodeDefinition');
  50. $node1 = $builder->node('', 'CUSTOM');
  51. $node2 = $builder->node('', 'custom');
  52. $this->assertEquals(get_class($node1), get_class($node2));
  53. }
  54. }
  55. class SomeNodeDefinition extends BaseVariableNodeDefinition
  56. {
  57. }