Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Mapping / QuoteStrategyTest.php
1 <?php
2
3 namespace Doctrine\Tests\ORM\Mapping;
4
5 use Doctrine\ORM\Mapping\DefaultQuoteStrategy;
6 use Doctrine\ORM\Mapping\QuoteStrategy;
7 use Doctrine\ORM\Mapping\ClassMetadata;
8
9 require_once __DIR__ . '/../../TestInit.php';
10
11 /**
12  * @group DDC-1845
13  */
14 class QuoteStrategyTest extends \Doctrine\Tests\OrmTestCase
15 {
16
17     /**
18      * @var \Doctrine\ORM\Mapping\DefaultQuoteStrategy
19      */
20     private $strategy;
21
22     /**
23      * @var \Doctrine\DBAL\Platforms\AbstractPlatform
24      */
25     private $platform;
26
27     protected function setUp()
28     {
29         parent::setUp();
30         $em = $this->_getTestEntityManager();
31         $this->platform = $em->getConnection()->getDatabasePlatform();
32         $this->strategy = new DefaultQuoteStrategy();
33     }
34
35     /**
36      * @param   string $className
37      * @return \Doctrine\ORM\Mapping\ClassMetadata
38      */
39     private function createClassMetadata($className)
40     {
41         $cm = new ClassMetadata($className);
42         $cm->initializeReflection(new \Doctrine\Common\Persistence\Mapping\RuntimeReflectionService);
43
44         return $cm;
45     }
46
47     public function testConfiguration()
48     {
49         $em     = $this->_getTestEntityManager();
50         $config = $em->getConfiguration();
51
52         $this->assertInstanceOf('Doctrine\ORM\Mapping\QuoteStrategy', $config->getQuoteStrategy());
53         $this->assertInstanceOf('Doctrine\ORM\Mapping\DefaultQuoteStrategy', $config->getQuoteStrategy());
54
55         $config->setQuoteStrategy(new MyQuoteStrategy());
56
57         $this->assertInstanceOf('Doctrine\ORM\Mapping\QuoteStrategy', $config->getQuoteStrategy());
58         $this->assertInstanceOf('Doctrine\Tests\ORM\Mapping\MyQuoteStrategy', $config->getQuoteStrategy());
59     }
60
61     public function testGetColumnName()
62     {
63         $cm = $this->createClassMetadata('Doctrine\Tests\Models\CMS\CmsUser');
64         $cm->mapField(array('fieldName' => 'name', 'columnName' => '`name`'));
65         $cm->mapField(array('fieldName' => 'id', 'columnName' => 'id'));
66         
67         $this->assertEquals('id' ,$this->strategy->getColumnName('id', $cm, $this->platform));
68         $this->assertEquals('"name"' ,$this->strategy->getColumnName('name', $cm, $this->platform));
69     }
70
71     public function testGetTableName()
72     {
73         $cm = $this->createClassMetadata('Doctrine\Tests\Models\CMS\CmsUser');
74         $cm->setPrimaryTable(array('name'=>'`cms_user`'));
75         $this->assertEquals('"cms_user"' ,$this->strategy->getTableName($cm, $this->platform));
76
77         $cm = new ClassMetadata('Doctrine\Tests\Models\CMS\CmsUser');
78         $cm->initializeReflection(new \Doctrine\Common\Persistence\Mapping\RuntimeReflectionService);
79         $cm->setPrimaryTable(array('name'=>'cms_user'));
80         $this->assertEquals('cms_user' ,$this->strategy->getTableName($cm, $this->platform));
81     }
82     
83     public function testJoinTableName()
84     {
85         $cm1 = $this->createClassMetadata('Doctrine\Tests\Models\CMS\CmsAddress');
86         $cm2 = $this->createClassMetadata('Doctrine\Tests\Models\CMS\CmsAddress');
87         
88         $cm1->mapManyToMany(array(
89             'fieldName'     => 'user',
90             'targetEntity'  => 'CmsUser',
91             'inversedBy'    => 'users',
92             'joinTable'     => array(
93                 'name'  => '`cmsaddress_cmsuser`'
94             )
95         ));
96         
97         $cm2->mapManyToMany(array(
98             'fieldName'     => 'user',
99             'targetEntity'  => 'CmsUser',
100             'inversedBy'    => 'users',
101             'joinTable'     => array(
102                     'name'  => 'cmsaddress_cmsuser'
103                 )
104             )
105         );
106
107         $this->assertEquals('"cmsaddress_cmsuser"', $this->strategy->getJoinTableName($cm1->associationMappings['user'], $cm1, $this->platform));
108         $this->assertEquals('cmsaddress_cmsuser', $this->strategy->getJoinTableName($cm2->associationMappings['user'], $cm2, $this->platform));
109        
110     }
111
112     public function testIdentifierColumnNames()
113     {
114         $cm1 = $this->createClassMetadata('Doctrine\Tests\Models\CMS\CmsAddress');
115         $cm2 = $this->createClassMetadata('Doctrine\Tests\Models\CMS\CmsAddress');
116
117         $cm1->mapField(array(
118             'id'            => true,
119             'fieldName'     => 'id',
120             'columnName'    => '`id`',
121         ));
122
123         $cm2->mapField(array(
124             'id'            => true,
125             'fieldName'     => 'id',
126             'columnName'    => 'id',
127         ));
128
129         $this->assertEquals(array('"id"'), $this->strategy->getIdentifierColumnNames($cm1, $this->platform));
130         $this->assertEquals(array('id'), $this->strategy->getIdentifierColumnNames($cm2, $this->platform));
131     }
132
133
134     public function testColumnAlias()
135     {
136         $i = 0;
137         $this->assertEquals('columnName0', $this->strategy->getColumnAlias('columnName', $i++, $this->platform));
138         $this->assertEquals('column_name1', $this->strategy->getColumnAlias('column_name', $i++, $this->platform));
139         $this->assertEquals('COLUMN_NAME2', $this->strategy->getColumnAlias('COLUMN_NAME', $i++, $this->platform));
140         $this->assertEquals('COLUMNNAME3', $this->strategy->getColumnAlias('COLUMN-NAME-', $i++, $this->platform));
141     }
142
143     public function testQuoteIdentifierJoinColumns()
144     {
145         $cm = $this->createClassMetadata('Doctrine\Tests\Models\DDC117\DDC117ArticleDetails');
146
147         $cm->mapOneToOne(array(
148             'id'            => true,
149             'fieldName'     => 'article',
150             'targetEntity'  => 'Doctrine\Tests\Models\DDC117\DDC117Article',
151             'joinColumns'    => array(array(
152                 'name'  => '`article`'
153             )),
154         ));
155
156         $this->assertEquals(array('"article"'), $this->strategy->getIdentifierColumnNames($cm, $this->platform));
157     }
158
159     public function testJoinColumnName()
160     {
161         $cm = $this->createClassMetadata('Doctrine\Tests\Models\DDC117\DDC117ArticleDetails');
162
163         $cm->mapOneToOne(array(
164             'id'            => true,
165             'fieldName'     => 'article',
166             'targetEntity'  => 'Doctrine\Tests\Models\DDC117\DDC117Article',
167             'joinColumns'    => array(array(
168                 'name'  => '`article`'
169             )),
170         ));
171
172         $joinColumn = $cm->associationMappings['article']['joinColumns'][0];
173         $this->assertEquals('"article"',$this->strategy->getJoinColumnName($joinColumn, $cm, $this->platform));
174     }
175
176     public function testReferencedJoinColumnName()
177     {
178         $cm = $this->createClassMetadata('Doctrine\Tests\Models\DDC117\DDC117ArticleDetails');
179
180         $cm->mapOneToOne(array(
181             'id'            => true,
182             'fieldName'     => 'article',
183             'targetEntity'  => 'Doctrine\Tests\Models\DDC117\DDC117Article',
184             'joinColumns'    => array(array(
185                 'name'  => '`article`'
186             )),
187         ));
188
189         $joinColumn = $cm->associationMappings['article']['joinColumns'][0];
190         $this->assertEquals('"id"',$this->strategy->getReferencedJoinColumnName($joinColumn, $cm, $this->platform));
191     }
192 }
193
194 class MyQuoteStrategy extends \Doctrine\ORM\Mapping\DefaultQuoteStrategy
195 {
196
197 }