#6174 #5570 prePersist
listeners should never be called when entities are merged, but are already in the UoW
This commit is contained in:
parent
81186105b6
commit
8d4bc0638d
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user