Permalink
Browse files

added unit test

  • Loading branch information...
1 parent 937ba63 commit b3414e3c1ab70050d2b0a206e74bf827cb39f8f4 @Padam87 committed Mar 30, 2013
@@ -2,10 +2,12 @@
namespace Doctrine\Tests\ORM\Tools;
-use Doctrine\ORM\Tools\SchemaTool,
- Doctrine\ORM\Tools\EntityGenerator,
- Doctrine\ORM\Tools\Export\ClassMetadataExporter,
- Doctrine\ORM\Mapping\ClassMetadataInfo;
+use Doctrine\ORM\Tools\SchemaTool;
+use Doctrine\ORM\Tools\EntityGenerator;
+use Doctrine\ORM\Tools\Export\ClassMetadataExporter;
+use Doctrine\ORM\Mapping\ClassMetadataInfo;
+use Doctrine\ORM\Mapping\ClassMetadataFactory;
+use Entities\TraitedUser;
require_once __DIR__ . '/../../TestInit.php';
@@ -282,7 +284,7 @@ public function testGenerateEntityWithSequenceGenerator()
$filename = $this->_tmpDir . DIRECTORY_SEPARATOR
. $this->_namespace . DIRECTORY_SEPARATOR . 'DDC1784Entity.php';
-
+
$this->assertFileExists($filename);
require_once $filename;
@@ -330,7 +332,7 @@ public function testGenerateEntityWithMultipleInverseJoinColumns()
$property = new \ReflectionProperty($metadata->name, 'centroCustos');
$docComment = $property->getDocComment();
-
+
//joinColumns
$this->assertContains('@JoinColumn(name="idorcamento", referencedColumnName="idorcamento"),', $docComment);
$this->assertContains('@JoinColumn(name="idunidade", referencedColumnName="idunidade")', $docComment);
@@ -436,7 +438,7 @@ public function testEntityTypeAlias(array $field)
$entity = new $metadata->name;
$reflClass = new \ReflectionClass($metadata->name);
-
+
$type = $field['phpType'];
$name = $field['fieldName'];
$value = $field['value'];
@@ -452,6 +454,34 @@ public function testEntityTypeAlias(array $field)
}
/**
+ * @group DDC-2372
+ */
+ public function testTraitPropertiesAndMethodsAreNotDuplicated()
+ {
+ if (function_exists('trait_exists')) {
+ $cmf = new ClassMetadataFactory();
+ $em = $this->_getTestEntityManager();
+ $cmf->setEntityManager($em);
+
+ $user = new TraitedUser();
+ $metadata = $cmf->getMetadataFor(get_class($user));
+ $metadata->name = $this->_namespace . "\TraitedUser";
+ $metadata->namespace = $this->_namespace;
+
+ $this->_generator->writeEntityClass($metadata, $this->_tmpDir);
+
+ $this->assertFileExists($this->_tmpDir . "/" . $this->_namespace . "/TraitedUser.php");
+ require $this->_tmpDir . "/" . $this->_namespace . "/TraitedUser.php";
+
+ $reflClass = new \ReflectionClass($metadata->name);
+
+ $this->assertSame($reflClass->hasProperty('address'), false);
+ $this->assertSame($reflClass->hasMethod('setAddress'), false);
+ $this->assertSame($reflClass->hasMethod('getAddress'), false);
+ }
+ }
+
+ /**
* @return array
*/
public function getEntityTypeAliasDataProvider()
@@ -470,43 +500,43 @@ public function getEntityTypeAliasDataProvider()
'value' => new \DateTime
)),
array(array(
- 'fieldName' => 'date',
+ 'fieldName' => 'date',
'phpType' => '\\DateTime',
'dbType' => 'date',
'value' => new \DateTime
)),
array(array(
- 'fieldName' => 'time',
+ 'fieldName' => 'time',
'phpType' => '\DateTime',
'dbType' => 'time',
'value' => new \DateTime
)),
array(array(
- 'fieldName' => 'object',
+ 'fieldName' => 'object',
'phpType' => '\stdClass',
'dbType' => 'object',
'value' => new \stdClass()
)),
array(array(
- 'fieldName' => 'bigint',
+ 'fieldName' => 'bigint',
'phpType' => 'integer',
'dbType' => 'bigint',
'value' => 11
)),
array(array(
- 'fieldName' => 'smallint',
+ 'fieldName' => 'smallint',
'phpType' => 'integer',
'dbType' => 'smallint',
'value' => 22
)),
array(array(
- 'fieldName' => 'text',
+ 'fieldName' => 'text',
'phpType' => 'string',
'dbType' => 'text',
'value' => 'text'
)),
array(array(
- 'fieldName' => 'blob',
+ 'fieldName' => 'blob',
'phpType' => 'string',
'dbType' => 'blob',
'value' => 'blob'
@@ -17,6 +17,7 @@
}
/* @var $classLoader \Composer\Autoload\ClassLoader */
+$classLoader->add('Entities', __DIR__ . '/../../../tools/sandbox');
$classLoader->add('Doctrine\\Tests\\', __DIR__ . '/../../');
unset($classLoader);
@@ -0,0 +1,34 @@
+<?php
+
+namespace Entities;
+
+use Entities\Traits\AddressTrait;
+
+/** @Entity @Table(name="traited_users") */
+class TraitedUser
+{
+ use AddressTrait;
+
+ /**
+ * @Id @Column(type="integer")
+ * @GeneratedValue(strategy="AUTO")
+ */
+ private $id;
+ /** @Column(type="string", length=50) */
+ private $name;
+
+ public function getId()
+ {
+ return $this->id;
+ }
+
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+}
@@ -0,0 +1,25 @@
+<?php
+
+namespace Entities\Traits;
+
+trait AddressTrait
+{
+ /**
+ * @OneToOne(targetEntity="Entities\Address", inversedBy="user")
+ * @JoinColumn(name="address_id", referencedColumnName="id")
+ */
+ private $address;
+
+ public function getAddress()
+ {
+ return $this->address;
+ }
+
+ public function setAddress(Address $address)
+ {
+ if ($this->address !== $address) {
+ $this->address = $address;
+ $address->setUser($this);
+ }
+ }
+}

0 comments on commit b3414e3

Please sign in to comment.