getMockBuilder(EntityManager::class) ->disableOriginalConstructor() ->getMock(); $subscriber = new TablePrefixSubscriber($prefix); $metaClass = new ClassMetadata($entityName); $metaClass->setPrimaryTable(['name' => $tableName]); $metaDataEvent = new LoadClassMetadataEventArgs($metaClass, $em); $this->assertSame($tableNameExpected, $metaDataEvent->getClassMetadata()->getTableName()); $subscriber->loadClassMetadata($metaDataEvent); $this->assertSame($finalTableName, $metaDataEvent->getClassMetadata()->getTableName()); $this->assertSame($finalTableNameQuoted, $metaDataEvent->getClassMetadata()->getQuotedTableName($platform)); } /** * @dataProvider dataForPrefix */ public function testSubscribedEvents($prefix, $entityName, $tableName, $tableNameExpected, $finalTableName, $finalTableNameQuoted, $platform) { $em = $this->getMockBuilder(EntityManager::class) ->disableOriginalConstructor() ->getMock(); $metaClass = new ClassMetadata($entityName); $metaClass->setPrimaryTable(['name' => $tableName]); $metaDataEvent = new LoadClassMetadataEventArgs($metaClass, $em); $subscriber = new TablePrefixSubscriber($prefix); $evm = new EventManager(); $evm->addEventSubscriber($subscriber); $evm->dispatchEvent('loadClassMetadata', $metaDataEvent); $this->assertSame($finalTableName, $metaDataEvent->getClassMetadata()->getTableName()); $this->assertSame($finalTableNameQuoted, $metaDataEvent->getClassMetadata()->getQuotedTableName($platform)); } public function testPrefixManyToMany() { $em = $this->getMockBuilder(EntityManager::class) ->disableOriginalConstructor() ->getMock(); $subscriber = new TablePrefixSubscriber('yo_'); $metaClass = new ClassMetadata('Wallabag\UserBundle\Entity\Entry'); $metaClass->setPrimaryTable(['name' => 'entry']); $metaClass->mapManyToMany([ 'fieldName' => 'tags', 'joinTable' => ['name' => null, 'schema' => null], 'targetEntity' => 'Tag', 'mappedBy' => null, 'inversedBy' => 'entries', 'cascade' => ['persist'], 'indexBy' => null, 'orphanRemoval' => false, 'fetch' => 2, ]); $metaDataEvent = new LoadClassMetadataEventArgs($metaClass, $em); $this->assertSame('entry', $metaDataEvent->getClassMetadata()->getTableName()); $subscriber->loadClassMetadata($metaDataEvent); $this->assertSame('yo_entry', $metaDataEvent->getClassMetadata()->getTableName()); $this->assertSame('yo_entry_tag', $metaDataEvent->getClassMetadata()->associationMappings['tags']['joinTable']['name']); $this->assertSame('yo_entry', $metaDataEvent->getClassMetadata()->getQuotedTableName(new MySQLPlatform())); } }