#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::assertInstanceOf(EntityWithListenerPopulatedField::class, $object);
|
||||||
self::assertSame($object->generatedField, $entity->generatedField);
|
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