* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Tests\Component\Validator\Mapping\Loader; require_once __DIR__.'/../../Fixtures/ConstraintA.php'; use Symfony\Component\Validator\Mapping\ClassMetadata; use Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader; use Symfony\Tests\Component\Validator\Fixtures\ConstraintA; class StaticMethodLoaderTest extends \PHPUnit_Framework_TestCase { public function testLoadClassMetadataReturnsTrueIfSuccessful() { $loader = new StaticMethodLoader('loadMetadata'); $metadata = new ClassMetadata(__NAMESPACE__.'\StaticLoaderEntity'); $this->assertTrue($loader->loadClassMetadata($metadata)); } public function testLoadClassMetadataReturnsFalseIfNotSuccessful() { $loader = new StaticMethodLoader('loadMetadata'); $metadata = new ClassMetadata('\stdClass'); $this->assertFalse($loader->loadClassMetadata($metadata)); } public function testLoadClassMetadata() { $loader = new StaticMethodLoader('loadMetadata'); $metadata = new ClassMetadata(__NAMESPACE__.'\StaticLoaderEntity'); $loader->loadClassMetadata($metadata); $this->assertEquals(StaticLoaderEntity::$invokedWith, $metadata); } public function testLoadClassMetadataDoesNotRepeatLoadWithParentClasses() { $loader = new StaticMethodLoader('loadMetadata'); $metadata = new ClassMetadata(__NAMESPACE__.'\StaticLoaderDocument'); $loader->loadClassMetadata($metadata); $this->assertSame(0, count($metadata->getConstraints())); $loader = new StaticMethodLoader('loadMetadata'); $metadata = new ClassMetadata(__NAMESPACE__.'\BaseStaticLoaderDocument'); $loader->loadClassMetadata($metadata); $this->assertSame(1, count($metadata->getConstraints())); } } class StaticLoaderEntity { static public $invokedWith = null; public static function loadMetadata(ClassMetadata $metadata) { self::$invokedWith = $metadata; } } class StaticLoaderDocument extends BaseStaticLoaderDocument { } class BaseStaticLoaderDocument { static public function loadMetadata(ClassMetadata $metadata) { $metadata->addConstraint(new ConstraintA()); } }