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

ObjectSerializerPersisterTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 95
Duplicated Lines 57.89 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 6
dl 55
loc 95
c 0
b 0
f 0
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testThatCanInsertObject() 19 19 1
A testThatCanDeleteObject() 19 19 1
A testThatCanInsertManyObjects() 0 23 1
A getTransformer() 0 7 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

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