Added tests for ManyToMany associations and lazy collection to CTI entity
This commit is contained in:
parent
62be27b295
commit
223c47069e
@ -19,13 +19,13 @@ class CompanyFlexContract extends CompanyContract
|
|||||||
private $pricePerHour = 0;
|
private $pricePerHour = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ManyToMany(targetEntity="CompanyManager", inversedBy="managedContracts")
|
* @ManyToMany(targetEntity="CompanyManager", inversedBy="managedContracts", fetch="EXTRA_LAZY")
|
||||||
* @JoinTable(name="company_contract_managers",
|
* @JoinTable(name="company_contract_managers",
|
||||||
* joinColumns={@JoinColumn(name="contract_id", referencedColumnName="id", onDelete="CASCADE")},
|
* joinColumns={@JoinColumn(name="contract_id", referencedColumnName="id", onDelete="CASCADE")},
|
||||||
* inverseJoinColumns={@JoinColumn(name="employee_id", referencedColumnName="id")}
|
* inverseJoinColumns={@JoinColumn(name="employee_id", referencedColumnName="id")}
|
||||||
* )
|
* )
|
||||||
*/
|
*/
|
||||||
private $managers;
|
public $managers;
|
||||||
|
|
||||||
public function calculatePrice()
|
public function calculatePrice()
|
||||||
{
|
{
|
||||||
|
@ -34,7 +34,7 @@ class SQLFilterTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|||||||
{
|
{
|
||||||
private $userId, $userId2, $articleId, $articleId2;
|
private $userId, $userId2, $articleId, $articleId2;
|
||||||
private $groupId, $groupId2;
|
private $groupId, $groupId2;
|
||||||
private $managerId, $contractId1, $contractId2;
|
private $managerId, $managerId2, $contractId1, $contractId2;
|
||||||
|
|
||||||
public function setUp()
|
public function setUp()
|
||||||
{
|
{
|
||||||
@ -553,11 +553,7 @@ class SQLFilterTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|||||||
$this->assertEquals(2, count($this->_em->createQuery("SELECT cm FROM Doctrine\Tests\Models\Company\CompanyManager cm")->getResult()));
|
$this->assertEquals(2, count($this->_em->createQuery("SELECT cm FROM Doctrine\Tests\Models\Company\CompanyManager cm")->getResult()));
|
||||||
|
|
||||||
// Enable the filter
|
// Enable the filter
|
||||||
$conf = $this->_em->getConfiguration();
|
$this->usePersonNameFilter('Guilh%');
|
||||||
$conf->addFilter("person_name", "\Doctrine\Tests\ORM\Functional\CompanyPersonNameFilter");
|
|
||||||
$this->_em->getFilters()
|
|
||||||
->enable("person_name")
|
|
||||||
->setParameter("name", "Guilh%", DBALType::STRING);
|
|
||||||
|
|
||||||
$managers = $this->_em->getRepository('Doctrine\Tests\Models\Company\CompanyManager')->findAll();
|
$managers = $this->_em->getRepository('Doctrine\Tests\Models\Company\CompanyManager')->findAll();
|
||||||
$this->assertEquals(1, count($managers));
|
$this->assertEquals(1, count($managers));
|
||||||
@ -573,11 +569,7 @@ class SQLFilterTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|||||||
$this->assertEquals(3, count($this->_em->createQuery("SELECT cp FROM Doctrine\Tests\Models\Company\CompanyPerson cp")->getResult()));
|
$this->assertEquals(3, count($this->_em->createQuery("SELECT cp FROM Doctrine\Tests\Models\Company\CompanyPerson cp")->getResult()));
|
||||||
|
|
||||||
// Enable the filter
|
// Enable the filter
|
||||||
$conf = $this->_em->getConfiguration();
|
$this->usePersonNameFilter('Guilh%');
|
||||||
$conf->addFilter("person_name", "\Doctrine\Tests\ORM\Functional\CompanyPersonNameFilter");
|
|
||||||
$this->_em->getFilters()
|
|
||||||
->enable("person_name")
|
|
||||||
->setParameter("name", "Guilh%", DBALType::STRING);
|
|
||||||
|
|
||||||
$persons = $this->_em->getRepository('Doctrine\Tests\Models\Company\CompanyPerson')->findAll();
|
$persons = $this->_em->getRepository('Doctrine\Tests\Models\Company\CompanyPerson')->findAll();
|
||||||
$this->assertEquals(1, count($persons));
|
$this->assertEquals(1, count($persons));
|
||||||
@ -662,12 +654,21 @@ class SQLFilterTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|||||||
$manager->setDepartment('Doctrine');
|
$manager->setDepartment('Doctrine');
|
||||||
$manager->setTitle('Filterer');
|
$manager->setTitle('Filterer');
|
||||||
|
|
||||||
|
$manager2 = new CompanyManager;
|
||||||
|
$manager2->setName('Benjamin');
|
||||||
|
$manager2->setSalary(1337);
|
||||||
|
$manager2->setDepartment('Doctrine');
|
||||||
|
$manager2->setTitle('Maintainer');
|
||||||
|
|
||||||
$contract1->addManager($manager);
|
$contract1->addManager($manager);
|
||||||
$contract2->addManager($manager);
|
$contract2->addManager($manager);
|
||||||
$contract3->addManager($manager);
|
$contract3->addManager($manager);
|
||||||
$contract4->addManager($manager);
|
$contract4->addManager($manager);
|
||||||
|
|
||||||
|
$contract1->addManager($manager2);
|
||||||
|
|
||||||
$this->_em->persist($manager);
|
$this->_em->persist($manager);
|
||||||
|
$this->_em->persist($manager2);
|
||||||
$this->_em->persist($contract1);
|
$this->_em->persist($contract1);
|
||||||
$this->_em->persist($contract2);
|
$this->_em->persist($contract2);
|
||||||
$this->_em->persist($contract3);
|
$this->_em->persist($contract3);
|
||||||
@ -676,6 +677,7 @@ class SQLFilterTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|||||||
$this->_em->clear();
|
$this->_em->clear();
|
||||||
|
|
||||||
$this->managerId = $manager->getId();
|
$this->managerId = $manager->getId();
|
||||||
|
$this->managerId2 = $manager2->getId();
|
||||||
$this->contractId1 = $contract1->getId();
|
$this->contractId1 = $contract1->getId();
|
||||||
$this->contractId2 = $contract2->getId();
|
$this->contractId2 = $contract2->getId();
|
||||||
}
|
}
|
||||||
@ -740,6 +742,68 @@ class SQLFilterTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|||||||
$this->assertFalse($manager->managedContracts->isInitialized());
|
$this->assertFalse($manager->managedContracts->isInitialized());
|
||||||
$this->assertEquals(2, count($manager->managedContracts->slice(0, 10)));
|
$this->assertEquals(2, count($manager->managedContracts->slice(0, 10)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function usePersonNameFilter($name)
|
||||||
|
{
|
||||||
|
// Enable the filter
|
||||||
|
$conf = $this->_em->getConfiguration();
|
||||||
|
$conf->addFilter("person_name", "\Doctrine\Tests\ORM\Functional\CompanyPersonNameFilter");
|
||||||
|
$this->_em->getFilters()
|
||||||
|
->enable("person_name")
|
||||||
|
->setParameter("name", $name, DBALType::STRING);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testManyToMany_ExtraLazyCountWithFilterOnCTI()
|
||||||
|
{
|
||||||
|
$this->loadCompanySingleTableInheritanceFixtureData();
|
||||||
|
|
||||||
|
$contract = $this->_em->find('Doctrine\Tests\Models\Company\CompanyFlexUltraContract', $this->contractId1);
|
||||||
|
|
||||||
|
$this->assertFalse($contract->managers->isInitialized());
|
||||||
|
$this->assertEquals(2, count($contract->managers));
|
||||||
|
|
||||||
|
// Enable the filter
|
||||||
|
$this->usePersonNameFilter('Benjamin');
|
||||||
|
|
||||||
|
$this->assertFalse($contract->managers->isInitialized());
|
||||||
|
$this->assertEquals(1, count($contract->managers));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testManyToMany_ExtraLazyContainsWithFilterOnCTI()
|
||||||
|
{
|
||||||
|
$this->loadCompanySingleTableInheritanceFixtureData();
|
||||||
|
|
||||||
|
$contract = $this->_em->find('Doctrine\Tests\Models\Company\CompanyFlexUltraContract', $this->contractId1);
|
||||||
|
$manager1 = $this->_em->find('Doctrine\Tests\Models\Company\CompanyManager', $this->managerId);
|
||||||
|
$manager2 = $this->_em->find('Doctrine\Tests\Models\Company\CompanyManager', $this->managerId2);
|
||||||
|
|
||||||
|
$this->assertFalse($contract->managers->isInitialized());
|
||||||
|
$this->assertTrue($contract->managers->contains($manager1));
|
||||||
|
$this->assertTrue($contract->managers->contains($manager2));
|
||||||
|
|
||||||
|
// Enable the filter
|
||||||
|
$this->usePersonNameFilter('Benjamin');
|
||||||
|
|
||||||
|
$this->assertFalse($contract->managers->isInitialized());
|
||||||
|
$this->assertFalse($contract->managers->contains($manager1));
|
||||||
|
$this->assertTrue($contract->managers->contains($manager2));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testManyToMany_ExtraLazySliceWithFilterOnCTI()
|
||||||
|
{
|
||||||
|
$this->loadCompanySingleTableInheritanceFixtureData();
|
||||||
|
|
||||||
|
$contract = $this->_em->find('Doctrine\Tests\Models\Company\CompanyFlexUltraContract', $this->contractId1);
|
||||||
|
|
||||||
|
$this->assertFalse($contract->managers->isInitialized());
|
||||||
|
$this->assertEquals(2, count($contract->managers->slice(0, 10)));
|
||||||
|
|
||||||
|
// Enable the filter
|
||||||
|
$this->usePersonNameFilter('Benjamin');
|
||||||
|
|
||||||
|
$this->assertFalse($contract->managers->isInitialized());
|
||||||
|
$this->assertEquals(1, count($contract->managers->slice(0, 10)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MySoftDeleteFilter extends SQLFilter
|
class MySoftDeleteFilter extends SQLFilter
|
||||||
|
@ -158,6 +158,7 @@ abstract class OrmFunctionalTestCase extends OrmTestCase
|
|||||||
|
|
||||||
if (isset($this->_usedModelSets['company'])) {
|
if (isset($this->_usedModelSets['company'])) {
|
||||||
$conn->executeUpdate('DELETE FROM company_contract_employees');
|
$conn->executeUpdate('DELETE FROM company_contract_employees');
|
||||||
|
$conn->executeUpdate('DELETE FROM company_contract_managers');
|
||||||
$conn->executeUpdate('DELETE FROM company_contracts');
|
$conn->executeUpdate('DELETE FROM company_contracts');
|
||||||
$conn->executeUpdate('DELETE FROM company_persons_friends');
|
$conn->executeUpdate('DELETE FROM company_persons_friends');
|
||||||
$conn->executeUpdate('DELETE FROM company_managers');
|
$conn->executeUpdate('DELETE FROM company_managers');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user