StaticMethodLoaderTest.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Tests\Component\Validator\Mapping\Loader;
  11. use Symfony\Component\Validator\Mapping\ClassMetadata;
  12. use Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader;
  13. use Symfony\Component\Validator\Constraints\NotNull;
  14. class StaticMethodLoaderTest extends \PHPUnit_Framework_TestCase
  15. {
  16. public function testLoadClassMetadataReturnsTrueIfSuccessful()
  17. {
  18. $loader = new StaticMethodLoader('loadMetadata');
  19. $metadata = new ClassMetadata(__NAMESPACE__.'\StaticLoaderEntity');
  20. $this->assertTrue($loader->loadClassMetadata($metadata));
  21. }
  22. public function testLoadClassMetadataReturnsFalseIfNotSuccessful()
  23. {
  24. $loader = new StaticMethodLoader('loadMetadata');
  25. $metadata = new ClassMetadata('\stdClass');
  26. $this->assertFalse($loader->loadClassMetadata($metadata));
  27. }
  28. public function testLoadClassMetadata()
  29. {
  30. $loader = new StaticMethodLoader('loadMetadata');
  31. $metadata = new ClassMetadata(__NAMESPACE__.'\StaticLoaderEntity');
  32. $loader->loadClassMetadata($metadata);
  33. $this->assertEquals(StaticLoaderEntity::$invokedWith, $metadata);
  34. }
  35. public function testLoadClassMetadataDoesNotRepeatLoadWithParentClasses()
  36. {
  37. $loader = new StaticMethodLoader('loadMetadata');
  38. $metadata = new ClassMetadata(__NAMESPACE__.'\StaticLoaderDocument');
  39. $loader->loadClassMetadata($metadata);
  40. $this->assertSame(0, count($metadata->getConstraints()));
  41. $loader = new StaticMethodLoader('loadMetadata');
  42. $metadata = new ClassMetadata(__NAMESPACE__.'\BaseStaticLoaderDocument');
  43. $loader->loadClassMetadata($metadata);
  44. $this->assertSame(1, count($metadata->getConstraints()));
  45. }
  46. }
  47. class StaticLoaderEntity
  48. {
  49. static public $invokedWith = null;
  50. public static function loadMetadata(ClassMetadata $metadata)
  51. {
  52. self::$invokedWith = $metadata;
  53. }
  54. }
  55. class StaticLoaderDocument extends BaseStaticLoaderDocument
  56. {
  57. }
  58. class BaseStaticLoaderDocument
  59. {
  60. static public function loadMetadata(ClassMetadata $metadata)
  61. {
  62. $metadata->addConstraint(new NotNull());
  63. }
  64. }