DDC1151Test.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace Doctrine\Tests\ORM\Functional\Ticket;
  3. require_once __DIR__ . '/../../../TestInit.php';
  4. /**
  5. * @group DDC-1151
  6. */
  7. class DDC1151Test extends \Doctrine\Tests\OrmFunctionalTestCase
  8. {
  9. public function testQuoteForeignKey()
  10. {
  11. if ($this->_em->getConnection()->getDatabasePlatform()->getName() != 'postgresql') {
  12. $this->markTestSkipped("This test is useful for all databases, but designed only for postgresql.");
  13. }
  14. $sql = $this->_schemaTool->getCreateSchemaSql(array(
  15. $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1151User'),
  16. $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1151Group'),
  17. ));
  18. $this->assertEquals("CREATE TABLE \"User\" (id INT NOT NULL, PRIMARY KEY(id))", $sql[0]);
  19. $this->assertEquals("CREATE TABLE ddc1151user_ddc1151group (ddc1151user_id INT NOT NULL, ddc1151group_id INT NOT NULL, PRIMARY KEY(ddc1151user_id, ddc1151group_id))", $sql[1]);
  20. $this->assertEquals("CREATE INDEX IDX_88A3259AC5AD08A ON ddc1151user_ddc1151group (ddc1151user_id)", $sql[2]);
  21. $this->assertEquals("CREATE INDEX IDX_88A32597357E0B1 ON ddc1151user_ddc1151group (ddc1151group_id)", $sql[3]);
  22. $this->assertEquals("CREATE TABLE \"Group\" (id INT NOT NULL, PRIMARY KEY(id))", $sql[4]);
  23. $this->assertEquals("CREATE SEQUENCE User_id_seq INCREMENT BY 1 MINVALUE 1 START 1", $sql[5]);
  24. $this->assertEquals("CREATE SEQUENCE Group_id_seq INCREMENT BY 1 MINVALUE 1 START 1", $sql[6]);
  25. $this->assertEquals("ALTER TABLE ddc1151user_ddc1151group ADD CONSTRAINT FK_88A3259AC5AD08A FOREIGN KEY (ddc1151user_id) REFERENCES \"User\" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE", $sql[7]);
  26. $this->assertEquals("ALTER TABLE ddc1151user_ddc1151group ADD CONSTRAINT FK_88A32597357E0B1 FOREIGN KEY (ddc1151group_id) REFERENCES \"Group\" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE", $sql[8]);
  27. }
  28. }
  29. /**
  30. * @Entity
  31. * @Table(name="`User`")
  32. */
  33. class DDC1151User
  34. {
  35. /** @Id @Column(type="integer") @GeneratedValue */
  36. public $id;
  37. /** @ManyToMany(targetEntity="DDC1151Group") */
  38. public $groups;
  39. }
  40. /**
  41. * @Entity
  42. * @Table(name="`Group`")
  43. */
  44. class DDC1151Group
  45. {
  46. /** @Id @Column(type="integer") @GeneratedValue */
  47. public $id;
  48. }