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

166 lines
4.8 KiB
PHP
Raw Normal View History

2013-06-16 14:55:01 -04:00
<?php
namespace Doctrine\Tests\ORM\Mapping;
use Doctrine\Common\Persistence\Mapping\RuntimeReflectionService;
2013-06-16 14:55:01 -04:00
use Doctrine\ORM\Mapping\AnsiQuoteStrategy;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\Tests\Models\CMS\CmsAddress;
use Doctrine\Tests\Models\CMS\CmsUser;
use Doctrine\Tests\Models\DDC117\DDC117Article;
use Doctrine\Tests\Models\DDC117\DDC117ArticleDetails;
2013-06-16 14:55:01 -04:00
use Doctrine\Tests\OrmTestCase;
/**
* @group DDC-1845
* @group DDC-2459
*/
class AnsiQuoteStrategyTest extends OrmTestCase
{
/**
* @var \Doctrine\ORM\Mapping\DefaultQuoteStrategy
*/
private $strategy;
/**
* @var \Doctrine\DBAL\Platforms\AbstractPlatform
*/
private $platform;
protected function setUp()
{
parent::setUp();
$em = $this->_getTestEntityManager();
$this->platform = $em->getConnection()->getDatabasePlatform();
$this->strategy = new AnsiQuoteStrategy();
}
/**
* @param string $className
* @return \Doctrine\ORM\Mapping\ClassMetadata
*/
private function createClassMetadata($className)
{
$class = new ClassMetadata($className);
$class->initializeReflection(new RuntimeReflectionService());
2013-06-16 14:55:01 -04:00
return $class;
}
public function testGetColumnName()
{
$class = $this->createClassMetadata(CmsUser::class);
$class->mapField(['fieldName' => 'name', 'columnName' => 'name']);
$class->mapField(['fieldName' => 'id', 'columnName' => 'id', 'id' => true]);
2013-06-16 14:55:01 -04:00
$this->assertEquals('id' ,$this->strategy->getColumnName('id', $class, $this->platform));
$this->assertEquals('name' ,$this->strategy->getColumnName('name', $class, $this->platform));
}
public function testGetTableName()
{
$class = $this->createClassMetadata(CmsUser::class);
2013-06-16 14:55:01 -04:00
$class->setPrimaryTable(['name'=>'cms_user']);
2013-06-16 14:55:01 -04:00
$this->assertEquals('cms_user' ,$this->strategy->getTableName($class, $this->platform));
}
public function testJoinTableName()
{
$class = $this->createClassMetadata(CmsAddress::class);
$class->mapManyToMany(
[
2013-06-16 14:55:01 -04:00
'fieldName' => 'user',
'targetEntity' => 'CmsUser',
'inversedBy' => 'users',
'joinTable' => [
2013-06-16 14:55:01 -04:00
'name' => 'cmsaddress_cmsuser'
]
]
);
2013-06-16 14:55:01 -04:00
$this->assertEquals('cmsaddress_cmsuser', $this->strategy->getJoinTableName($class->associationMappings['user'], $class, $this->platform));
2013-06-16 14:55:01 -04:00
}
public function testIdentifierColumnNames()
{
$class = $this->createClassMetadata(CmsAddress::class);
2013-06-16 14:55:01 -04:00
$class->mapField(
[
2013-06-16 14:55:01 -04:00
'id' => true,
'fieldName' => 'id',
'columnName' => 'id',
]
);
2013-06-16 14:55:01 -04:00
$this->assertEquals(['id'], $this->strategy->getIdentifierColumnNames($class, $this->platform));
2013-06-16 14:55:01 -04:00
}
public function testColumnAlias()
{
$this->assertEquals('columnName_1', $this->strategy->getColumnAlias('columnName', 1, $this->platform));
2013-06-16 14:55:01 -04:00
}
public function testJoinColumnName()
{
$class = $this->createClassMetadata(DDC117ArticleDetails::class);
2013-06-16 14:55:01 -04:00
$class->mapOneToOne(
[
2013-06-16 14:55:01 -04:00
'id' => true,
'fieldName' => 'article',
'targetEntity' => DDC117Article::class,
'joinColumns' => [
[
2013-06-16 14:55:01 -04:00
'name' => 'article'
]
],
]
);
2013-06-16 14:55:01 -04:00
$joinColumn = $class->associationMappings['article']['joinColumns'][0];
$this->assertEquals('article',$this->strategy->getJoinColumnName($joinColumn, $class, $this->platform));
}
public function testReferencedJoinColumnName()
{
$cm = $this->createClassMetadata(DDC117ArticleDetails::class);
2013-06-16 14:55:01 -04:00
$cm->mapOneToOne(
[
2013-06-16 14:55:01 -04:00
'id' => true,
'fieldName' => 'article',
'targetEntity' => DDC117Article::class,
'joinColumns' => [
[
2013-06-16 14:55:01 -04:00
'name' => 'article'
]
],
]
);
2013-06-16 14:55:01 -04:00
$joinColumn = $cm->associationMappings['article']['joinColumns'][0];
$this->assertEquals('id',$this->strategy->getReferencedJoinColumnName($joinColumn, $cm, $this->platform));
}
public function testGetSequenceName()
{
$class = $this->createClassMetadata(CmsUser::class);
$definition = [
2013-06-16 14:55:01 -04:00
'sequenceName' => 'user_id_seq',
'allocationSize' => 1,
'initialValue' => 2
];
2013-06-16 14:55:01 -04:00
$class->setSequenceGeneratorDefinition($definition);
$this->assertEquals('user_id_seq',$this->strategy->getSequenceName($definition, $class, $this->platform));
}
}