From 824f62d3bb6a0ceb6f305cfdac2ae550230327e1 Mon Sep 17 00:00:00 2001
From: Guilliam Xavier <guilliamxavier@users.noreply.github.com>
Date: Sat, 25 Jun 2016 18:14:26 +0200
Subject: [PATCH] Add failing test for #5715 (unit test for MetadataFilter)

---
 .../ORM/Tools/Console/MetadataFilterTest.php  | 78 +++++++++++++++++++
 1 file changed, 78 insertions(+)
 create mode 100644 tests/Doctrine/Tests/ORM/Tools/Console/MetadataFilterTest.php

diff --git a/tests/Doctrine/Tests/ORM/Tools/Console/MetadataFilterTest.php b/tests/Doctrine/Tests/ORM/Tools/Console/MetadataFilterTest.php
new file mode 100644
index 000000000..7922f9006
--- /dev/null
+++ b/tests/Doctrine/Tests/ORM/Tools/Console/MetadataFilterTest.php
@@ -0,0 +1,78 @@
+<?php
+
+namespace Doctrine\Tests\ORM\Tools\Console;
+
+use Doctrine\ORM\Tools\Console\MetadataFilter;
+use Doctrine\ORM\Tools\DisconnectedClassMetadataFactory;
+
+/**
+ * Tests for {@see \Doctrine\ORM\Tools\Console\MetadataFilter}
+ *
+ * @covers \Doctrine\ORM\Tools\Console\MetadataFilter
+ */
+class MetadataFilterTest extends \Doctrine\Tests\OrmTestCase
+{
+    /**
+     * @var DisconnectedClassMetadataFactory
+     */
+    private $cmf;
+
+    protected function setUp()
+    {
+        parent::setUp();
+
+        $driver = $this->createAnnotationDriver();
+        $em     = $this->_getTestEntityManager();
+        $em->getConfiguration()->setMetadataDriverImpl($driver);
+
+        $this->cmf = new DisconnectedClassMetadataFactory();
+        $this->cmf->setEntityManager($em);
+    }
+
+    public function testFilterWithArray()
+    {
+        $originalMetadatas = array(
+            $metadataAaa = $this->cmf->getMetadataFor(MetadataFilterTestEntityAaa::CLASSNAME),
+            $metadataBbb = $this->cmf->getMetadataFor(MetadataFilterTestEntityBbb::CLASSNAME),
+            $metadataCcc = $this->cmf->getMetadataFor(MetadataFilterTestEntityCcc::CLASSNAME),
+        );
+
+        $metadatas = $originalMetadatas;
+        $metadatas = MetadataFilter::filter($metadatas, array(
+            'MetadataFilterTestEntityAaa',
+            'MetadataFilterTestEntityCcc',
+        ));
+
+        $this->assertContains($metadataAaa, $metadatas);
+        $this->assertNotContains($metadataBbb, $metadatas);
+        $this->assertContains($metadataCcc, $metadatas);
+        $this->assertCount(2, $metadatas);
+    }
+}
+
+/** @Entity */
+class MetadataFilterTestEntityAaa
+{
+    const CLASSNAME = __CLASS__;
+
+    /** @Id @Column(type="integer") */
+    protected $id;
+}
+
+/** @Entity */
+class MetadataFilterTestEntityBbb
+{
+    const CLASSNAME = __CLASS__;
+
+    /** @Id @Column(type="integer") */
+    protected $id;
+}
+
+/** @Entity */
+class MetadataFilterTestEntityCcc
+{
+    const CLASSNAME = __CLASS__;
+
+    /** @Id @Column(type="integer") */
+    protected $id;
+}