3 namespace Doctrine\Tests\ORM\Tools;
5 use Doctrine\ORM\Tools\SchemaValidator;
7 require_once __DIR__ . '/../../TestInit.php';
9 class SchemaValidatorTest extends \Doctrine\Tests\OrmTestCase
17 * @var SchemaValidator
19 private $validator = null;
21 public function setUp()
23 $this->em = $this->_getTestEntityManager();
24 $this->validator = new SchemaValidator($this->em);
27 public function testCmsModelSet()
29 $this->em->getConfiguration()->getMetadataDriverImpl()->addPaths(array(
30 __DIR__ . "/../../Models/CMS"
32 $this->validator->validateMapping();
35 public function testCompanyModelSet()
37 $this->em->getConfiguration()->getMetadataDriverImpl()->addPaths(array(
38 __DIR__ . "/../../Models/Company"
40 $this->validator->validateMapping();
43 public function testECommerceModelSet()
45 $this->em->getConfiguration()->getMetadataDriverImpl()->addPaths(array(
46 __DIR__ . "/../../Models/ECommerce"
48 $this->validator->validateMapping();
51 public function testForumModelSet()
53 $this->em->getConfiguration()->getMetadataDriverImpl()->addPaths(array(
54 __DIR__ . "/../../Models/Forum"
56 $this->validator->validateMapping();
59 public function testNavigationModelSet()
61 $this->em->getConfiguration()->getMetadataDriverImpl()->addPaths(array(
62 __DIR__ . "/../../Models/Navigation"
64 $this->validator->validateMapping();
67 public function testRoutingModelSet()
69 $this->em->getConfiguration()->getMetadataDriverImpl()->addPaths(array(
70 __DIR__ . "/../../Models/Routing"
72 $this->validator->validateMapping();
78 public function testInvalidManyToManyJoinColumnSchema()
80 $class1 = $this->em->getClassMetadata(__NAMESPACE__ . '\InvalidEntity1');
81 $class2 = $this->em->getClassMetadata(__NAMESPACE__ . '\InvalidEntity2');
83 $ce = $this->validator->validateClass($class1);
87 "The inverse join columns of the many-to-many table 'Entity1Entity2' have to contain to ALL identifier columns of the target entity 'Doctrine\Tests\ORM\Tools\InvalidEntity2', however 'key4' are missing.",
88 "The join columns of the many-to-many table 'Entity1Entity2' have to contain to ALL identifier columns of the source entity 'Doctrine\Tests\ORM\Tools\InvalidEntity1', however 'key2' are missing."
97 public function testInvalidToOneJoinColumnSchema()
99 $class1 = $this->em->getClassMetadata(__NAMESPACE__ . '\InvalidEntity1');
100 $class2 = $this->em->getClassMetadata(__NAMESPACE__ . '\InvalidEntity2');
102 $ce = $this->validator->validateClass($class2);
106 "The referenced column name 'id' has to be a primary key column on the target entity class 'Doctrine\Tests\ORM\Tools\InvalidEntity1'.",
107 "The join columns of the association 'assoc' have to match to ALL identifier columns of the target entity 'Doctrine\Tests\ORM\Tools\InvalidEntity2', however 'key1, key2' are missing."
116 public function testValidOneToOneAsIdentifierSchema()
118 $class1 = $this->em->getClassMetadata(__NAMESPACE__ . '\DDC1587ValidEntity2');
119 $class2 = $this->em->getClassMetadata(__NAMESPACE__ . '\DDC1587ValidEntity1');
121 $ce = $this->validator->validateClass($class1);
123 $this->assertEquals(array(), $ce);
129 public function testInvalidTripleAssociationAsKeyMapping()
131 $classThree = $this->em->getClassMetadata(__NAMESPACE__ . '\DDC1649Three');
132 $ce = $this->validator->validateClass($classThree);
134 $this->assertEquals(Array(
135 "Cannot map association 'Doctrine\Tests\ORM\Tools\DDC1649Three#two as identifier, because the target entity 'Doctrine\Tests\ORM\Tools\DDC1649Two' also maps an association as identifier.",
136 "The referenced column name 'id' has to be a primary key column on the target entity class 'Doctrine\Tests\ORM\Tools\DDC1649Two'."
155 * @ManyToMany (targetEntity="InvalidEntity2")
156 * @JoinTable (name="Entity1Entity2",
157 * joinColumns={@JoinColumn(name="key1", referencedColumnName="key1")},
158 * inverseJoinColumns={@JoinColumn(name="key3", referencedColumnName="key3")}
180 * @ManyToOne(targetEntity="InvalidEntity1")
186 * @Entity(repositoryClass="Entity\Repository\Agent")
187 * @Table(name="agent")
189 class DDC1587ValidEntity1
194 * @Id @GeneratedValue
195 * @Column(name="pk", type="integer")
202 * @Column(name="name", type="string", length=32)
209 * @OneToOne(targetEntity="DDC1587ValidEntity2", cascade={"all"}, mappedBy="agent")
210 * @JoinColumn(name="pk", referencedColumnName="pk_agent")
219 class DDC1587ValidEntity2
222 * @var DDC1587ValidEntity1
225 * @OneToOne(targetEntity="DDC1587ValidEntity1", inversedBy="identifier")
226 * @JoinColumn(name="pk_agent", referencedColumnName="pk", nullable=false)
233 * @Column(name="num", type="string", length=16, nullable=true)
244 * @Id @Column @GeneratedValue
254 /** @Id @ManyToOne(targetEntity="DDC1649One")@JoinColumn(name="id", referencedColumnName="id") */
263 /** @Id @ManyToOne(targetEntity="DDC1649Two") @JoinColumn(name="id",
264 * referencedColumnName="id") */