FOSElasticaBundle/Tests/Doctrine/ORM/ListenerTest.php

168 lines
5.7 KiB
PHP
Raw Normal View History

2012-01-05 23:56:16 +01:00
<?php
namespace FOQ\ElasticaBundle\Tests\Doctrine\ORM;
use FOQ\ElasticaBundle\Doctrine\ORM\Listener;
class Entity{}
2012-01-05 23:56:16 +01:00
/**
* @author Richard Miller <info@limethinking.co.uk>
*/
class ListenerTest extends \PHPUnit_Framework_TestCase
{
public function setUp()
{
if (!class_exists('Doctrine\ORM\EntityManager')) {
$this->markTestSkipped('Doctrine ORM 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\ORM\Event\LifecycleEventArgs')
->disableOriginalConstructor()
->getMock();
$objectName = 'FOQ\ElasticaBundle\Tests\Doctrine\ORM\Entity';
$entity = new Entity;
$eventArgsMock->expects($this->once())
->method('getEntity')
->will($this->returnValue($entity));
$persisterMock->expects($this->once())
->method('insertOne')
->with($this->equalTo($entity));
$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\ORM\Event\LifecycleEventArgs')
->disableOriginalConstructor()
->getMock();
$objectName = 'FOQ\ElasticaBundle\Tests\Doctrine\ORM\Entity';
$entity = new Entity;
$eventArgsMock->expects($this->once())
->method('getEntity')
->will($this->returnValue($entity));
$persisterMock->expects($this->once())
->method('replaceOne')
->with($this->equalTo($entity));
$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\ORM\Event\LifecycleEventArgs')
->disableOriginalConstructor()
->getMock();
$entityManagerMock = $this->getMockBuilder('Doctrine\ORM\EntityManager')
->disableOriginalConstructor()
->getMock();
$metadataMock = $this->getMockBuilder('Doctrine\ORM\Mapping\ClassMetadata')
->disableOriginalConstructor()
->getMock();
2012-01-05 23:56:16 +01:00
$objectName = 'FOQ\ElasticaBundle\Tests\Doctrine\ORM\Entity';
$entity = new Entity;
$entityId = 21;
2012-01-05 23:56:16 +01:00
$eventArgsMock->expects($this->any())
2012-01-05 23:56:16 +01:00
->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));
2012-01-05 23:56:16 +01:00
$persisterMock->expects($this->once())
->method('deleteById')
->with($this->equalTo($entityId));
$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\ORM\Event\LifecycleEventArgs')
->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;
$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($entityIdentifier));
2012-01-05 23:56:16 +01:00
$listener = new Listener($persisterMock, $objectName, array(), $identifierField);
$listener->preRemove($eventArgsMock);
2012-01-05 23:56:16 +01:00
$listener->postRemove($eventArgsMock);
}
}