Updated identifier field fetching in listener
This commit is contained in:
parent
1d2887a83b
commit
81bd07a90b
|
@ -51,10 +51,11 @@ abstract class AbstractListener
|
|||
return $this->events;
|
||||
}
|
||||
|
||||
protected function scheduleForRemoval($object)
|
||||
protected function scheduleForRemoval($object, $objectManager)
|
||||
{
|
||||
$getEsIdentifierMethod = 'get' . ucfirst($this->esIdentifierField);
|
||||
$this->scheduledForRemoval[spl_object_hash($object)] = $object->$getEsIdentifierMethod();
|
||||
$metadata = $objectManager->getClassMetadata($this->objectClass);
|
||||
$esId = $metadata->getFieldValue($object, $this->esIdentifierField);
|
||||
$this->scheduledForRemoval[spl_object_hash($object)] = $esId;
|
||||
}
|
||||
|
||||
protected function removeIfScheduled($object)
|
||||
|
|
|
@ -31,7 +31,7 @@ class Listener extends AbstractListener implements EventSubscriber
|
|||
$document = $eventArgs->getDocument();
|
||||
|
||||
if ($document instanceof $this->objectClass) {
|
||||
$this->scheduleForRemoval($document);
|
||||
$this->scheduleForRemoval($document, $eventArgs->getDocumentManager());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ class Listener extends AbstractListener implements EventSubscriber
|
|||
$entity = $eventArgs->getEntity();
|
||||
|
||||
if ($entity instanceof $this->objectClass) {
|
||||
$this->scheduleForRemoval($entity);
|
||||
$this->scheduleForRemoval($entity, $eventArgs->getEntityManager());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,27 +4,13 @@ namespace FOQ\ElasticaBundle\Tests\Doctrine\MongoDB;
|
|||
|
||||
use FOQ\ElasticaBundle\Doctrine\MongoDB\Listener;
|
||||
|
||||
class Document
|
||||
{
|
||||
public function getId()
|
||||
{
|
||||
return ListenerTest::DOCUMENT_ID;
|
||||
}
|
||||
|
||||
public function getIdentifier()
|
||||
{
|
||||
return ListenerTest::DOCUMENT_IDENTIFIER;
|
||||
}
|
||||
}
|
||||
class Document{}
|
||||
|
||||
/**
|
||||
* @author Richard Miller <info@limethinking.co.uk>
|
||||
*/
|
||||
class ListenerTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
const DOCUMENT_ID = 78;
|
||||
const DOCUMENT_IDENTIFIER = 826;
|
||||
|
||||
public function testObjectInsertedOnPersist()
|
||||
{
|
||||
$persisterMock = $this->getMockBuilder('FOQ\ElasticaBundle\Persister\ObjectPersisterInterface')
|
||||
|
@ -85,16 +71,38 @@ class ListenerTest extends \PHPUnit_Framework_TestCase
|
|||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$documentManagerMock = $this->getMockBuilder('Doctrine\ODM\MongoDB\DocumentManager')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$metadataMock = $this->getMockBuilder('Doctrine\ODM\MongoDB\Mapping\ClassMetadata')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$objectName = 'FOQ\ElasticaBundle\Tests\Doctrine\MongoDB\Document';
|
||||
$document = new Document();
|
||||
$document = new Document();
|
||||
$documentId = 78;
|
||||
|
||||
$eventArgsMock->expects($this->any())
|
||||
->method('getDocument')
|
||||
->will($this->returnValue($document));
|
||||
|
||||
$eventArgsMock->expects($this->any())
|
||||
->method('getDocumentManager')
|
||||
->will($this->returnValue($documentManagerMock));
|
||||
|
||||
$documentManagerMock->expects($this->any())
|
||||
->method('getClassMetadata')
|
||||
->will($this->returnValue($metadataMock));
|
||||
|
||||
$metadataMock->expects($this->any())
|
||||
->method('getFieldValue')
|
||||
->with($this->equalTo($document), $this->equalTo('id'))
|
||||
->will($this->returnValue($documentId));
|
||||
|
||||
$persisterMock->expects($this->once())
|
||||
->method('deleteById')
|
||||
->with($this->equalTo(self::DOCUMENT_ID));
|
||||
->with($this->equalTo($documentId));
|
||||
|
||||
$listener = new Listener($persisterMock, $objectName, array());
|
||||
$listener->preRemove($eventArgsMock);
|
||||
|
@ -111,16 +119,39 @@ class ListenerTest extends \PHPUnit_Framework_TestCase
|
|||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$documentManagerMock = $this->getMockBuilder('Doctrine\ODM\MongoDB\DocumentManager')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$metadataMock = $this->getMockBuilder('Doctrine\ODM\MongoDB\Mapping\ClassMetadata')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$objectName = 'FOQ\ElasticaBundle\Tests\Doctrine\MongoDB\Document';
|
||||
$document = new Document();
|
||||
$documentIdentifier = 826;
|
||||
$identifierField = 'identifier';
|
||||
|
||||
$eventArgsMock->expects($this->any())
|
||||
->method('getDocument')
|
||||
->will($this->returnValue($document));
|
||||
|
||||
$eventArgsMock->expects($this->any())
|
||||
->method('getDocumentManager')
|
||||
->will($this->returnValue($documentManagerMock));
|
||||
|
||||
$documentManagerMock->expects($this->any())
|
||||
->method('getClassMetadata')
|
||||
->will($this->returnValue($metadataMock));
|
||||
|
||||
$metadataMock->expects($this->any())
|
||||
->method('getFieldValue')
|
||||
->with($this->equalTo($document), $this->equalTo($identifierField))
|
||||
->will($this->returnValue($documentIdentifier));
|
||||
|
||||
$persisterMock->expects($this->once())
|
||||
->method('deleteById')
|
||||
->with($this->equalTo(self::DOCUMENT_IDENTIFIER));
|
||||
->with($this->equalTo($documentIdentifier));
|
||||
|
||||
$listener = new Listener($persisterMock, $objectName, array(), 'identifier');
|
||||
$listener->preRemove($eventArgsMock);
|
||||
|
|
|
@ -4,27 +4,13 @@ namespace FOQ\ElasticaBundle\Tests\Doctrine\ORM;
|
|||
|
||||
use FOQ\ElasticaBundle\Doctrine\ORM\Listener;
|
||||
|
||||
class Entity
|
||||
{
|
||||
public function getId()
|
||||
{
|
||||
return ListenerTest::ENTITY_ID;
|
||||
}
|
||||
|
||||
public function getIdentifier()
|
||||
{
|
||||
return ListenerTest::ENTITY_IDENTIFIER;
|
||||
}
|
||||
}
|
||||
class Entity{}
|
||||
|
||||
/**
|
||||
* @author Richard Miller <info@limethinking.co.uk>
|
||||
*/
|
||||
class ListenerTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
const ENTITY_ID = 21;
|
||||
const ENTITY_IDENTIFIER = 912;
|
||||
|
||||
public function testObjectInsertedOnPersist()
|
||||
{
|
||||
$persisterMock = $this->getMockBuilder('FOQ\ElasticaBundle\Persister\ObjectPersisterInterface')
|
||||
|
@ -85,16 +71,38 @@ class ListenerTest extends \PHPUnit_Framework_TestCase
|
|||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$entityManagerMock = $this->getMockBuilder('Doctrine\ORM\EntityManager')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$metadataMock = $this->getMockBuilder('Doctrine\ORM\Mapping\ClassMetadata')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$objectName = 'FOQ\ElasticaBundle\Tests\Doctrine\ORM\Entity';
|
||||
$entity = new Entity;
|
||||
$entityId = 21;
|
||||
|
||||
$eventArgsMock->expects($this->any())
|
||||
->method('getEntity')
|
||||
->will($this->returnValue($entity));
|
||||
|
||||
$eventArgsMock->expects($this->any())
|
||||
->method('getEntityManager')
|
||||
->will($this->returnValue($entityManagerMock));
|
||||
|
||||
$entityManagerMock->expects($this->any())
|
||||
->method('getClassMetadata')
|
||||
->will($this->returnValue($metadataMock));
|
||||
|
||||
$metadataMock->expects($this->any())
|
||||
->method('getFieldValue')
|
||||
->with($this->equalTo($entity), $this->equalTo('id'))
|
||||
->will($this->returnValue($entityId));
|
||||
|
||||
$persisterMock->expects($this->once())
|
||||
->method('deleteById')
|
||||
->with($this->equalTo(self::ENTITY_ID));
|
||||
->with($this->equalTo($entityId));
|
||||
|
||||
$listener = new Listener($persisterMock, $objectName, array());
|
||||
$listener->preRemove($eventArgsMock);
|
||||
|
@ -111,18 +119,41 @@ class ListenerTest extends \PHPUnit_Framework_TestCase
|
|||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$objectName = 'FOQ\ElasticaBundle\Tests\Doctrine\ORM\Entity';
|
||||
$entity = new Entity;
|
||||
$entityManagerMock = $this->getMockBuilder('Doctrine\ORM\EntityManager')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$metadataMock = $this->getMockBuilder('Doctrine\ORM\Mapping\ClassMetadata')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$objectName = 'FOQ\ElasticaBundle\Tests\Doctrine\ORM\Entity';
|
||||
$entity = new Entity;
|
||||
$entityIdentifier = 924;
|
||||
$identifierField = 'identifier';
|
||||
|
||||
$eventArgsMock->expects($this->any())
|
||||
->method('getEntity')
|
||||
->will($this->returnValue($entity));
|
||||
|
||||
$eventArgsMock->expects($this->any())
|
||||
->method('getEntityManager')
|
||||
->will($this->returnValue($entityManagerMock));
|
||||
|
||||
$entityManagerMock->expects($this->any())
|
||||
->method('getClassMetadata')
|
||||
->will($this->returnValue($metadataMock));
|
||||
|
||||
$metadataMock->expects($this->any())
|
||||
->method('getFieldValue')
|
||||
->with($this->equalTo($entity), $this->equalTo($identifierField))
|
||||
->will($this->returnValue($entityIdentifier));
|
||||
|
||||
$persisterMock->expects($this->once())
|
||||
->method('deleteById')
|
||||
->with($this->equalTo(self::ENTITY_IDENTIFIER));
|
||||
->with($this->equalTo($entityIdentifier));
|
||||
|
||||
$listener = new Listener($persisterMock, $objectName, array(), 'identifier');
|
||||
$listener = new Listener($persisterMock, $objectName, array(), $identifierField);
|
||||
$listener->preRemove($eventArgsMock);
|
||||
$listener->postRemove($eventArgsMock);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue