1
0
mirror of synced 2025-02-20 06:03:15 +03:00

move call listeners tests to AbstractMappingDriverTest

This commit is contained in:
Fabio B. Silva 2012-07-29 21:04:59 -03:00 committed by fabio.silva
parent 0f081d7c45
commit 3c223a59c4
2 changed files with 43 additions and 4 deletions

View File

@ -427,7 +427,9 @@ class AnnotationDriver extends AbstractAnnotationDriver
}
$listener = new \ReflectionClass($listener);
/* @var $method \ReflectionMethod */
foreach ($listener->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) {
// find method callbacks.
foreach ($this->getMethodCallbacks($method) as $value) {
$metadata->addEntityListener($value[1], $listener->name, $value[0]);
}

View File

@ -2,10 +2,14 @@
namespace Doctrine\Tests\ORM\Mapping;
use Doctrine\ORM\Mapping\ClassMetadata,
Doctrine\ORM\Mapping\ClassMetadataInfo,
Doctrine\ORM\Mapping\Driver\XmlDriver,
Doctrine\ORM\Mapping\Driver\YamlDriver;
use Doctrine\ORM\Events;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\Tests\Models\Company\CompanyFixContract;
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';
@ -748,6 +752,39 @@ abstract class AbstractMappingDriverTest extends \Doctrine\Tests\OrmTestCase
$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);
}
}
/**