1
0
mirror of synced 2025-02-02 13:31:45 +03:00

Merge branch 'fix/#5715-fix-metadata-filtering-in-cli-tools-2.5' into 2.5

Close #5715
This commit is contained in:
Marco Pivetta 2017-06-21 06:15:42 +02:00
commit ad5397b581
No known key found for this signature in database
GPG Key ID: 4167D3337FD9D629
2 changed files with 195 additions and 4 deletions

View File

@ -84,10 +84,6 @@ class MetadataFilter extends \FilterIterator implements \Countable
);
}
if ($pregResult === 0) {
return false;
}
if ($pregResult) {
return true;
}

View File

@ -0,0 +1,195 @@
<?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 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 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(
$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);
}
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 */
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;
}
/** @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;
}