move call listeners tests to AbstractMappingDriverTest
This commit is contained in:
parent
0f081d7c45
commit
3c223a59c4
@ -427,7 +427,9 @@ class AnnotationDriver extends AbstractAnnotationDriver
|
|||||||
}
|
}
|
||||||
|
|
||||||
$listener = new \ReflectionClass($listener);
|
$listener = new \ReflectionClass($listener);
|
||||||
|
/* @var $method \ReflectionMethod */
|
||||||
foreach ($listener->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) {
|
foreach ($listener->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) {
|
||||||
|
// find method callbacks.
|
||||||
foreach ($this->getMethodCallbacks($method) as $value) {
|
foreach ($this->getMethodCallbacks($method) as $value) {
|
||||||
$metadata->addEntityListener($value[1], $listener->name, $value[0]);
|
$metadata->addEntityListener($value[1], $listener->name, $value[0]);
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,14 @@
|
|||||||
|
|
||||||
namespace Doctrine\Tests\ORM\Mapping;
|
namespace Doctrine\Tests\ORM\Mapping;
|
||||||
|
|
||||||
use Doctrine\ORM\Mapping\ClassMetadata,
|
use Doctrine\ORM\Events;
|
||||||
Doctrine\ORM\Mapping\ClassMetadataInfo,
|
use Doctrine\ORM\Event\LifecycleEventArgs;
|
||||||
Doctrine\ORM\Mapping\Driver\XmlDriver,
|
use Doctrine\Tests\Models\Company\CompanyFixContract;
|
||||||
Doctrine\ORM\Mapping\Driver\YamlDriver;
|
use Doctrine\Tests\Models\Company\CompanyFlexContract;
|
||||||
|
use Doctrine\Tests\Models\Company\ContractSubscriber;
|
||||||
|
|
||||||
|
use Doctrine\ORM\Mapping\ClassMetadata;
|
||||||
|
use Doctrine\ORM\Mapping\ClassMetadataInfo;
|
||||||
|
|
||||||
require_once __DIR__ . '/../../TestInit.php';
|
require_once __DIR__ . '/../../TestInit.php';
|
||||||
|
|
||||||
@ -748,6 +752,39 @@ abstract class AbstractMappingDriverTest extends \Doctrine\Tests\OrmTestCase
|
|||||||
$this->assertTrue($guestMetadata->fieldMappings['name']['unique']);
|
$this->assertTrue($guestMetadata->fieldMappings['name']['unique']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group DDC-1955
|
||||||
|
*/
|
||||||
|
public function testCallEntityListeners()
|
||||||
|
{
|
||||||
|
if ( ! ($this instanceof AnnotationDriverTest)) {
|
||||||
|
$this->markTestIncomplete();
|
||||||
|
}
|
||||||
|
|
||||||
|
$em = $this->_getTestEntityManager();
|
||||||
|
$factory = $this->createClassMetadataFactory($em);
|
||||||
|
$flexClass = $factory->getMetadataFor('Doctrine\Tests\Models\Company\CompanyFixContract');
|
||||||
|
$fixClass = $factory->getMetadataFor('Doctrine\Tests\Models\Company\CompanyFlexContract');
|
||||||
|
|
||||||
|
ContractSubscriber::$prePersistCalls = null;
|
||||||
|
ContractSubscriber::$postPersisCalls = null;
|
||||||
|
|
||||||
|
$fix = new CompanyFixContract();
|
||||||
|
$fixArg = new LifecycleEventArgs($fix, $em);
|
||||||
|
|
||||||
|
$flex = new CompanyFlexContract();
|
||||||
|
$flexArg = new LifecycleEventArgs($fix, $em);
|
||||||
|
|
||||||
|
$fixClass->dispatchEntityListeners(Events::prePersist, $fix, $fixArg);
|
||||||
|
$flexClass->dispatchEntityListeners(Events::prePersist, $flex, $flexArg);
|
||||||
|
|
||||||
|
$this->assertSame($fix, ContractSubscriber::$prePersistCalls[0][0]);
|
||||||
|
$this->assertSame($fixArg, ContractSubscriber::$prePersistCalls[0][1]);
|
||||||
|
|
||||||
|
$this->assertCount(1, ContractSubscriber::$instances);
|
||||||
|
$this->assertNull(ContractSubscriber::$postPersisCalls);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user