StaticMethodLoaderTest.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace Symfony\Tests\Component\Validator\Mapping\Loader;
  3. use Symfony\Component\Validator\Mapping\ClassMetadata;
  4. use Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader;
  5. use Symfony\Component\Validator\Constraints\NotNull;
  6. class StaticMethodLoaderTest extends \PHPUnit_Framework_TestCase
  7. {
  8. public function testLoadClassMetadataReturnsTrueIfSuccessful()
  9. {
  10. $loader = new StaticMethodLoader('loadMetadata');
  11. $metadata = new ClassMetadata(__NAMESPACE__.'\StaticLoaderEntity');
  12. $this->assertTrue($loader->loadClassMetadata($metadata));
  13. }
  14. public function testLoadClassMetadataReturnsFalseIfNotSuccessful()
  15. {
  16. $loader = new StaticMethodLoader('loadMetadata');
  17. $metadata = new ClassMetadata('\stdClass');
  18. $this->assertFalse($loader->loadClassMetadata($metadata));
  19. }
  20. public function testLoadClassMetadata()
  21. {
  22. $loader = new StaticMethodLoader('loadMetadata');
  23. $metadata = new ClassMetadata(__NAMESPACE__.'\StaticLoaderEntity');
  24. $loader->loadClassMetadata($metadata);
  25. $this->assertEquals(StaticLoaderEntity::$invokedWith, $metadata);
  26. }
  27. public function testLoadClassMetadataDoesNotRepeatLoadWithParentClasses()
  28. {
  29. $loader = new StaticMethodLoader('loadMetadata');
  30. $metadata = new ClassMetadata(__NAMESPACE__.'\StaticLoaderDocument');
  31. $loader->loadClassMetadata($metadata);
  32. $this->assertSame(0, count($metadata->getConstraints()));
  33. $loader = new StaticMethodLoader('loadMetadata');
  34. $metadata = new ClassMetadata(__NAMESPACE__.'\BaseStaticLoaderDocument');
  35. $loader->loadClassMetadata($metadata);
  36. $this->assertSame(1, count($metadata->getConstraints()));
  37. }
  38. }
  39. class StaticLoaderEntity
  40. {
  41. static public $invokedWith = null;
  42. public static function loadMetadata(ClassMetadata $metadata)
  43. {
  44. self::$invokedWith = $metadata;
  45. }
  46. }
  47. class StaticLoaderDocument extends BaseStaticLoaderDocument
  48. {
  49. }
  50. class BaseStaticLoaderDocument
  51. {
  52. static public function loadMetadata(ClassMetadata $metadata)
  53. {
  54. $metadata->addConstraint(new NotNull());
  55. }
  56. }