2012-01-05 23:56:16 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace FOQ\ElasticaBundle\Tests\Doctrine\MongoDB;
|
|
|
|
|
|
|
|
use FOQ\ElasticaBundle\Doctrine\MongoDB\Listener;
|
|
|
|
|
2012-02-02 20:37:49 +01:00
|
|
|
class Document{}
|
2012-01-05 23:56:16 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @author Richard Miller <info@limethinking.co.uk>
|
|
|
|
*/
|
|
|
|
class ListenerTest extends \PHPUnit_Framework_TestCase
|
|
|
|
{
|
2012-03-02 05:30:07 +01:00
|
|
|
public function setUp()
|
|
|
|
{
|
|
|
|
if (!class_exists('Doctrine\ODM\MongoDB\DocumentManager')) {
|
|
|
|
$this->markTestSkipped('Doctrine MongoDB ODM is not available.');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-01-05 23:56:16 +01:00
|
|
|
public function testObjectInsertedOnPersist()
|
|
|
|
{
|
|
|
|
$persisterMock = $this->getMockBuilder('FOQ\ElasticaBundle\Persister\ObjectPersisterInterface')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
$eventArgsMock = $this->getMockBuilder('Doctrine\ODM\MongoDB\Event\LifecycleEventArgs')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
$objectName = 'FOQ\ElasticaBundle\Tests\Doctrine\MongoDB\Document';
|
|
|
|
$document = new Document();
|
|
|
|
|
|
|
|
$eventArgsMock->expects($this->once())
|
|
|
|
->method('getDocument')
|
|
|
|
->will($this->returnValue($document));
|
|
|
|
|
|
|
|
$persisterMock->expects($this->once())
|
|
|
|
->method('insertOne')
|
|
|
|
->with($this->equalTo($document));
|
|
|
|
|
2012-01-25 20:51:10 +01:00
|
|
|
$listener = new Listener($persisterMock, $objectName, array());
|
2012-01-05 23:56:16 +01:00
|
|
|
$listener->postPersist($eventArgsMock);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testObjectReplacedOnUpdate()
|
|
|
|
{
|
|
|
|
$persisterMock = $this->getMockBuilder('FOQ\ElasticaBundle\Persister\ObjectPersisterInterface')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
$eventArgsMock = $this->getMockBuilder('Doctrine\ODM\MongoDB\Event\LifecycleEventArgs')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
$objectName = 'FOQ\ElasticaBundle\Tests\Doctrine\MongoDB\Document';
|
|
|
|
$document = new Document();
|
|
|
|
|
|
|
|
$eventArgsMock->expects($this->once())
|
|
|
|
->method('getDocument')
|
|
|
|
->will($this->returnValue($document));
|
|
|
|
|
|
|
|
$persisterMock->expects($this->once())
|
|
|
|
->method('replaceOne')
|
|
|
|
->with($this->equalTo($document));
|
|
|
|
|
2012-01-25 20:51:10 +01:00
|
|
|
$listener = new Listener($persisterMock, $objectName, array());
|
2012-01-05 23:56:16 +01:00
|
|
|
$listener->postUpdate($eventArgsMock);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testObjectDeletedOnRemove()
|
|
|
|
{
|
|
|
|
$persisterMock = $this->getMockBuilder('FOQ\ElasticaBundle\Persister\ObjectPersisterInterface')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
$eventArgsMock = $this->getMockBuilder('Doctrine\ODM\MongoDB\Event\LifecycleEventArgs')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
|
2012-02-02 20:37:49 +01:00
|
|
|
$documentManagerMock = $this->getMockBuilder('Doctrine\ODM\MongoDB\DocumentManager')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
$metadataMock = $this->getMockBuilder('Doctrine\ODM\MongoDB\Mapping\ClassMetadata')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
|
2012-01-05 23:56:16 +01:00
|
|
|
$objectName = 'FOQ\ElasticaBundle\Tests\Doctrine\MongoDB\Document';
|
2012-02-02 20:37:49 +01:00
|
|
|
$document = new Document();
|
|
|
|
$documentId = 78;
|
2012-01-05 23:56:16 +01:00
|
|
|
|
2012-01-25 20:51:10 +01:00
|
|
|
$eventArgsMock->expects($this->any())
|
2012-01-05 23:56:16 +01:00
|
|
|
->method('getDocument')
|
|
|
|
->will($this->returnValue($document));
|
|
|
|
|
2012-02-02 20:37:49 +01:00
|
|
|
$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));
|
|
|
|
|
2012-01-05 23:56:16 +01:00
|
|
|
$persisterMock->expects($this->once())
|
2012-01-25 20:51:10 +01:00
|
|
|
->method('deleteById')
|
2012-02-02 20:37:49 +01:00
|
|
|
->with($this->equalTo($documentId));
|
2012-01-25 20:51:10 +01:00
|
|
|
|
|
|
|
$listener = new Listener($persisterMock, $objectName, array());
|
|
|
|
$listener->preRemove($eventArgsMock);
|
|
|
|
$listener->postRemove($eventArgsMock);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testObjectWithNonStandardIdentifierDeletedOnRemove()
|
|
|
|
{
|
|
|
|
$persisterMock = $this->getMockBuilder('FOQ\ElasticaBundle\Persister\ObjectPersisterInterface')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
$eventArgsMock = $this->getMockBuilder('Doctrine\ODM\MongoDB\Event\LifecycleEventArgs')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
|
2012-02-02 20:37:49 +01:00
|
|
|
$documentManagerMock = $this->getMockBuilder('Doctrine\ODM\MongoDB\DocumentManager')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
$metadataMock = $this->getMockBuilder('Doctrine\ODM\MongoDB\Mapping\ClassMetadata')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
|
2012-01-25 20:51:10 +01:00
|
|
|
$objectName = 'FOQ\ElasticaBundle\Tests\Doctrine\MongoDB\Document';
|
|
|
|
$document = new Document();
|
2012-02-02 20:37:49 +01:00
|
|
|
$documentIdentifier = 826;
|
|
|
|
$identifierField = 'identifier';
|
2012-01-25 20:51:10 +01:00
|
|
|
|
|
|
|
$eventArgsMock->expects($this->any())
|
|
|
|
->method('getDocument')
|
|
|
|
->will($this->returnValue($document));
|
|
|
|
|
2012-02-02 20:37:49 +01:00
|
|
|
$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));
|
|
|
|
|
2012-01-25 20:51:10 +01:00
|
|
|
$persisterMock->expects($this->once())
|
|
|
|
->method('deleteById')
|
2012-02-02 20:37:49 +01:00
|
|
|
->with($this->equalTo($documentIdentifier));
|
2012-01-05 23:56:16 +01:00
|
|
|
|
2012-01-25 20:51:10 +01:00
|
|
|
$listener = new Listener($persisterMock, $objectName, array(), 'identifier');
|
|
|
|
$listener->preRemove($eventArgsMock);
|
2012-01-05 23:56:16 +01:00
|
|
|
$listener->postRemove($eventArgsMock);
|
|
|
|
}
|
|
|
|
}
|