Tests for new provider and new transformer
This commit is contained in:
parent
5b6a1f7bd6
commit
d10e8f56c8
117
Tests/Persister/ObjectSerializerPersisterTest.php
Normal file
117
Tests/Persister/ObjectSerializerPersisterTest.php
Normal file
|
@ -0,0 +1,117 @@
|
|||
<?php
|
||||
|
||||
namespace FOS\ElasticaBundle\Tests\ObjectSerializerPersister;
|
||||
|
||||
use FOS\ElasticaBundle\Persister\ObjectPersister;
|
||||
use FOS\ElasticaBundle\Persister\ObjectSerializerPersister;
|
||||
use FOS\ElasticaBundle\Transformer\ModelToElasticaAutoTransformer;
|
||||
use FOS\ElasticaBundle\Transformer\ModelToElasticaIdentifierTransformer;
|
||||
use Symfony\Component\PropertyAccess\PropertyAccess;
|
||||
|
||||
class POPO
|
||||
{
|
||||
public $id = 123;
|
||||
public $name = 'popoName';
|
||||
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
}
|
||||
|
||||
class ObjectSerializerPersisterTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
public function setUp()
|
||||
{
|
||||
if (!class_exists('Elastica\Type')) {
|
||||
$this->markTestSkipped('The Elastica library classes are not available');
|
||||
}
|
||||
}
|
||||
|
||||
public function testThatCanReplaceObject()
|
||||
{
|
||||
$transformer = $this->getTransformer();
|
||||
|
||||
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
|
||||
$typeMock = $this->getMockBuilder('Elastica\Type')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$typeMock->expects($this->once())
|
||||
->method('deleteById')
|
||||
->with($this->equalTo(123));
|
||||
$typeMock->expects($this->once())
|
||||
->method('addObject');
|
||||
|
||||
$objectPersister = new ObjectSerializerPersister($typeMock, $transformer, 'SomeClass');
|
||||
$objectPersister->replaceOne(new POPO());
|
||||
}
|
||||
|
||||
public function testThatCanInsertObject()
|
||||
{
|
||||
$transformer = $this->getTransformer();
|
||||
|
||||
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
|
||||
$typeMock = $this->getMockBuilder('Elastica\Type')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$typeMock->expects($this->never())
|
||||
->method('deleteById');
|
||||
$typeMock->expects($this->once())
|
||||
->method('addObject');
|
||||
|
||||
$objectPersister = new ObjectSerializerPersister($typeMock, $transformer, 'SomeClass');
|
||||
$objectPersister->insertOne(new POPO());
|
||||
}
|
||||
|
||||
public function testThatCanDeleteObject()
|
||||
{
|
||||
$transformer = $this->getTransformer();
|
||||
|
||||
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
|
||||
$typeMock = $this->getMockBuilder('Elastica\Type')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$typeMock->expects($this->once())
|
||||
->method('deleteById');
|
||||
$typeMock->expects($this->never())
|
||||
->method('addObject');
|
||||
|
||||
$objectPersister = new ObjectSerializerPersister($typeMock, $transformer, 'SomeClass');
|
||||
$objectPersister->deleteOne(new POPO());
|
||||
}
|
||||
|
||||
public function testThatCanInsertManyObjects()
|
||||
{
|
||||
$transformer = $this->getTransformer();
|
||||
|
||||
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
|
||||
$typeMock = $this->getMockBuilder('Elastica\Type')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$typeMock->expects($this->never())
|
||||
->method('deleteById');
|
||||
$typeMock->expects($this->exactly(2))
|
||||
->method('addObject');
|
||||
$typeMock->expects($this->never())
|
||||
->method('addObjects');
|
||||
|
||||
$objectPersister = new ObjectSerializerPersister($typeMock, $transformer, 'SomeClass');
|
||||
$objectPersister->insertMany(array(new POPO(), new POPO()));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ModelToElasticaIdentifierTransformer
|
||||
*/
|
||||
private function getTransformer()
|
||||
{
|
||||
$transformer = new ModelToElasticaIdentifierTransformer();
|
||||
$transformer->setPropertyAccessor(PropertyAccess::getPropertyAccessor());
|
||||
|
||||
return $transformer;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
|
||||
namespace FOS\ElasticaBundle\Tests\Transformer\ModelToElasticaIdentifierTransformer;
|
||||
|
||||
use FOS\ElasticaBundle\Transformer\ModelToElasticaIdentifierTransformer;
|
||||
use Symfony\Component\PropertyAccess\PropertyAccess;
|
||||
|
||||
class POPO
|
||||
{
|
||||
protected $id = 123;
|
||||
protected $name = 'Name';
|
||||
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
}
|
||||
|
||||
class ModelToElasticaIdentifierTransformerTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
public function setUp()
|
||||
{
|
||||
if (!class_exists('Elastica\Document')) {
|
||||
;
|
||||
$this->markTestSkipped('The Elastica library classes are not available');
|
||||
}
|
||||
}
|
||||
|
||||
public function testGetDocumentWithIdentifierOnly()
|
||||
{
|
||||
$transformer = $this->getTransformer();
|
||||
$document = $transformer->transform(new POPO(), array());
|
||||
$data = $document->getData();
|
||||
|
||||
$this->assertInstanceOf('Elastica\Document', $document);
|
||||
$this->assertEquals(123, $document->getId());
|
||||
$this->assertCount(0, $data);
|
||||
}
|
||||
|
||||
public function testGetDocumentWithIdentifierOnlyWithFields()
|
||||
{
|
||||
$transformer = $this->getTransformer();
|
||||
$document = $transformer->transform(new POPO(), array('name' => array()));
|
||||
$data = $document->getData();
|
||||
|
||||
$this->assertInstanceOf('Elastica\Document', $document);
|
||||
$this->assertEquals(123, $document->getId());
|
||||
$this->assertCount(0, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ModelToElasticaIdentifierTransformer
|
||||
*/
|
||||
private function getTransformer()
|
||||
{
|
||||
$transformer = new ModelToElasticaIdentifierTransformer();
|
||||
$transformer->setPropertyAccessor(PropertyAccess::getPropertyAccessor());
|
||||
|
||||
return $transformer;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue