ClassMetadataLoadEventTest.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace Doctrine\Tests\ORM\Mapping;
  3. use Doctrine\ORM\Mapping\ClassMetadata;
  4. use Doctrine\ORM\Events;
  5. require_once __DIR__ . '/../../TestInit.php';
  6. class ClassMetadataLoadEventTest extends \Doctrine\Tests\OrmTestCase
  7. {
  8. /**
  9. * @group DDC-1610
  10. */
  11. public function testEvent()
  12. {
  13. $em = $this->_getTestEntityManager();
  14. $metadataFactory = $em->getMetadataFactory();
  15. $evm = $em->getEventManager();
  16. $evm->addEventListener(Events::loadClassMetadata, $this);
  17. $classMetadata = $metadataFactory->getMetadataFor('Doctrine\Tests\ORM\Mapping\LoadEventTestEntity');
  18. $this->assertTrue($classMetadata->hasField('about'));
  19. $this->assertArrayHasKey('about', $classMetadata->reflFields);
  20. $this->assertInstanceOf('ReflectionProperty', $classMetadata->reflFields['about']);
  21. }
  22. public function loadClassMetadata(\Doctrine\ORM\Event\LoadClassMetadataEventArgs $eventArgs)
  23. {
  24. $classMetadata = $eventArgs->getClassMetadata();
  25. $field = array(
  26. 'fieldName' => 'about',
  27. 'type' => 'string',
  28. 'length' => 255
  29. );
  30. $classMetadata->mapField($field);
  31. }
  32. }
  33. /**
  34. * @Entity
  35. * @Table(name="load_event_test_entity")
  36. */
  37. class LoadEventTestEntity
  38. {
  39. /**
  40. * @Id @Column(type="integer")
  41. * @GeneratedValue(strategy="AUTO")
  42. */
  43. private $id;
  44. /**
  45. * @Column(type="string", length=255)
  46. */
  47. private $name;
  48. private $about;
  49. }