Completed
Push — master ( 4e4cd8...063296 )
by Maksim
16s
created

ObjectSerializerPersisterTest::testThatCanInsertManyObjects()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 23
c 0
b 0
f 0
rs 9.0856
cc 1
eloc 17
nc 1
nop 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A ObjectSerializerPersisterTest::getTransformer() 0 7 1
1
<?php
2
3
/*
4
 * This file is part of the FOSElasticaBundle package.
5
 *
6
 * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace FOS\ElasticaBundle\Tests\Persister;
13
14
use FOS\ElasticaBundle\Persister\ObjectSerializerPersister;
15
use FOS\ElasticaBundle\Transformer\ModelToElasticaIdentifierTransformer;
16
use FOS\ElasticaBundle\Tests\Mocks\ObjectSerializerPersisterPOPO as POPO;
17
use Symfony\Component\PropertyAccess\PropertyAccess;
18
19
class ObjectSerializerPersisterTest extends \PHPUnit_Framework_TestCase
20
{
21 View Code Duplication
    public function testThatCanReplaceObject()
22
    {
23
        $transformer = $this->getTransformer();
24
25
        /** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
26
        $typeMock = $this->getMockBuilder('Elastica\Type')
27
            ->disableOriginalConstructor()
28
            ->getMock();
29
        $typeMock->expects($this->once())
30
            ->method('updateDocuments');
31
32
        $serializerMock = $this->getMockBuilder('FOS\ElasticaBundle\Serializer\Callback')->getMock();
33
        $serializerMock->expects($this->once())->method('serialize');
34
35
        $objectPersister = new ObjectSerializerPersister($typeMock, $transformer, 'SomeClass', [$serializerMock, 'serialize']);
36
        $objectPersister->replaceOne(new POPO());
37
    }
38
39 View Code Duplication
    public function testThatCanInsertObject()
40
    {
41
        $transformer = $this->getTransformer();
42
43
        /** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
44
        $typeMock = $this->getMockBuilder('Elastica\Type')
45
            ->disableOriginalConstructor()
46
            ->getMock();
47
        $typeMock->expects($this->never())
48
            ->method('deleteById');
49
        $typeMock->expects($this->once())
50
            ->method('addDocuments');
51
52
        $serializerMock = $this->getMockBuilder('FOS\ElasticaBundle\Serializer\Callback')->getMock();
53
        $serializerMock->expects($this->once())->method('serialize');
54
55
        $objectPersister = new ObjectSerializerPersister($typeMock, $transformer, 'SomeClass', [$serializerMock, 'serialize']);
56
        $objectPersister->insertOne(new POPO());
57
    }
58
59 View Code Duplication
    public function testThatCanDeleteObject()
60
    {
61
        $transformer = $this->getTransformer();
62
63
        /** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
64
        $typeMock = $this->getMockBuilder('Elastica\Type')
65
            ->disableOriginalConstructor()
66
            ->getMock();
67
        $typeMock->expects($this->once())
68
            ->method('deleteDocuments');
69
        $typeMock->expects($this->never())
70
            ->method('addDocument');
71
72
        $serializerMock = $this->getMockBuilder('FOS\ElasticaBundle\Serializer\Callback')->getMock();
73
        $serializerMock->expects($this->once())->method('serialize');
74
75
        $objectPersister = new ObjectSerializerPersister($typeMock, $transformer, 'SomeClass', [$serializerMock, 'serialize']);
76
        $objectPersister->deleteOne(new POPO());
77
    }
78
79
    public function testThatCanInsertManyObjects()
80
    {
81
        $transformer = $this->getTransformer();
82
83
        /** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica\Type */
84
        $typeMock = $this->getMockBuilder('Elastica\Type')
85
            ->disableOriginalConstructor()
86
            ->getMock();
87
        $typeMock->expects($this->never())
88
            ->method('deleteById');
89
        $typeMock->expects($this->never())
90
            ->method('addObject');
91
        $typeMock->expects($this->never())
92
            ->method('addObjects');
93
        $typeMock->expects($this->once())
94
            ->method('addDocuments');
95
96
        $serializerMock = $this->getMockBuilder('FOS\ElasticaBundle\Serializer\Callback')->getMock();
97
        $serializerMock->expects($this->exactly(2))->method('serialize');
98
99
        $objectPersister = new ObjectSerializerPersister($typeMock, $transformer, 'SomeClass', [$serializerMock, 'serialize']);
100
        $objectPersister->insertMany([new POPO(), new POPO()]);
101
    }
102
103
    /**
104
     * @return ModelToElasticaIdentifierTransformer
105
     */
106
    private function getTransformer()
107
    {
108
        $transformer = new ModelToElasticaIdentifierTransformer();
109
        $transformer->setPropertyAccessor(PropertyAccess::createPropertyAccessor());
110
111
        return $transformer;
112
    }
113
}
114