From c799c6da8be7b7d9d15ef119614cee914f51d8c3 Mon Sep 17 00:00:00 2001 From: Alessandro Lai Date: Fri, 18 Aug 2017 13:10:04 +0200 Subject: [PATCH] Add new functional test to check usage of INSTANCEOF with multiple parameters --- ...46InstanceOfWithMultipleParametersTest.php | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfWithMultipleParametersTest.php diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfWithMultipleParametersTest.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfWithMultipleParametersTest.php new file mode 100644 index 000000000..c8c172ab6 --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/Ticket4646InstanceOfWithMultipleParametersTest.php @@ -0,0 +1,88 @@ +_schemaTool->createSchema([ + $this->_em->getClassMetadata(PersonTicket4646Multiple::class), + $this->_em->getClassMetadata(EmployeeTicket4646Multiple::class), + $this->_em->getClassMetadata(ManagerTicket4646Multiple::class), + $this->_em->getClassMetadata(InternTicket4646Multiple::class), + ]); + } + + public function testInstanceOf(): void + { + $this->_em->persist(new PersonTicket4646Multiple()); + $this->_em->persist(new EmployeeTicket4646Multiple()); + $this->_em->persist(new ManagerTicket4646Multiple()); + $this->_em->persist(new InternTicket4646Multiple()); + $this->_em->flush(); + + $dql = 'SELECT p FROM Doctrine\Tests\ORM\Functional\Ticket\PersonTicket4646Multiple p + WHERE p INSTANCE OF (Doctrine\Tests\ORM\Functional\Ticket\EmployeeTicket4646Multiple, Doctrine\Tests\ORM\Functional\Ticket\InternTicket4646Multiple)'; + $query = $this->_em->createQuery($dql); + $result = $query->getResult(); + + self::assertCount(2, $result); + self::assertContainsOnlyInstancesOf(PersonTicket4646Multiple::class, $result); + } +} + +/** + * @Entity() + * @Table(name="instance_of_test_multiple_person") + * @InheritanceType(value="JOINED") + * @DiscriminatorColumn(name="kind", type="string") + * @DiscriminatorMap(value={ + * "person": "Doctrine\Tests\ORM\Functional\Ticket\PersonTicket4646Multiple", + * "employee": "Doctrine\Tests\ORM\Functional\Ticket\EmployeeTicket4646Multiple", + * "manager": "Doctrine\Tests\ORM\Functional\Ticket\ManagerTicket4646Multiple", + * "intern": "Doctrine\Tests\ORM\Functional\Ticket\InternTicket4646Multiple" + * }) + */ +class PersonTicket4646Multiple +{ + /** + * @Id() + * @GeneratedValue() + * @Column(type="integer") + */ + private $id; + + public function getId() + { + return $this->id; + } +} + +/** + * @Entity() + * @Table(name="instance_of_test_multiple_employee") + */ +class EmployeeTicket4646Multiple extends PersonTicket4646Multiple +{ +} + +/** + * @Entity() + * @Table(name="instance_of_test_multiple_manager") + */ +class ManagerTicket4646Multiple extends PersonTicket4646Multiple +{ +} + +/** + * @Entity() + * @Table(name="instance_of_test_multiple_intern") + */ +class InternTicket4646Multiple extends PersonTicket4646Multiple +{ +}