From 824f62d3bb6a0ceb6f305cfdac2ae550230327e1 Mon Sep 17 00:00:00 2001 From: Guilliam Xavier Date: Sat, 25 Jun 2016 18:14:26 +0200 Subject: [PATCH 1/4] 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 @@ +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; +} From a14432117ac830666e7427c0ce9ddc800d6c268e Mon Sep 17 00:00:00 2001 From: Guilliam Xavier Date: Sat, 25 Jun 2016 18:16:00 +0200 Subject: [PATCH 2/4] Fix MetadataFilter not testing filters after first --- lib/Doctrine/ORM/Tools/Console/MetadataFilter.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/Doctrine/ORM/Tools/Console/MetadataFilter.php b/lib/Doctrine/ORM/Tools/Console/MetadataFilter.php index 5a72b7d6d..cb55d68a6 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; } From 0416d5e036ac2cd94cfd34f43b1e62a759feea46 Mon Sep 17 00:00:00 2001 From: Guilliam Xavier Date: Sat, 25 Jun 2016 18:16:44 +0200 Subject: [PATCH 3/4] Add more basic tests for MetadataFilter --- .../ORM/Tools/Console/MetadataFilterTest.php | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tests/Doctrine/Tests/ORM/Tools/Console/MetadataFilterTest.php b/tests/Doctrine/Tests/ORM/Tools/Console/MetadataFilterTest.php index 7922f9006..fac23bc01 100644 --- a/tests/Doctrine/Tests/ORM/Tools/Console/MetadataFilterTest.php +++ b/tests/Doctrine/Tests/ORM/Tools/Console/MetadataFilterTest.php @@ -29,6 +29,54 @@ class MetadataFilterTest extends \Doctrine\Tests\OrmTestCase $this->cmf->setEntityManager($em); } + public function testFilterWithEmptyArray() + { + $originalMetadatas = array( + $metadataAaa = $this->cmf->getMetadataFor(MetadataFilterTestEntityAaa::CLASSNAME), + $metadataBbb = $this->cmf->getMetadataFor(MetadataFilterTestEntityBbb::CLASSNAME), + ); + + $metadatas = $originalMetadatas; + $metadatas = MetadataFilter::filter($metadatas, array()); + + $this->assertContains($metadataAaa, $metadatas); + $this->assertContains($metadataBbb, $metadatas); + $this->assertCount(count($originalMetadatas), $metadatas); + } + + public function testFilterWithString() + { + $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, '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 testFilterWithArray() { $originalMetadatas = array( From 57bb46ca9df82b139d514e6751055db9dff5f89b Mon Sep 17 00:00:00 2001 From: Guilliam Xavier Date: Sat, 25 Jun 2016 18:21:42 +0200 Subject: [PATCH 4/4] Add regex tests for MetadataFilter (PR #507) --- .../ORM/Tools/Console/MetadataFilterTest.php | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/tests/Doctrine/Tests/ORM/Tools/Console/MetadataFilterTest.php b/tests/Doctrine/Tests/ORM/Tools/Console/MetadataFilterTest.php index fac23bc01..aed184e4c 100644 --- a/tests/Doctrine/Tests/ORM/Tools/Console/MetadataFilterTest.php +++ b/tests/Doctrine/Tests/ORM/Tools/Console/MetadataFilterTest.php @@ -77,6 +77,23 @@ class MetadataFilterTest extends \Doctrine\Tests\OrmTestCase $this->assertCount(1, $metadatas); } + public function testFilterWithString2() + { + $originalMetadatas = array( + $metadataFoo = $this->cmf->getMetadataFor(MetadataFilterTestEntityFoo::CLASSNAME), + $metadataFooBar = $this->cmf->getMetadataFor(MetadataFilterTestEntityFooBar::CLASSNAME), + $metadataBar = $this->cmf->getMetadataFor(MetadataFilterTestEntityBar::CLASSNAME), + ); + + $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() { $originalMetadatas = array( @@ -96,6 +113,31 @@ class MetadataFilterTest extends \Doctrine\Tests\OrmTestCase $this->assertContains($metadataCcc, $metadatas); $this->assertCount(2, $metadatas); } + + public function testFilterWithRegex() + { + $originalMetadatas = array( + $metadataFoo = $this->cmf->getMetadataFor(MetadataFilterTestEntityFoo::CLASSNAME), + $metadataFooBar = $this->cmf->getMetadataFor(MetadataFilterTestEntityFooBar::CLASSNAME), + $metadataBar = $this->cmf->getMetadataFor(MetadataFilterTestEntityBar::CLASSNAME), + ); + + $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 */ @@ -124,3 +166,30 @@ class MetadataFilterTestEntityCcc /** @Id @Column(type="integer") */ protected $id; } + +/** @Entity */ +class MetadataFilterTestEntityFoo +{ + const CLASSNAME = __CLASS__; + + /** @Id @Column(type="integer") */ + protected $id; +} + +/** @Entity */ +class MetadataFilterTestEntityBar +{ + const CLASSNAME = __CLASS__; + + /** @Id @Column(type="integer") */ + protected $id; +} + +/** @Entity */ +class MetadataFilterTestEntityFooBar +{ + const CLASSNAME = __CLASS__; + + /** @Id @Column(type="integer") */ + protected $id; +}