1
0
mirror of synced 2025-02-03 22:09:26 +03:00
doctrine2/tests/Doctrine/Tests/ORM/Mapping/QuoteStrategyTest.php

221 lines
6.9 KiB
PHP
Raw Normal View History

2012-05-10 21:18:09 -03:00
<?php
namespace Doctrine\Tests\ORM\Mapping;
use Doctrine\Common\Persistence\Mapping\RuntimeReflectionService;
2012-05-10 21:18:09 -03:00
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\DefaultQuoteStrategy;
use Doctrine\ORM\Mapping\QuoteStrategy;
use Doctrine\Tests\Models\CMS\CmsAddress;
use Doctrine\Tests\Models\CMS\CmsUser;
use Doctrine\Tests\Models\DDC117\DDC117Article;
use Doctrine\Tests\Models\DDC117\DDC117ArticleDetails;
use Doctrine\Tests\OrmTestCase;
2012-05-10 21:18:09 -03:00
/**
2012-05-30 15:28:03 -03:00
* @group DDC-1845
2012-05-10 21:18:09 -03:00
*/
class QuoteStrategyTest extends OrmTestCase
2012-05-10 21:18:09 -03:00
{
/**
* @var \Doctrine\ORM\Mapping\DefaultQuoteStrategy
*/
private $strategy;
2012-06-11 20:14:17 -03:00
/**
* @var \Doctrine\DBAL\Platforms\AbstractPlatform
*/
private $platform;
2012-05-10 21:18:09 -03:00
protected function setUp()
{
parent::setUp();
$em = $this->_getTestEntityManager();
2012-06-11 20:14:17 -03:00
$this->platform = $em->getConnection()->getDatabasePlatform();
$this->strategy = new DefaultQuoteStrategy();
2012-05-10 21:18:09 -03:00
}
/**
* @param string $className
* @return \Doctrine\ORM\Mapping\ClassMetadata
*/
private function createClassMetadata($className)
{
$cm = new ClassMetadata($className);
$cm->initializeReflection(new RuntimeReflectionService());
2012-05-10 21:18:09 -03:00
return $cm;
}
2012-06-12 09:47:40 -03:00
public function testConfiguration()
{
$em = $this->_getTestEntityManager();
$config = $em->getConfiguration();
$this->assertInstanceOf(QuoteStrategy::class, $config->getQuoteStrategy());
$this->assertInstanceOf(DefaultQuoteStrategy::class, $config->getQuoteStrategy());
2012-06-12 09:47:40 -03:00
$config->setQuoteStrategy(new MyQuoteStrategy());
$this->assertInstanceOf(QuoteStrategy::class, $config->getQuoteStrategy());
$this->assertInstanceOf(MyQuoteStrategy::class, $config->getQuoteStrategy());
2012-06-12 09:47:40 -03:00
}
2012-05-10 21:18:09 -03:00
public function testGetColumnName()
{
$cm = $this->createClassMetadata(CmsUser::class);
$cm->mapField(['fieldName' => 'name', 'columnName' => '`name`']);
$cm->mapField(['fieldName' => 'id', 'columnName' => 'id']);
2012-06-11 20:14:17 -03:00
$this->assertEquals('id' ,$this->strategy->getColumnName('id', $cm, $this->platform));
$this->assertEquals('"name"' ,$this->strategy->getColumnName('name', $cm, $this->platform));
2012-05-10 21:18:09 -03:00
}
public function testGetTableName()
{
$cm = $this->createClassMetadata(CmsUser::class);
$cm->setPrimaryTable(['name'=>'`cms_user`']);
$this->assertEquals('"cms_user"', $this->strategy->getTableName($cm, $this->platform));
2012-05-10 21:18:09 -03:00
$cm = new ClassMetadata(CmsUser::class);
$cm->initializeReflection(new RuntimeReflectionService());
$cm->setPrimaryTable(['name'=>'cms_user']);
$this->assertEquals('cms_user', $this->strategy->getTableName($cm, $this->platform));
2012-05-10 21:18:09 -03:00
}
2012-05-10 21:18:09 -03:00
public function testJoinTableName()
{
$cm1 = $this->createClassMetadata(CmsAddress::class);
$cm2 = $this->createClassMetadata(CmsAddress::class);
$cm1->mapManyToMany(
[
2012-05-10 21:18:09 -03:00
'fieldName' => 'user',
'targetEntity' => 'CmsUser',
'inversedBy' => 'users',
'joinTable' => [
2012-05-30 15:28:03 -03:00
'name' => '`cmsaddress_cmsuser`'
]
]
);
$cm2->mapManyToMany(
[
2012-05-10 21:18:09 -03:00
'fieldName' => 'user',
'targetEntity' => 'CmsUser',
'inversedBy' => 'users',
'joinTable' => [
2012-05-10 21:18:09 -03:00
'name' => 'cmsaddress_cmsuser'
]
]
2012-05-10 21:18:09 -03:00
);
2012-06-11 20:14:17 -03:00
$this->assertEquals('"cmsaddress_cmsuser"', $this->strategy->getJoinTableName($cm1->associationMappings['user'], $cm1, $this->platform));
$this->assertEquals('cmsaddress_cmsuser', $this->strategy->getJoinTableName($cm2->associationMappings['user'], $cm2, $this->platform));
2012-05-30 15:28:03 -03:00
}
public function testIdentifierColumnNames()
{
$cm1 = $this->createClassMetadata(CmsAddress::class);
$cm2 = $this->createClassMetadata(CmsAddress::class);
2012-05-30 15:28:03 -03:00
$cm1->mapField(
[
2012-05-30 15:28:03 -03:00
'id' => true,
'fieldName' => 'id',
'columnName' => '`id`',
]
);
2012-05-30 15:28:03 -03:00
$cm2->mapField(
[
2012-05-30 15:28:03 -03:00
'id' => true,
'fieldName' => 'id',
'columnName' => 'id',
]
);
2012-05-30 15:28:03 -03:00
$this->assertEquals(['"id"'], $this->strategy->getIdentifierColumnNames($cm1, $this->platform));
$this->assertEquals(['id'], $this->strategy->getIdentifierColumnNames($cm2, $this->platform));
2012-05-30 15:28:03 -03:00
}
public function testColumnAlias()
{
$i = 0;
$this->assertEquals('columnName_0', $this->strategy->getColumnAlias('columnName', $i++, $this->platform));
$this->assertEquals('column_name_1', $this->strategy->getColumnAlias('column_name', $i++, $this->platform));
$this->assertEquals('COLUMN_NAME_2', $this->strategy->getColumnAlias('COLUMN_NAME', $i++, $this->platform));
$this->assertEquals('COLUMNNAME_3', $this->strategy->getColumnAlias('COLUMN-NAME-', $i++, $this->platform));
2012-05-30 15:28:03 -03:00
}
public function testQuoteIdentifierJoinColumns()
2012-05-30 15:28:03 -03:00
{
$cm = $this->createClassMetadata(DDC117ArticleDetails::class);
2012-05-30 15:28:03 -03:00
$cm->mapOneToOne(
[
2012-05-30 15:28:03 -03:00
'id' => true,
'fieldName' => 'article',
'targetEntity' => DDC117Article::class,
'joinColumns' => [
[
2012-05-30 15:28:03 -03:00
'name' => '`article`'
]
],
]
);
2012-05-30 15:28:03 -03:00
$this->assertEquals(['"article"'], $this->strategy->getIdentifierColumnNames($cm, $this->platform));
2012-05-10 21:18:09 -03:00
}
public function testJoinColumnName()
{
$cm = $this->createClassMetadata(DDC117ArticleDetails::class);
$cm->mapOneToOne(
[
'id' => true,
'fieldName' => 'article',
'targetEntity' => DDC117Article::class,
'joinColumns' => [
[
'name' => '`article`'
]
],
]
);
$joinColumn = $cm->associationMappings['article']['joinColumns'][0];
2012-06-11 20:14:17 -03:00
$this->assertEquals('"article"',$this->strategy->getJoinColumnName($joinColumn, $cm, $this->platform));
}
public function testReferencedJoinColumnName()
{
$cm = $this->createClassMetadata(DDC117ArticleDetails::class);
$cm->mapOneToOne(
[
'id' => true,
'fieldName' => 'article',
'targetEntity' => DDC117Article::class,
'joinColumns' => [
[
'name' => '`article`'
]
],
]
);
$joinColumn = $cm->associationMappings['article']['joinColumns'][0];
2012-06-11 20:14:17 -03:00
$this->assertEquals('"id"',$this->strategy->getReferencedJoinColumnName($joinColumn, $cm, $this->platform));
}
2012-06-12 09:47:40 -03:00
}
class MyQuoteStrategy extends DefaultQuoteStrategy
2012-06-12 09:47:40 -03:00
{
}