public function testAdapterBehavior() { $eventArgsMock = $this->getMockBuilder('Doctrine\\ORM\\Event\\LifecycleEventArgs')->disableOriginalConstructor()->getMock(); $eventArgsMock->expects($this->once())->method('getEntityManager'); $eventArgsMock->expects($this->once())->method('getEntity'); $eventAdapter = new EventAdapterORM(); $eventAdapter->setEventArgs($eventArgsMock); $eventAdapter->getObjectManager(); $eventAdapter->getObject(); }
/** * Overriden. Added support for ManyToMany association changes * * {@inheritDoc} */ public function getObjectChangeSet($uow, $object) { $changeSet = parent::getObjectChangeSet($uow, $object); $meta = $this->getObjectManager()->getClassMetadata(get_class($object)); $refl = $meta->getReflectionClass(); $updates = $uow->getScheduledCollectionUpdates(); $delitions = $uow->getScheduledCollectionDeletions(); foreach ($meta->getAssociationNames() as $name) { if ($meta->isSingleValuedAssociation($name)) { continue; } $property = $refl->getProperty($name); $property->setAccessible(true); $assoc = $property->getValue($object); if (in_array($assoc, $updates, true) || in_array($assoc, $delitions, true)) { $changeSet[$name] = [$assoc, $assoc]; } } return $changeSet; }
/** * {@inheritdoc} */ public function setEventArgs(EventArgs $args) { parent::setEventArgs($args); $this->ea->setEventArgs($args); }