public loadClassMetadata ( Doctrine\ORM\Event\LoadClassMetadataEventArgs $eventArgs ) | ||
$eventArgs | Doctrine\ORM\Event\LoadClassMetadataEventArgs |
public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
{
$metadata = $eventArgs->getClassMetadata();
if ($metadata->name !== $this->productClass) {
return;
}
$metadata->setDiscriminatorColumn(array('name' => 'product_type', 'type' => 'string', 'length' => 64));
$metadata->setInheritanceType(ClassMetadataInfo::INHERITANCE_TYPE_SINGLE_TABLE);
$metadata->setDiscriminatorMap($this->map);
}
public function testLoadClassMetadata() { $fakedMetadata = new \stdClass(); $fakedMetadata->name = 'IncorrectValue'; $subscriber = new ORMInheritanceSubscriber(array(), 'Application\\Sonata\\ProductBundle\\Entity\\Product'); $metadata = $this->getMockBuilder('Doctrine\\ORM\\Event\\LoadClassMetadataEventArgs')->disableOriginalConstructor()->getMock(); $metadata->expects($this->any())->method('getClassMetadata')->will($this->returnValue($fakedMetadata)); $this->assertNull($subscriber->loadClassMetadata($metadata)); unset($fakedMetadata); $classMetadata = $this->getMockBuilder('Doctrine\\ORM\\Mapping\\ClassMetadata')->disableOriginalConstructor()->getMock(); $classMetadata->name = 'Application\\Sonata\\ProductBundle\\Entity\\Product'; $metadata = $this->getMockBuilder('Doctrine\\ORM\\Event\\LoadClassMetadataEventArgs')->disableOriginalConstructor()->getMock(); $metadata->expects($this->any())->method('getClassMetadata')->will($this->returnValue($classMetadata)); try { $subscriber->loadClassMetadata($metadata); } catch (\Exception $e) { $this->fail('->loadClassMetadata() should not throw an exception when using Product entity'); } }