Skip to content

Commit

Permalink
#6174 #5570 prePersist listeners should never be called when entiti…
Browse files Browse the repository at this point in the history
…es are merged, but are already in the UoW
  • Loading branch information
Ocramius committed Dec 18, 2016
1 parent 8118610 commit 8d4bc06
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions tests/Doctrine/Tests/ORM/UnitOfWorkTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,39 @@ public function testMergeWithNewEntityWillPersistItAndTriggerPrePersistListeners
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);
}
}

/**
Expand Down

0 comments on commit 8d4bc06

Please sign in to comment.