2011-07-28 22:37:54 +02:00
|
|
|
<?php
|
|
|
|
|
2013-03-27 18:44:06 +01:00
|
|
|
namespace FOS\ElasticaBundle\Tests\ObjectPersister;
|
2011-07-28 22:37:54 +02:00
|
|
|
|
2013-03-27 18:44:06 +01:00
|
|
|
use FOS\ElasticaBundle\Persister\ObjectPersister;
|
|
|
|
use FOS\ElasticaBundle\Transformer\ModelToElasticaAutoTransformer;
|
2013-03-27 22:19:50 +01:00
|
|
|
use Symfony\Component\PropertyAccess\PropertyAccess;
|
2011-07-28 22:37:54 +02:00
|
|
|
|
2011-11-12 21:09:48 +01:00
|
|
|
class POPO
|
2011-07-28 22:37:54 +02:00
|
|
|
{
|
|
|
|
public $id = 123;
|
|
|
|
|
|
|
|
public function getId()
|
|
|
|
{
|
|
|
|
return $this->id;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getName()
|
|
|
|
{
|
|
|
|
return 'popoName';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class InvalidObjectPersister extends ObjectPersister
|
|
|
|
{
|
2012-06-13 18:22:13 +02:00
|
|
|
public function transformToElasticaDocument($object)
|
2011-07-28 22:37:54 +02:00
|
|
|
{
|
2011-12-20 17:46:36 +01:00
|
|
|
throw new \BadMethodCallException('Invalid transformation');
|
2011-07-28 22:37:54 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class ObjectPersisterTest extends \PHPUnit_Framework_TestCase
|
|
|
|
{
|
|
|
|
public function testThatCanReplaceObject()
|
|
|
|
{
|
2013-03-27 22:19:50 +01:00
|
|
|
$transformer = $this->getTransformer();
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-04-22 13:20:10 +02:00
|
|
|
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
|
|
|
|
$typeMock = $this->getMockBuilder('Elastica\Type')
|
2011-07-28 22:37:54 +02:00
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
$typeMock->expects($this->once())
|
2014-07-03 15:37:44 +02:00
|
|
|
->method('updateDocuments');
|
2011-07-28 22:37:54 +02:00
|
|
|
|
2012-04-19 22:26:19 +02:00
|
|
|
$fields = array('name' => array());
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-03-27 22:19:50 +01:00
|
|
|
$objectPersister = new ObjectPersister($typeMock, $transformer, 'SomeClass', $fields);
|
2011-07-28 22:37:54 +02:00
|
|
|
$objectPersister->replaceOne(new POPO());
|
|
|
|
}
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2011-07-28 22:37:54 +02:00
|
|
|
/**
|
2011-12-20 17:46:36 +01:00
|
|
|
* @expectedException \BadMethodCallException
|
2011-11-12 21:09:48 +01:00
|
|
|
*/
|
2011-07-28 22:37:54 +02:00
|
|
|
public function testThatErrorIsHandledWhenCannotReplaceObject()
|
|
|
|
{
|
2013-03-27 22:19:50 +01:00
|
|
|
$transformer = $this->getTransformer();
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-04-22 13:20:10 +02:00
|
|
|
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
|
|
|
|
$typeMock = $this->getMockBuilder('Elastica\Type')
|
2011-07-28 22:37:54 +02:00
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
$typeMock->expects($this->never())
|
|
|
|
->method('deleteById');
|
|
|
|
$typeMock->expects($this->never())
|
|
|
|
->method('addDocument');
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2012-04-19 22:26:19 +02:00
|
|
|
$fields = array('name' => array());
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-03-27 22:19:50 +01:00
|
|
|
$objectPersister = new InvalidObjectPersister($typeMock, $transformer, 'SomeClass', $fields);
|
2011-07-28 22:37:54 +02:00
|
|
|
$objectPersister->replaceOne(new POPO());
|
|
|
|
}
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2011-07-28 22:37:54 +02:00
|
|
|
public function testThatCanInsertObject()
|
|
|
|
{
|
2013-03-27 22:19:50 +01:00
|
|
|
$transformer = $this->getTransformer();
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-04-22 13:20:10 +02:00
|
|
|
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
|
|
|
|
$typeMock = $this->getMockBuilder('Elastica\Type')
|
2011-07-28 22:37:54 +02:00
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
$typeMock->expects($this->never())
|
|
|
|
->method('deleteById');
|
|
|
|
$typeMock->expects($this->once())
|
2014-07-03 15:37:44 +02:00
|
|
|
->method('addDocuments');
|
2011-07-28 22:37:54 +02:00
|
|
|
|
2012-04-19 22:26:19 +02:00
|
|
|
$fields = array('name' => array());
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-03-27 22:19:50 +01:00
|
|
|
$objectPersister = new ObjectPersister($typeMock, $transformer, 'SomeClass', $fields);
|
2011-07-28 22:37:54 +02:00
|
|
|
$objectPersister->insertOne(new POPO());
|
|
|
|
}
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2011-07-28 22:37:54 +02:00
|
|
|
/**
|
2011-12-20 17:46:36 +01:00
|
|
|
* @expectedException \BadMethodCallException
|
2011-11-12 21:09:48 +01:00
|
|
|
*/
|
2011-07-28 22:37:54 +02:00
|
|
|
public function testThatErrorIsHandledWhenCannotInsertObject()
|
|
|
|
{
|
2013-03-27 22:19:50 +01:00
|
|
|
$transformer = $this->getTransformer();
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-04-22 13:20:10 +02:00
|
|
|
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
|
|
|
|
$typeMock = $this->getMockBuilder('Elastica\Type')
|
2011-07-28 22:37:54 +02:00
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
$typeMock->expects($this->never())
|
|
|
|
->method('deleteById');
|
|
|
|
$typeMock->expects($this->never())
|
|
|
|
->method('addDocument');
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2012-04-19 22:26:19 +02:00
|
|
|
$fields = array('name' => array());
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-03-27 22:19:50 +01:00
|
|
|
$objectPersister = new InvalidObjectPersister($typeMock, $transformer, 'SomeClass', $fields);
|
2011-07-28 22:37:54 +02:00
|
|
|
$objectPersister->insertOne(new POPO());
|
|
|
|
}
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2011-07-28 22:37:54 +02:00
|
|
|
public function testThatCanDeleteObject()
|
|
|
|
{
|
2013-03-27 22:19:50 +01:00
|
|
|
$transformer = $this->getTransformer();
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-04-22 13:20:10 +02:00
|
|
|
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
|
|
|
|
$typeMock = $this->getMockBuilder('Elastica\Type')
|
2011-07-28 22:37:54 +02:00
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
$typeMock->expects($this->once())
|
2014-07-03 15:37:44 +02:00
|
|
|
->method('deleteDocuments');
|
2011-07-28 22:37:54 +02:00
|
|
|
$typeMock->expects($this->never())
|
|
|
|
->method('addDocument');
|
|
|
|
|
2012-04-19 22:26:19 +02:00
|
|
|
$fields = array('name' => array());
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-03-27 22:19:50 +01:00
|
|
|
$objectPersister = new ObjectPersister($typeMock, $transformer, 'SomeClass', $fields);
|
2011-07-28 22:37:54 +02:00
|
|
|
$objectPersister->deleteOne(new POPO());
|
|
|
|
}
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2011-07-28 22:37:54 +02:00
|
|
|
/**
|
2011-12-20 17:46:36 +01:00
|
|
|
* @expectedException \BadMethodCallException
|
2011-11-12 21:09:48 +01:00
|
|
|
*/
|
2011-07-28 22:37:54 +02:00
|
|
|
public function testThatErrorIsHandledWhenCannotDeleteObject()
|
|
|
|
{
|
2013-03-27 22:19:50 +01:00
|
|
|
$transformer = $this->getTransformer();
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-04-22 13:20:10 +02:00
|
|
|
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
|
|
|
|
$typeMock = $this->getMockBuilder('Elastica\Type')
|
2011-07-28 22:37:54 +02:00
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
$typeMock->expects($this->never())
|
|
|
|
->method('deleteById');
|
|
|
|
$typeMock->expects($this->never())
|
|
|
|
->method('addDocument');
|
|
|
|
|
2012-04-19 22:26:19 +02:00
|
|
|
$fields = array('name' => array());
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-03-27 22:19:50 +01:00
|
|
|
$objectPersister = new InvalidObjectPersister($typeMock, $transformer, 'SomeClass', $fields);
|
2011-07-28 22:37:54 +02:00
|
|
|
$objectPersister->deleteOne(new POPO());
|
|
|
|
}
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2011-07-28 22:37:54 +02:00
|
|
|
public function testThatCanInsertManyObjects()
|
|
|
|
{
|
2013-03-27 22:19:50 +01:00
|
|
|
$transformer = $this->getTransformer();
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-04-22 13:20:10 +02:00
|
|
|
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
|
|
|
|
$typeMock = $this->getMockBuilder('Elastica\Type')
|
2011-07-28 22:37:54 +02:00
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
$typeMock->expects($this->never())
|
|
|
|
->method('deleteById');
|
|
|
|
$typeMock->expects($this->never())
|
|
|
|
->method('addDocument');
|
|
|
|
$typeMock->expects($this->once())
|
|
|
|
->method('addDocuments');
|
|
|
|
|
2012-04-19 22:26:19 +02:00
|
|
|
$fields = array('name' => array());
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-03-27 22:19:50 +01:00
|
|
|
$objectPersister = new ObjectPersister($typeMock, $transformer, 'SomeClass', $fields);
|
2011-07-28 22:37:54 +02:00
|
|
|
$objectPersister->insertMany(array(new POPO(), new POPO()));
|
|
|
|
}
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2011-07-28 22:37:54 +02:00
|
|
|
/**
|
2011-12-20 17:46:36 +01:00
|
|
|
* @expectedException \BadMethodCallException
|
2011-11-12 21:09:48 +01:00
|
|
|
*/
|
2011-07-28 22:37:54 +02:00
|
|
|
public function testThatErrorIsHandledWhenCannotInsertManyObject()
|
|
|
|
{
|
2013-03-27 22:19:50 +01:00
|
|
|
$transformer = $this->getTransformer();
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-04-22 13:20:10 +02:00
|
|
|
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
|
|
|
|
$typeMock = $this->getMockBuilder('Elastica\Type')
|
2011-07-28 22:37:54 +02:00
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
$typeMock->expects($this->never())
|
|
|
|
->method('deleteById');
|
|
|
|
$typeMock->expects($this->never())
|
|
|
|
->method('addDocument');
|
|
|
|
$typeMock->expects($this->never())
|
|
|
|
->method('addDocuments');
|
|
|
|
|
2012-04-19 22:26:19 +02:00
|
|
|
$fields = array('name' => array());
|
2011-11-12 21:09:48 +01:00
|
|
|
|
2013-03-27 22:19:50 +01:00
|
|
|
$objectPersister = new InvalidObjectPersister($typeMock, $transformer, 'SomeClass', $fields);
|
2011-07-28 22:37:54 +02:00
|
|
|
$objectPersister->insertMany(array(new POPO(), new POPO()));
|
|
|
|
}
|
2013-03-27 22:19:50 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @return ModelToElasticaAutoTransformer
|
|
|
|
*/
|
|
|
|
private function getTransformer()
|
|
|
|
{
|
|
|
|
$transformer = new ModelToElasticaAutoTransformer();
|
2013-04-04 15:44:42 +02:00
|
|
|
$transformer->setPropertyAccessor(PropertyAccess::getPropertyAccessor());
|
2013-03-27 22:19:50 +01:00
|
|
|
|
|
|
|
return $transformer;
|
|
|
|
}
|
2011-07-28 22:37:54 +02:00
|
|
|
}
|