1
0
mirror of synced 2025-02-09 00:39:25 +03:00

#6174 #5570 prePersist listeners should never be called when entities are merged, but are already in the UoW

This commit is contained in:
Marco Pivetta 2016-12-18 15:43:29 +01:00
parent 81186105b6
commit 8d4bc0638d

View File

@ -439,6 +439,39 @@ class UnitOfWorkTest extends \Doctrine\Tests\OrmTestCase
self::assertInstanceOf(EntityWithListenerPopulatedField::class, $object);
self::assertSame($object->generatedField, $entity->generatedField);
}
public function testMergeWithExistingEntityWillNotPersistItNorTriggerPrePersistListeners()
{
$persistedEntity = new EntityWithListenerPopulatedField();
$mergedEntity = new EntityWithListenerPopulatedField();
$mergedEntity->id = $persistedEntity->id;
$mergedEntity->generatedField = mt_rand(
$persistedEntity->generatedField + 1,
$persistedEntity->generatedField + 1000
);
$this
->eventManager
->expects(self::any())
->method('hasListeners')
->willReturnCallback(function ($eventName) {
return $eventName === Events::prePersist;
});
$this->eventManager->expects(self::never())->method('dispatchEvent');
$this->_unitOfWork->registerManaged(
$persistedEntity,
['id' => $persistedEntity->id],
['generatedField' => $persistedEntity->generatedField]
);
/* @var $merged EntityWithListenerPopulatedField */
$merged = $this->_unitOfWork->merge($mergedEntity);
self::assertSame($merged, $persistedEntity);
self::assertSame($persistedEntity->generatedField, $mergedEntity->generatedField);
}
}
/**