Rajout de doctrine/orm
[zf2.biz/application_blanche.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Functional / Ticket / DDC719Test.php
diff --git a/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC719Test.php b/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC719Test.php
new file mode 100644 (file)
index 0000000..6bd18ef
--- /dev/null
@@ -0,0 +1,112 @@
+<?php
+
+namespace Doctrine\Tests\ORM\Functional\Ticket;
+
+require_once __DIR__ . '/../../../TestInit.php';
+
+class DDC719Test extends \Doctrine\Tests\OrmFunctionalTestCase
+{
+    protected function setUp()
+    {
+        parent::setUp();
+        //$this->_em->getConnection()->getConfiguration()->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger);
+        $this->_schemaTool->createSchema(array(
+            $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC719Group'),
+        ));
+    }
+
+    public function testIsEmptySqlGeneration()
+    {
+        $q = $this->_em->createQuery('SELECT g, c FROM Doctrine\Tests\ORM\Functional\Ticket\DDC719Group g LEFT JOIN g.children c  WHERE g.parents IS EMPTY');
+
+        $this->assertEquals(
+            strtolower('SELECT g0_.name AS name0, g0_.description AS description1, g0_.id AS id2, g1_.name AS name3, g1_.description AS description4, g1_.id AS id5 FROM groups g0_ LEFT JOIN groups_groups g2_ ON g0_.id = g2_.parent_id LEFT JOIN groups g1_ ON g1_.id = g2_.child_id WHERE (SELECT COUNT(*) FROM groups_groups g3_ WHERE g3_.child_id = g0_.id) = 0'),
+            strtolower($q->getSQL())
+        );
+    }
+}
+
+/**
+ * @MappedSuperclass
+ */
+class Entity
+{
+    /**
+     * @Id @GeneratedValue
+     * @Column(type="integer")
+     */
+    protected $id;
+
+    public function getId() { return $this->id; }
+}
+
+/**
+ * @Entity
+ * @Table(name="groups")
+ */
+class DDC719Group extends Entity {
+    /** @Column(type="string", nullable=false) */
+    protected $name;
+
+       /** @Column(type="string", nullable=true) */
+       protected $description;
+
+       /**
+        * @ManyToMany(targetEntity="DDC719Group", inversedBy="parents")
+        * @JoinTable(name="groups_groups",
+        *              joinColumns={@JoinColumn(name="parent_id", referencedColumnName="id")},
+        *              inverseJoinColumns={@JoinColumn(name="child_id", referencedColumnName="id")}
+        * )
+        */
+       protected $children = NULL;
+
+       /**
+        * @ManyToMany(targetEntity="DDC719Group", mappedBy="children")
+        */
+       protected $parents = NULL;
+
+       /**
+        * construct
+        */
+       public function __construct() {
+               parent::__construct();
+
+               $this->channels = new ArrayCollection();
+               $this->children = new ArrayCollection();
+               $this->parents = new ArrayCollection();
+       }
+
+       /**
+        * adds group as new child
+        *
+        * @param Group $child
+        */
+       public function addGroup(Group $child) {
+        if ( ! $this->children->contains($child)) {
+            $this->children->add($child);
+            $child->addGroup($this);
+        }
+       }
+
+       /**
+        * adds channel as new child
+        *
+        * @param Channel $child
+        */
+       public function addChannel(Channel $child) {
+        if ( ! $this->channels->contains($child)) {
+            $this->channels->add($child);
+        }
+       }
+
+       /**
+        * getter & setter
+        */
+       public function getName() { return $this->name; }
+       public function setName($name) { $this->name = $name; }
+       public function getDescription() { return $this->description; }
+       public function setDescription($description) { $this->description = $description; }
+       public function getChildren() { return $this->children; }
+       public function getParents() { return $this->parents; }
+       public function getChannels() { return $this->channels; }
+}
\ No newline at end of file