#1515 cleaning up test case, since the PHPUnit 5.4+ API is much nicer
This commit is contained in:
parent
aba486ea2d
commit
067e01e0d7
@ -2,64 +2,59 @@
|
|||||||
|
|
||||||
namespace Doctrine\Tests\ORM\Functional\Ticket;
|
namespace Doctrine\Tests\ORM\Functional\Ticket;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Connection;
|
||||||
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
use Doctrine\Common\EventManager;
|
||||||
|
use Doctrine\DBAL\Driver\Statement;
|
||||||
|
use Doctrine\ORM\Query\ResultSetMapping;
|
||||||
|
use Doctrine\ORM\Internal\Hydration\AbstractHydrator;
|
||||||
|
use Doctrine\Tests\OrmFunctionalTestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group DDC-3146
|
* @group DDC-3146
|
||||||
* @author Emiel Nijpels <emiel@silverstreet.com>
|
* @author Emiel Nijpels <emiel@silverstreet.com>
|
||||||
*/
|
*/
|
||||||
class DDC3146Test extends \Doctrine\Tests\OrmFunctionalTestCase
|
class DDC3146Test extends OrmFunctionalTestCase
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Verify that the number of added events to the event listener from the abstract hydrator class is equal to the number of removed events
|
* Verify that the number of added events to the event listener from the abstract hydrator class is equal to the number of removed events
|
||||||
*/
|
*/
|
||||||
public function testEventListeners()
|
public function testEventListeners()
|
||||||
{
|
{
|
||||||
// Create mock connection to be returned from the entity manager interface
|
$mockConnection = $this->createMock(Connection::class);
|
||||||
$mockConnection = $this->getMockBuilder('Doctrine\DBAL\Connection')->disableOriginalConstructor()->getMock();
|
$mockEntityManagerInterface = $this->createMock(EntityManagerInterface::class);
|
||||||
$mockEntityManagerInterface = $this->getMockBuilder('Doctrine\ORM\EntityManagerInterface')->disableOriginalConstructor()->getMock();
|
$mockEventManager = $this->createMock(EventManager::class);
|
||||||
$mockEntityManagerInterface->expects($this->any())->method('getConnection')->will($this->returnValue($mockConnection));
|
$mockStatement = $this->createMock(Statement::class);
|
||||||
|
$mockResultMapping = $this->getMockBuilder(ResultSetMapping::class);
|
||||||
|
|
||||||
// Create mock event manager to be returned from the entity manager interface
|
$mockEntityManagerInterface->expects(self::any())->method('getEventManager')->willReturn($mockEventManager);
|
||||||
$mockEventManager = $this->getMockBuilder('Doctrine\Common\EventManager')->disableOriginalConstructor()->getMock();
|
$mockEntityManagerInterface->expects(self::any())->method('getConnection')->willReturn($mockConnection);
|
||||||
$mockEntityManagerInterface->expects($this->any())->method('getEventManager')->will($this->returnValue($mockEventManager));
|
$mockStatement->expects(self::once())->method('fetch')->willReturn(false);
|
||||||
|
|
||||||
// Create mock statement and result mapping
|
$mockAbstractHydrator = $this->getMockBuilder(AbstractHydrator::class)
|
||||||
$mockStatement = $this->getMockBuilder('Doctrine\DBAL\Driver\Statement')->disableOriginalConstructor()->getMock();
|
|
||||||
$mockStatement->expects($this->once())->method('fetch')->will($this->returnValue(false));
|
|
||||||
$mockResultMapping = $this->getMockBuilder('Doctrine\ORM\Query\ResultSetMapping')->disableOriginalConstructor()->getMock();
|
|
||||||
|
|
||||||
// Create mock abstract hydrator
|
|
||||||
$mockAbstractHydrator = $this->getMockBuilder('Doctrine\ORM\Internal\Hydration\AbstractHydrator')
|
|
||||||
->setConstructorArgs(array($mockEntityManagerInterface))
|
->setConstructorArgs(array($mockEntityManagerInterface))
|
||||||
->setMethods(array('hydrateAllData'))
|
->setMethods(['hydrateAllData'])
|
||||||
->getMock();
|
->getMock();
|
||||||
|
|
||||||
// Increase counter every time the event listener is added and decrease the counter every time the event listener is removed
|
// Increase counter every time the event listener is added and decrease the counter every time the event listener is removed
|
||||||
$eventCounter = 0;
|
$eventCounter = 0;
|
||||||
$mockEventManager->expects($this->any())
|
$mockEventManager->expects(self::atLeastOnce())
|
||||||
->method('addEventListener')
|
->method('addEventListener')
|
||||||
->will(
|
->willReturnCallback(function () use (&$eventCounter) {
|
||||||
$this->returnCallback(
|
$eventCounter++;
|
||||||
function () use (&$eventCounter) {
|
});
|
||||||
$eventCounter++;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
$mockEventManager->expects($this->any())
|
$mockEventManager->expects(self::atLeastOnce())
|
||||||
->method('removeEventListener')
|
->method('removeEventListener')
|
||||||
->will(
|
->willReturnCallback(function () use (&$eventCounter) {
|
||||||
$this->returnCallback(
|
$eventCounter--;
|
||||||
function () use (&$eventCounter) {
|
});
|
||||||
$eventCounter--;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Create iterable result
|
// Create iterable result
|
||||||
$iterableResult = $mockAbstractHydrator->iterate($mockStatement, $mockResultMapping, array());
|
$iterableResult = $mockAbstractHydrator->iterate($mockStatement, $mockResultMapping, array());
|
||||||
$iterableResult->next();
|
$iterableResult->next();
|
||||||
|
|
||||||
// Number of added events listeners should be equal or less than the number of removed events
|
// Number of added events listeners should be equal or less than the number of removed events
|
||||||
$this->assertLessThanOrEqual(0, $eventCounter, 'More events added to the event listener than removed; this can create a memory leak when references are not cleaned up');
|
self::assertSame(0, $eventCounter, 'More events added to the event listener than removed; this can create a memory leak when references are not cleaned up');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user