diff --git a/lib/Doctrine/ORM/Tools/Console/MetadataFilter.php b/lib/Doctrine/ORM/Tools/Console/MetadataFilter.php index f480c3063..88357e35c 100644 --- a/lib/Doctrine/ORM/Tools/Console/MetadataFilter.php +++ b/lib/Doctrine/ORM/Tools/Console/MetadataFilter.php @@ -84,10 +84,6 @@ class MetadataFilter extends \FilterIterator implements \Countable ); } - if ($pregResult === 0) { - return false; - } - if ($pregResult) { return true; } 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..24f3b54a3 --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Tools/Console/MetadataFilterTest.php @@ -0,0 +1,184 @@ +createAnnotationDriver(); + $em = $this->_getTestEntityManager(); + + $em->getConfiguration()->setMetadataDriverImpl($driver); + + $this->cmf = new DisconnectedClassMetadataFactory(); + $this->cmf->setEntityManager($em); + } + + public function testFilterWithEmptyArray() : void + { + $originalMetadatas = [ + $metadataAaa = $this->cmf->getMetadataFor(MetadataFilterTestEntityAaa::class), + $metadataBbb = $this->cmf->getMetadataFor(MetadataFilterTestEntityBbb::class), + ]; + + $metadatas = $originalMetadatas; + $metadatas = MetadataFilter::filter($metadatas, []); + + $this->assertContains($metadataAaa, $metadatas); + $this->assertContains($metadataBbb, $metadatas); + $this->assertCount(count($originalMetadatas), $metadatas); + } + + public function testFilterWithString() : void + { + $originalMetadatas = [ + $metadataAaa = $this->cmf->getMetadataFor(MetadataFilterTestEntityAaa::class), + $metadataBbb = $this->cmf->getMetadataFor(MetadataFilterTestEntityBbb::class), + $metadataCcc = $this->cmf->getMetadataFor(MetadataFilterTestEntityCcc::class), + ]; + + $metadatas = $originalMetadatas; + $metadatas = MetadataFilter::filter($metadatas, 'MetadataFilterTestEntityAaa'); + + $this->assertContains($metadataAaa, $metadatas); + $this->assertNotContains($metadataBbb, $metadatas); + $this->assertNotContains($metadataCcc, $metadatas); + $this->assertCount(1, $metadatas); + + $metadatas = $originalMetadatas; + $metadatas = MetadataFilter::filter($metadatas, 'MetadataFilterTestEntityBbb'); + + $this->assertNotContains($metadataAaa, $metadatas); + $this->assertContains($metadataBbb, $metadatas); + $this->assertNotContains($metadataCcc, $metadatas); + $this->assertCount(1, $metadatas); + + $metadatas = $originalMetadatas; + $metadatas = MetadataFilter::filter($metadatas, 'MetadataFilterTestEntityCcc'); + + $this->assertNotContains($metadataAaa, $metadatas); + $this->assertNotContains($metadataBbb, $metadatas); + $this->assertContains($metadataCcc, $metadatas); + $this->assertCount(1, $metadatas); + } + + public function testFilterWithString2() : void + { + $originalMetadatas = [ + $metadataFoo = $this->cmf->getMetadataFor(MetadataFilterTestEntityFoo::class), + $metadataFooBar = $this->cmf->getMetadataFor(MetadataFilterTestEntityFooBar::class), + $metadataBar = $this->cmf->getMetadataFor(MetadataFilterTestEntityBar::class), + ]; + + $metadatas = $originalMetadatas; + $metadatas = MetadataFilter::filter($metadatas, 'MetadataFilterTestEntityFoo'); + + $this->assertContains($metadataFoo, $metadatas); + $this->assertContains($metadataFooBar, $metadatas); + $this->assertNotContains($metadataBar, $metadatas); + $this->assertCount(2, $metadatas); + } + + public function testFilterWithArray() : void + { + $originalMetadatas = [ + $metadataAaa = $this->cmf->getMetadataFor(MetadataFilterTestEntityAaa::class), + $metadataBbb = $this->cmf->getMetadataFor(MetadataFilterTestEntityBbb::class), + $metadataCcc = $this->cmf->getMetadataFor(MetadataFilterTestEntityCcc::class), + ]; + + $metadatas = $originalMetadatas; + $metadatas = MetadataFilter::filter($metadatas, [ + 'MetadataFilterTestEntityAaa', + 'MetadataFilterTestEntityCcc', + ]); + + $this->assertContains($metadataAaa, $metadatas); + $this->assertNotContains($metadataBbb, $metadatas); + $this->assertContains($metadataCcc, $metadatas); + $this->assertCount(2, $metadatas); + } + + public function testFilterWithRegex() : void + { + $originalMetadatas = [ + $metadataFoo = $this->cmf->getMetadataFor(MetadataFilterTestEntityFoo::class), + $metadataFooBar = $this->cmf->getMetadataFor(MetadataFilterTestEntityFooBar::class), + $metadataBar = $this->cmf->getMetadataFor(MetadataFilterTestEntityBar::class), + ]; + + $metadatas = $originalMetadatas; + $metadatas = MetadataFilter::filter($metadatas, 'Foo$'); + + $this->assertContains($metadataFoo, $metadatas); + $this->assertNotContains($metadataFooBar, $metadatas); + $this->assertNotContains($metadataBar, $metadatas); + $this->assertCount(1, $metadatas); + + $metadatas = $originalMetadatas; + $metadatas = MetadataFilter::filter($metadatas, 'Bar$'); + + $this->assertNotContains($metadataFoo, $metadatas); + $this->assertContains($metadataFooBar, $metadatas); + $this->assertContains($metadataBar, $metadatas); + $this->assertCount(2, $metadatas); + } +} + +/** @Entity */ +class MetadataFilterTestEntityAaa +{ + /** @Id @Column */ + protected $id; +} + +/** @Entity */ +class MetadataFilterTestEntityBbb +{ + /** @Id @Column */ + protected $id; +} + +/** @Entity */ +class MetadataFilterTestEntityCcc +{ + /** @Id @Column */ + protected $id; +} + +/** @Entity */ +class MetadataFilterTestEntityFoo +{ + /** @Id @Column */ + protected $id; +} + +/** @Entity */ +class MetadataFilterTestEntityBar +{ + /** @Id @Column */ + protected $id; +} + +/** @Entity */ +class MetadataFilterTestEntityFooBar +{ + /** @Id @Column */ + protected $id; +}