1
0
mirror of synced 2025-01-09 18:47:10 +03:00
doctrine2/tests/Doctrine/Tests/ORM/Functional/SecondLevelCacheCompositePrimaryKeyTest.php
2013-12-16 11:05:04 -05:00

175 lines
7.1 KiB
PHP

<?php
namespace Doctrine\Tests\ORM\Functional;
use Doctrine\Tests\Models\Cache\City;
use Doctrine\Tests\Models\Cache\Flight;
/**
* @group DDC-2183
*/
class SecondLevelCacheCompositePrimaryKeyTest extends SecondLevelCacheAbstractTest
{
public function testPutAndLoadCompositPrimaryKeyEntities()
{
$this->loadFixturesCountries();
$this->loadFixturesStates();
$this->loadFixturesCities();
$this->_em->clear();
$this->evictRegions();
$leavingFromId = $this->cities[0]->getId();
$goingToId = $this->cities[1]->getId();
$leavingFrom = $this->_em->find(City::CLASSNAME, $leavingFromId);
$goingTo = $this->_em->find(City::CLASSNAME, $goingToId);
$flight = new Flight($leavingFrom, $goingTo);
$id = array(
'leavingFrom' => $leavingFromId,
'goingTo' => $goingToId,
);
$flight->setDeparture(new \DateTime('tomorrow'));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[0]->getId()));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[1]->getId()));
$this->_em->persist($flight);
$this->_em->flush();
$this->_em->clear();
$this->assertTrue($this->cache->containsEntity(Flight::CLASSNAME, $id));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[0]->getId()));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[1]->getId()));
$queryCount = $this->getCurrentQueryCount();
$flight = $this->_em->find(Flight::CLASSNAME, $id);
$leavingFrom = $flight->getLeavingFrom();
$goingTo = $flight->getGoingTo();
$this->assertInstanceOf(Flight::CLASSNAME, $flight);
$this->assertInstanceOf(City::CLASSNAME, $goingTo);
$this->assertInstanceOf(City::CLASSNAME, $leavingFrom);
$this->assertEquals($goingTo->getId(), $goingToId);
$this->assertEquals($leavingFrom->getId(), $leavingFromId);
$this->assertEquals($queryCount, $this->getCurrentQueryCount());
}
public function testRemoveCompositPrimaryKeyEntities()
{
$this->loadFixturesCountries();
$this->loadFixturesStates();
$this->loadFixturesCities();
$this->_em->clear();
$this->evictRegions();
$leavingFromId = $this->cities[0]->getId();
$goingToId = $this->cities[1]->getId();
$leavingFrom = $this->_em->find(City::CLASSNAME, $leavingFromId);
$goingTo = $this->_em->find(City::CLASSNAME, $goingToId);
$flight = new Flight($leavingFrom, $goingTo);
$id = array(
'leavingFrom' => $leavingFromId,
'goingTo' => $goingToId,
);
$flight->setDeparture(new \DateTime('tomorrow'));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[0]->getId()));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[1]->getId()));
$this->_em->persist($flight);
$this->_em->flush();
$this->assertTrue($this->cache->containsEntity(Flight::CLASSNAME, $id));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[0]->getId()));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[1]->getId()));
$this->_em->remove($flight);
$this->_em->flush();
$this->_em->clear();
$this->assertFalse($this->cache->containsEntity(Flight::CLASSNAME, $id));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[0]->getId()));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[1]->getId()));
$this->assertNull($this->_em->find(Flight::CLASSNAME, $id));
}
public function testUpdateCompositPrimaryKeyEntities()
{
$this->loadFixturesCountries();
$this->loadFixturesStates();
$this->loadFixturesCities();
$this->_em->clear();
$this->evictRegions();
$now = new \DateTime('now');
$tomorrow = new \DateTime('tomorrow');
$leavingFromId = $this->cities[0]->getId();
$goingToId = $this->cities[1]->getId();
$leavingFrom = $this->_em->find(City::CLASSNAME, $leavingFromId);
$goingTo = $this->_em->find(City::CLASSNAME, $goingToId);
$flight = new Flight($leavingFrom, $goingTo);
$id = array(
'leavingFrom' => $leavingFromId,
'goingTo' => $goingToId,
);
$flight->setDeparture($now);
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[0]->getId()));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[1]->getId()));
$this->_em->persist($flight);
$this->_em->flush();
$this->_em->clear();
$this->assertTrue($this->cache->containsEntity(Flight::CLASSNAME, $id));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[0]->getId()));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[1]->getId()));
$queryCount = $this->getCurrentQueryCount();
$flight = $this->_em->find(Flight::CLASSNAME, $id);
$leavingFrom = $flight->getLeavingFrom();
$goingTo = $flight->getGoingTo();
$this->assertInstanceOf(Flight::CLASSNAME, $flight);
$this->assertInstanceOf(City::CLASSNAME, $goingTo);
$this->assertInstanceOf(City::CLASSNAME, $leavingFrom);
$this->assertEquals($goingTo->getId(), $goingToId);
$this->assertEquals($flight->getDeparture(), $now);
$this->assertEquals($leavingFrom->getId(), $leavingFromId);
$this->assertEquals($leavingFrom->getId(), $leavingFromId);
$this->assertEquals($queryCount, $this->getCurrentQueryCount());
$flight->setDeparture($tomorrow);
$this->_em->persist($flight);
$this->_em->flush();
$this->_em->clear();
$this->assertTrue($this->cache->containsEntity(Flight::CLASSNAME, $id));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[0]->getId()));
$this->assertTrue($this->cache->containsEntity(City::CLASSNAME, $this->cities[1]->getId()));
$queryCount = $this->getCurrentQueryCount();
$flight = $this->_em->find(Flight::CLASSNAME, $id);
$leavingFrom = $flight->getLeavingFrom();
$goingTo = $flight->getGoingTo();
$this->assertInstanceOf(Flight::CLASSNAME, $flight);
$this->assertInstanceOf(City::CLASSNAME, $goingTo);
$this->assertInstanceOf(City::CLASSNAME, $leavingFrom);
$this->assertEquals($goingTo->getId(), $goingToId);
$this->assertEquals($flight->getDeparture(), $tomorrow);
$this->assertEquals($leavingFrom->getId(), $leavingFromId);
$this->assertEquals($leavingFrom->getId(), $leavingFromId);
$this->assertEquals($queryCount, $this->getCurrentQueryCount());
}
}