Passed
Push — master ( 41bcdb...807f14 )
by Marco
13:18
created

AbstractHydratorTest   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 1
lcom 1
cbo 5
dl 0
loc 41
rs 10
c 1
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B testOnClearEventListenerIsDetachedOnCleanup() 0 31 1
1
<?php
2
3
namespace Doctrine\Tests\ORM\Functional\Ticket;
4
5
use Doctrine\DBAL\Connection;
6
use Doctrine\ORM\EntityManagerInterface;
7
use Doctrine\Common\EventManager;
8
use Doctrine\DBAL\Driver\Statement;
9
use Doctrine\ORM\Events;
10
use Doctrine\ORM\Query\ResultSetMapping;
11
use Doctrine\ORM\Internal\Hydration\AbstractHydrator;
12
use Doctrine\Tests\OrmFunctionalTestCase;
13
14
/**
15
 * @covers \Doctrine\ORM\Internal\Hydration\AbstractHydrator
16
 */
17
class AbstractHydratorTest extends OrmFunctionalTestCase
18
{
19
    /**
20
     * @group DDC-3146
21
     * @group #1515
22
     *
23
     * Verify that the number of added events to the event listener from the abstract hydrator class is equal to the
24
     * number of removed events
25
     */
26
    public function testOnClearEventListenerIsDetachedOnCleanup()
27
    {
28
        $mockConnection             = $this->createMock(Connection::class);
29
        $mockEntityManagerInterface = $this->createMock(EntityManagerInterface::class);
30
        $mockEventManager           = $this->createMock(EventManager::class);
31
        $mockStatement              = $this->createMock(Statement::class);
32
        $mockResultMapping          = $this->getMockBuilder(ResultSetMapping::class);
33
34
        $mockEntityManagerInterface->expects(self::any())->method('getEventManager')->willReturn($mockEventManager);
35
        $mockEntityManagerInterface->expects(self::any())->method('getConnection')->willReturn($mockConnection);
36
        $mockStatement->expects(self::once())->method('fetch')->willReturn(false);
37
38
        /* @var $mockAbstractHydrator AbstractHydrator */
39
        $mockAbstractHydrator = $this
40
            ->getMockBuilder(AbstractHydrator::class)
41
            ->setConstructorArgs([$mockEntityManagerInterface])
42
            ->setMethods(['hydrateAllData'])
43
            ->getMock();
44
45
        $mockEventManager
46
            ->expects(self::at(0))
47
            ->method('addEventListener')
48
            ->with([Events::onClear], $mockAbstractHydrator);
49
50
        $mockEventManager
51
            ->expects(self::at(1))
52
            ->method('removeEventListener')
53
            ->with([Events::onClear], $mockAbstractHydrator);
54
55
        iterator_to_array($mockAbstractHydrator->iterate($mockStatement, $mockResultMapping));
56
    }
57
}
58