3 namespace Doctrine\Tests\ORM\Mapping;
5 use Doctrine\ORM\Mapping\UnderscoreNamingStrategy;
6 use Doctrine\ORM\Mapping\DefaultNamingStrategy;
7 use Doctrine\ORM\Mapping\NamingStrategy;
9 require_once __DIR__ . '/../../TestInit.php';
14 class NamingStrategyTest extends \Doctrine\Tests\OrmTestCase
17 * @return DefaultNamingStrategy
19 static private function defaultNaming()
21 return new DefaultNamingStrategy();
25 * @return UnderscoreNamingStrategy
27 static private function underscoreNamingLower()
29 return new UnderscoreNamingStrategy(CASE_LOWER);
33 * @return UnderscoreNamingStrategy
35 static private function underscoreNamingUpper()
37 return new UnderscoreNamingStrategy(CASE_UPPER);
41 * Data Provider for NamingStrategy#classToTableName
45 static public function dataClassToTableName()
48 // DefaultNamingStrategy
49 array(self::defaultNaming(), 'SomeClassName',
52 array(self::defaultNaming(), 'SomeClassName',
55 array(self::defaultNaming(), 'Name',
59 // UnderscoreNamingStrategy
60 array(self::underscoreNamingLower(), 'some_class_name',
61 '\Name\Space\SomeClassName'
63 array(self::underscoreNamingLower(), 'name',
66 array(self::underscoreNamingUpper(), 'SOME_CLASS_NAME',
67 '\Name\Space\SomeClassName'
69 array(self::underscoreNamingUpper(), 'NAME',
76 * @dataProvider dataClassToTableName
78 public function testClassToTableName(NamingStrategy $strategy, $expected, $className)
80 $this->assertEquals($expected, $strategy->classToTableName($className));
84 * Data Provider for NamingStrategy#propertyToColumnName
88 static public function dataPropertyToColumnName()
91 // DefaultNamingStrategy
92 array(self::defaultNaming(), 'someProperty',
95 array(self::defaultNaming(), 'SOME_PROPERTY',
98 array(self::defaultNaming(), 'some_property',
102 // UnderscoreNamingStrategy
103 array(self::underscoreNamingLower(), 'some_property',
106 array(self::underscoreNamingUpper(), 'SOME_PROPERTY',
109 array(self::underscoreNamingUpper(), 'SOME_PROPERTY',
112 array(self::underscoreNamingUpper(), 'SOME_PROPERTY',
119 * @dataProvider dataPropertyToColumnName
121 * @param NamingStrategy $strategy
122 * @param string $expected
123 * @param string $propertyName
125 public function testPropertyToColumnName(NamingStrategy $strategy, $expected, $propertyName)
127 $this->assertEquals($expected, $strategy->propertyToColumnName($propertyName));
131 * Data Provider for NamingStrategy#referenceColumnName
135 static public function dataReferenceColumnName()
138 // DefaultNamingStrategy
139 array(self::defaultNaming(), 'id'),
141 // UnderscoreNamingStrategy
142 array(self::underscoreNamingLower(), 'id'),
143 array(self::underscoreNamingUpper(), 'ID'),
148 * @dataProvider dataReferenceColumnName
150 * @param NamingStrategy $strategy
151 * @param string $expected
153 public function testReferenceColumnName(NamingStrategy $strategy, $expected)
155 $this->assertEquals($expected, $strategy->referenceColumnName());
159 * Data Provider for NamingStrategy#joinColumnName
163 static public function dataJoinColumnName()
166 // DefaultNamingStrategy
167 array(self::defaultNaming(), 'someColumn_id',
170 array(self::defaultNaming(), 'some_column_id',
174 // UnderscoreNamingStrategy
175 array(self::underscoreNamingLower(), 'some_column_id',
178 array(self::underscoreNamingUpper(), 'SOME_COLUMN_ID',
185 * @dataProvider dataJoinColumnName
187 * @param NamingStrategy $strategy
188 * @param string $expected
189 * @param string $propertyName
191 public function testJoinColumnName(NamingStrategy $strategy, $expected, $propertyName)
193 $this->assertEquals($expected, $strategy->joinColumnName($propertyName));
197 * Data Provider for NamingStrategy#joinTableName
201 static public function dataJoinTableName()
204 // DefaultNamingStrategy
205 array(self::defaultNaming(), 'someclassname_classname',
206 'SomeClassName', 'Some\ClassName', null,
208 array(self::defaultNaming(), 'someclassname_classname',
209 '\SomeClassName', 'ClassName', null,
211 array(self::defaultNaming(), 'name_classname',
212 '\Some\Class\Name', 'ClassName', null,
215 // UnderscoreNamingStrategy
216 array(self::underscoreNamingLower(), 'some_class_name_class_name',
217 'SomeClassName', 'Some\ClassName', null,
219 array(self::underscoreNamingLower(), 'some_class_name_class_name',
220 '\SomeClassName', 'ClassName', null,
222 array(self::underscoreNamingLower(), 'name_class_name',
223 '\Some\Class\Name', 'ClassName', null,
226 array(self::underscoreNamingUpper(), 'SOME_CLASS_NAME_CLASS_NAME',
227 'SomeClassName', 'Some\ClassName', null,
229 array(self::underscoreNamingUpper(), 'SOME_CLASS_NAME_CLASS_NAME',
230 '\SomeClassName', 'ClassName', null,
232 array(self::underscoreNamingUpper(), 'NAME_CLASS_NAME',
233 '\Some\Class\Name', 'ClassName', null,
239 * @dataProvider dataJoinTableName
241 * @param NamingStrategy $strategy
242 * @param string $expected
243 * @param string $ownerEntity
244 * @param string $associatedEntity
245 * @param string $propertyName
247 public function testJoinTableName(NamingStrategy $strategy, $expected, $ownerEntity, $associatedEntity, $propertyName = null)
249 $this->assertEquals($expected, $strategy->joinTableName($ownerEntity, $associatedEntity, $propertyName));
253 * Data Provider for NamingStrategy#joinKeyColumnName
257 static public function dataJoinKeyColumnName()
260 // DefaultNamingStrategy
261 array(self::defaultNaming(), 'someclassname_id',
262 'SomeClassName', null, null,
264 array(self::defaultNaming(), 'name_identifier',
265 '\Some\Class\Name', 'identifier', null,
268 // UnderscoreNamingStrategy
269 array(self::underscoreNamingLower(), 'some_class_name_id',
270 'SomeClassName', null, null,
272 array(self::underscoreNamingLower(), 'class_name_identifier',
273 '\Some\Class\ClassName', 'identifier', null,
276 array(self::underscoreNamingUpper(), 'SOME_CLASS_NAME_ID',
277 'SomeClassName', null, null,
279 array(self::underscoreNamingUpper(), 'CLASS_NAME_IDENTIFIER',
280 '\Some\Class\ClassName', 'IDENTIFIER', null,
286 * @dataProvider dataJoinKeyColumnName
288 * @param NamingStrategy $strategy
289 * @param string $expected
290 * @param string $propertyEntityName
291 * @param string $referencedColumnName
292 * @param string $propertyName
294 public function testJoinKeyColumnName(NamingStrategy $strategy, $expected, $propertyEntityName, $referencedColumnName = null, $propertyName = null)
296 $this->assertEquals($expected, $strategy->joinKeyColumnName($propertyEntityName, $referencedColumnName, $propertyName));