From d2f75142486ef8e7fe60e87692ab82f765086b03 Mon Sep 17 00:00:00 2001 From: Alessandro Lai Date: Wed, 21 Jun 2017 10:26:31 +0200 Subject: [PATCH] Put all tests classes in a single namespace --- lib/Doctrine/ORM/Query/SqlWalker.php | 2 +- .../Ticket4646InstanceOfAbstractTest.php | 176 ++++++------- .../Ticket4646InstanceOfMultiLevelTest.php | 244 +++++++++--------- .../Ticket/Ticket4646InstanceOfTest.php | 181 +++++++------ 4 files changed, 293 insertions(+), 310 deletions(-) diff --git a/lib/Doctrine/ORM/Query/SqlWalker.php b/lib/Doctrine/ORM/Query/SqlWalker.php index 78179d367..8c8ef30d1 100644 --- a/lib/Doctrine/ORM/Query/SqlWalker.php +++ b/lib/Doctrine/ORM/Query/SqlWalker.php @@ -2290,7 +2290,7 @@ class SqlWalker implements TreeWalker $metadata = $this->em->getClassMetadata($parameter); - if (! $metadata->getReflectionClass()->isSubclassOf($discrClass->name)) { + if ($metadata->getName() !== $discrClass->name && ! $metadata->getReflectionClass()->isSubclassOf($discrClass->name)) { throw QueryException::instanceOfUnrelatedClass($parameter, $discrClass->name); } diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfAbstractTest.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfAbstractTest.php index b17ca2c2d..090a172a9 100644 --- a/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfAbstractTest.php +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfAbstractTest.php @@ -1,114 +1,108 @@ _schemaTool->createSchema([ - $this->_em->getClassMetadata(Person::class), - $this->_em->getClassMetadata(Employee::class), - ]); + $this->_schemaTool->createSchema([ + $this->_em->getClassMetadata(PersonTicket4646Abstract::class), + $this->_em->getClassMetadata(EmployeeTicket4646Abstract::class), + ]); + } + + public function testInstanceOf() + { + $this->loadData(); + + $dql = 'SELECT p FROM Doctrine\Tests\ORM\Functional\Ticket\PersonTicket4646Abstract p + WHERE p INSTANCE OF Doctrine\Tests\ORM\Functional\Ticket\PersonTicket4646Abstract'; + $query = $this->_em->createQuery($dql); + $result = $query->getResult(); + + $this->assertCount(1, $result); + + foreach ($result as $r) { + $this->assertInstanceOf(PersonTicket4646Abstract::class, $r); + $this->assertInstanceOf(EmployeeTicket4646Abstract::class, $r); + $this->assertSame('bar', $r->getName()); } + } - public function testInstanceOf() - { - $this->loadData(); + private function loadData() + { + $employee = new EmployeeTicket4646Abstract(); + $employee->setName('bar'); + $employee->setDepartement('qux'); - $dql = 'SELECT p FROM Doctrine\Tests\ORM\Functional\InstanceOfAbstractTest\Person p - WHERE p INSTANCE OF Doctrine\Tests\ORM\Functional\InstanceOfAbstractTest\Person'; - $query = $this->_em->createQuery($dql); - $result = $query->getResult(); + $this->_em->persist($employee); - $this->assertCount(1, $result); - - foreach ($result as $r) { - $this->assertInstanceOf(Person::class, $r); - $this->assertInstanceOf(Employee::class, $r); - $this->assertSame('bar', $r->getName()); - } - } - - private function loadData() - { - $employee = new Employee(); - $employee->setName('bar'); - $employee->setDepartement('qux'); - - $this->_em->persist($employee); - - $this->_em->flush($employee); - } + $this->_em->flush($employee); } } -namespace Doctrine\Tests\ORM\Functional\InstanceOfAbstractTest { +/** + * @Entity() + * @Table(name="instance_of_abstract_test_person") + * @InheritanceType(value="JOINED") + * @DiscriminatorColumn(name="kind", type="string") + * @DiscriminatorMap(value={ + * "employee": EmployeeTicket4646Abstract::class + * }) + */ +abstract class PersonTicket4646Abstract +{ + /** + * @Id() + * @GeneratedValue() + * @Column(type="integer") + */ + private $id; /** - * @Entity() - * @Table(name="instance_of_abstract_test_person") - * @InheritanceType(value="JOINED") - * @DiscriminatorColumn(name="kind", type="string") - * @DiscriminatorMap(value={ - * "employee": Employee::class - * }) + * @Column(type="string") */ - abstract class Person + private $name; + + public function getId() { - /** - * @Id() - * @GeneratedValue() - * @Column(type="integer") - */ - private $id; - - /** - * @Column(type="string") - */ - private $name; - - public function getId() - { - return $this->id; - } - - public function getName() - { - return $this->name; - } - - public function setName($name) - { - $this->name = $name; - } + return $this->id; } - /** - * @Entity() - * @Table(name="instance_of_abstract_test_employee") - */ - class Employee extends Person + public function getName() { - /** - * @Column(type="string") - */ - private $departement; + return $this->name; + } - public function getDepartement() - { - return $this->departement; - } - - public function setDepartement($departement) - { - $this->departement = $departement; - } + public function setName($name) + { + $this->name = $name; + } +} + +/** + * @Entity() + * @Table(name="instance_of_abstract_test_employee") + */ +class EmployeeTicket4646Abstract extends PersonTicket4646Abstract +{ + /** + * @Column(type="string") + */ + private $departement; + + public function getDepartement() + { + return $this->departement; + } + + public function setDepartement($departement) + { + $this->departement = $departement; } } diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfMultiLevelTest.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfMultiLevelTest.php index 79f0d5363..649de27bb 100644 --- a/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfMultiLevelTest.php +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfMultiLevelTest.php @@ -1,156 +1,150 @@ _schemaTool->createSchema([ - $this->_em->getClassMetadata(Person::class), - $this->_em->getClassMetadata(Employee::class), - $this->_em->getClassMetadata(Engineer::class), - ]); - } + $this->_schemaTool->createSchema([ + $this->_em->getClassMetadata(PersonTicket4646MultiLevel::class), + $this->_em->getClassMetadata(EmployeeTicket4646MultiLevel::class), + $this->_em->getClassMetadata(EngineerTicket4646MultiLevel::class), + ]); + } - public function testInstanceOf() - { - $this->loadData(); + public function testInstanceOf() + { + $this->loadData(); - $dql = 'SELECT p FROM Doctrine\Tests\ORM\Functional\InstanceOfMultiLevelTest\Person p - WHERE p INSTANCE OF Doctrine\Tests\ORM\Functional\InstanceOfMultiLevelTest\Person'; - $query = $this->_em->createQuery($dql); - $result = $query->getResult(); + $dql = 'SELECT p FROM Doctrine\Tests\ORM\Functional\Ticket\PersonTicket4646MultiLevel p + WHERE p INSTANCE OF Doctrine\Tests\ORM\Functional\Ticket\PersonTicket4646MultiLevel'; + $query = $this->_em->createQuery($dql); + $result = $query->getResult(); - $this->assertCount(3, $result); + $this->assertCount(3, $result); - foreach ($result as $r) { - $this->assertInstanceOf(Person::class, $r); - if ($r instanceof Engineer) { - $this->assertEquals('foobar', $r->getName()); - $this->assertEquals('doctrine', $r->getSpecialization()); - } elseif ($r instanceof Employee) { - $this->assertEquals('bar', $r->getName()); - $this->assertEquals('qux', $r->getDepartement()); - } else { - $this->assertEquals('foo', $r->getName()); - } + foreach ($result as $r) { + $this->assertInstanceOf(PersonTicket4646MultiLevel::class, $r); + if ($r instanceof EngineerTicket4646MultiLevel) { + $this->assertEquals('foobar', $r->getName()); + $this->assertEquals('doctrine', $r->getSpecialization()); + } elseif ($r instanceof EmployeeTicket4646MultiLevel) { + $this->assertEquals('bar', $r->getName()); + $this->assertEquals('qux', $r->getDepartement()); + } else { + $this->assertEquals('foo', $r->getName()); } } + } - private function loadData() - { - $person = new Person(); - $person->setName('foo'); + private function loadData() + { + $person = new PersonTicket4646MultiLevel(); + $person->setName('foo'); - $employee = new Employee(); - $employee->setName('bar'); - $employee->setDepartement('qux'); + $employee = new EmployeeTicket4646MultiLevel(); + $employee->setName('bar'); + $employee->setDepartement('qux'); - $engineer = new Engineer(); - $engineer->setName('foobar'); - $engineer->setDepartement('dep'); - $engineer->setSpecialization('doctrine'); + $engineer = new EngineerTicket4646MultiLevel(); + $engineer->setName('foobar'); + $engineer->setDepartement('dep'); + $engineer->setSpecialization('doctrine'); - $this->_em->persist($person); - $this->_em->persist($employee); - $this->_em->persist($engineer); + $this->_em->persist($person); + $this->_em->persist($employee); + $this->_em->persist($engineer); - $this->_em->flush(array($person, $employee, $engineer)); - } + $this->_em->flush(array($person, $employee, $engineer)); } } -namespace Doctrine\Tests\ORM\Functional\InstanceOfMultiLevelTest { +/** + * @Entity() + * @Table(name="instance_of_multi_level_test_person") + * @InheritanceType(value="JOINED") + * @DiscriminatorColumn(name="kind", type="string") + * @DiscriminatorMap(value={ + * "person": "Doctrine\Tests\ORM\Functional\Ticket\PersonTicket4646MultiLevel", + * "employee": "Doctrine\Tests\ORM\Functional\Ticket\EmployeeTicket4646MultiLevel", + * "engineer": "Doctrine\Tests\ORM\Functional\Ticket\EngineerTicket4646MultiLevel", + * }) + */ +class PersonTicket4646MultiLevel +{ /** - * @Entity() - * @Table(name="instance_of_multi_level_test_person") - * @InheritanceType(value="JOINED") - * @DiscriminatorColumn(name="kind", type="string") - * @DiscriminatorMap(value={ - * "person": "Doctrine\Tests\ORM\Functional\InstanceOfMultiLevelTest\Person", - * "employee": "Doctrine\Tests\ORM\Functional\InstanceOfMultiLevelTest\Employee", - * "engineer": "Doctrine\Tests\ORM\Functional\InstanceOfMultiLevelTest\Engineer", - * }) + * @Id() + * @GeneratedValue() + * @Column(type="integer") */ - class Person + private $id; + + /** + * @Column(type="string") + */ + private $name; + + public function getId() { - /** - * @Id() - * @GeneratedValue() - * @Column(type="integer") - */ - private $id; - - /** - * @Column(type="string") - */ - private $name; - - public function getId() - { - return $this->id; - } - - public function getName() - { - return $this->name; - } - - public function setName($name) - { - $this->name = $name; - } + return $this->id; } - /** - * @Entity() - * @Table(name="instance_of_multi_level_employee") - */ - class Employee extends Person + public function getName() { - /** - * @Column(type="string") - */ - private $departement; - - public function getDepartement() - { - return $this->departement; - } - - public function setDepartement($departement) - { - $this->departement = $departement; - } + return $this->name; } - /** - * @Entity() - * @Table(name="instance_of_multi_level_engineer") - */ - class Engineer extends Employee + public function setName($name) { - /** - * @Column(type="string") - */ - private $specialization; - - public function getSpecialization() - { - return $this->specialization; - } - - public function setSpecialization($specialization) - { - $this->specialization = $specialization; - } + $this->name = $name; + } +} + +/** + * @Entity() + * @Table(name="instance_of_multi_level_employee") + */ +class EmployeeTicket4646MultiLevel extends PersonTicket4646MultiLevel +{ + /** + * @Column(type="string") + */ + private $departement; + + public function getDepartement() + { + return $this->departement; + } + + public function setDepartement($departement) + { + $this->departement = $departement; + } +} + +/** + * @Entity() + * @Table(name="instance_of_multi_level_engineer") + */ +class EngineerTicket4646MultiLevel extends EmployeeTicket4646MultiLevel +{ + /** + * @Column(type="string") + */ + private $specialization; + + public function getSpecialization() + { + return $this->specialization; + } + + public function setSpecialization($specialization) + { + $this->specialization = $specialization; } } diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfTest.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfTest.php index 35d4afdac..a83e6e733 100644 --- a/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfTest.php +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfTest.php @@ -1,121 +1,116 @@ _schemaTool->createSchema([ - $this->_em->getClassMetadata(Person::class), - $this->_em->getClassMetadata(Employee::class), - ]); - } + $this->_schemaTool->createSchema([ + $this->_em->getClassMetadata(PersonTicket4646::class), + $this->_em->getClassMetadata(EmployeeTicket4646::class), + ]); + } - public function testInstanceOf() - { - $this->loadData(); + public function testInstanceOf() + { + $this->loadData(); - $dql = 'SELECT p FROM Doctrine\Tests\ORM\Functional\InstanceOfTest\Person p - WHERE p INSTANCE OF Doctrine\Tests\ORM\Functional\InstanceOfTest\Person'; - $query = $this->_em->createQuery($dql); - $result = $query->getResult(); + $dql = 'SELECT p FROM Doctrine\Tests\ORM\Functional\Ticket\PersonTicket4646 p + WHERE p INSTANCE OF Doctrine\Tests\ORM\Functional\Ticket\PersonTicket4646'; + $query = $this->_em->createQuery($dql); + $result = $query->getResult(); - $this->assertCount(2, $result); + $this->assertCount(2, $result); - foreach ($result as $r) { - $this->assertInstanceOf(Person::class, $r); - if ($r instanceof Employee) { - $this->assertEquals('bar', $r->getName()); - } else { - $this->assertEquals('foo', $r->getName()); - } + foreach ($result as $r) { + $this->assertInstanceOf(PersonTicket4646::class, $r); + if ($r instanceof EmployeeTicket4646) { + $this->assertEquals('bar', $r->getName()); + } else { + $this->assertEquals('foo', $r->getName()); } } + } - private function loadData() - { - $person = new Person(); - $person->setName('foo'); + private function loadData() + { + $person = new PersonTicket4646(); + $person->setName('foo'); - $employee = new Employee(); - $employee->setName('bar'); - $employee->setDepartement('qux'); + $employee = new EmployeeTicket4646(); + $employee->setName('bar'); + $employee->setDepartement('qux'); - $this->_em->persist($person); - $this->_em->persist($employee); + $this->_em->persist($person); + $this->_em->persist($employee); - $this->_em->flush(array($person, $employee)); - } + $this->_em->flush(array($person, $employee)); } } -namespace Doctrine\Tests\ORM\Functional\InstanceOfTest { +/** + * @Entity() + * @Table(name="instance_of_test_person") + * @InheritanceType(value="JOINED") + * @DiscriminatorColumn(name="kind", type="string") + * @DiscriminatorMap(value={ + * "person": "Doctrine\Tests\ORM\Functional\Ticket\PersonTicket4646", + * "employee": "Doctrine\Tests\ORM\Functional\Ticket\EmployeeTicket4646" + * }) + */ +class PersonTicket4646 +{ /** - * @Entity() - * @Table(name="instance_of_test_person") - * @InheritanceType(value="JOINED") - * @DiscriminatorColumn(name="kind", type="string") - * @DiscriminatorMap(value={ - * "person": "Doctrine\Tests\ORM\Functional\InstanceOfTest\Person", - * "employee": "Doctrine\Tests\ORM\Functional\InstanceOfTest\Employee" - * }) + * @Id() + * @GeneratedValue() + * @Column(type="integer") */ - class Person + private $id; + + /** + * @Column(type="string") + */ + private $name; + + public function getId() { - /** - * @Id() - * @GeneratedValue() - * @Column(type="integer") - */ - private $id; - - /** - * @Column(type="string") - */ - private $name; - - public function getId() - { - return $this->id; - } - - public function getName() - { - return $this->name; - } - - public function setName($name) - { - $this->name = $name; - } + return $this->id; } - /** - * @Entity() - * @Table(name="instance_of_test_employee") - */ - class Employee extends Person + public function getName() { - /** - * @Column(type="string") - */ - private $departement; + return $this->name; + } - public function getDepartement() - { - return $this->departement; - } - - public function setDepartement($departement) - { - $this->departement = $departement; - } + public function setName($name) + { + $this->name = $name; + } +} + +/** + * @Entity() + * @Table(name="instance_of_test_employee") + */ +class EmployeeTicket4646 extends PersonTicket4646 +{ + /** + * @Column(type="string") + */ + private $departement; + + public function getDepartement() + { + return $this->departement; + } + + public function setDepartement($departement) + { + $this->departement = $departement; } }