1
0
mirror of synced 2024-12-14 15:16:04 +03:00
doctrine2/tests/Doctrine/Tests/ORM/Functional/SecondLevelCacheAbstractTest.php
2013-12-16 11:05:04 -05:00

205 lines
6.2 KiB
PHP

<?php
namespace Doctrine\Tests\ORM\Functional;
use Doctrine\Tests\OrmFunctionalTestCase;
use Doctrine\Tests\Models\Cache\Country;
use Doctrine\Tests\Models\Cache\State;
use Doctrine\Tests\Models\Cache\City;
use Doctrine\Tests\Models\Cache\Traveler;
use Doctrine\Tests\Models\Cache\Travel;
use Doctrine\Tests\Models\Cache\Restaurant;
use Doctrine\Tests\Models\Cache\Beach;
use Doctrine\Tests\Models\Cache\Bar;
use Doctrine\Tests\Models\Cache\AttractionContactInfo;
use Doctrine\Tests\Models\Cache\AttractionLocationInfo;
require_once __DIR__ . '/../../TestInit.php';
/**
* @group DDC-2183
*/
abstract class SecondLevelCacheAbstractTest extends OrmFunctionalTestCase
{
protected $countries = array();
protected $states = array();
protected $cities = array();
protected $travels = array();
protected $travelers = array();
protected $attractions = array();
protected $attractionsInfo = array();
/**
* @var \Doctrine\ORM\Cache
*/
protected $cache;
protected function setUp()
{
$this->enableSecondLevelCache();
$this->useModelSet('cache');
parent::setUp();
$this->cache = $this->_em->getCache();
}
protected function loadFixturesCountries()
{
$brazil = new Country("Brazil");
$germany = new Country("Germany");
$this->countries[] = $brazil;
$this->countries[] = $germany;
$this->_em->persist($brazil);
$this->_em->persist($germany);
$this->_em->flush();
}
protected function loadFixturesStates()
{
$saopaulo = new State("São Paulo", $this->countries[0]);
$rio = new State("Rio de janeiro", $this->countries[0]);
$berlin = new State("Berlin", $this->countries[1]);
$bavaria = new State("Bavaria", $this->countries[1]);
$this->states[] = $saopaulo;
$this->states[] = $rio;
$this->states[] = $bavaria;
$this->states[] = $berlin;
$this->_em->persist($saopaulo);
$this->_em->persist($rio);
$this->_em->persist($bavaria);
$this->_em->persist($berlin);
$this->_em->flush();
}
protected function loadFixturesCities()
{
$saopaulo = new City("São Paulo", $this->states[0]);
$rio = new City("Rio de janeiro", $this->states[0]);
$berlin = new City("Berlin", $this->states[1]);
$munich = new City("Munich", $this->states[1]);
$this->states[0]->addCity($saopaulo);
$this->states[0]->addCity($rio);
$this->states[1]->addCity($berlin);
$this->states[1]->addCity($berlin);
$this->cities[] = $saopaulo;
$this->cities[] = $rio;
$this->cities[] = $munich;
$this->cities[] = $berlin;
$this->_em->persist($saopaulo);
$this->_em->persist($rio);
$this->_em->persist($munich);
$this->_em->persist($berlin);
$this->_em->flush();
}
protected function loadFixturesTraveler()
{
$t1 = new Traveler("Fabio Silva");
$t2 = new Traveler("Doctrine Bot");
$this->_em->persist($t1);
$this->_em->persist($t2);
$this->travelers[] = $t1;
$this->travelers[] = $t2;
$this->_em->flush();
}
protected function loadFixturesTravels()
{
$t1 = new Travel($this->travelers[0]);
$t2 = new Travel($this->travelers[1]);
$t1->addVisitedCity($this->cities[0]);
$t1->addVisitedCity($this->cities[1]);
$t1->addVisitedCity($this->cities[2]);
$t2->addVisitedCity($this->cities[1]);
$t2->addVisitedCity($this->cities[3]);
$this->_em->persist($t1);
$this->_em->persist($t2);
$this->travels[] = $t1;
$this->travels[] = $t2;
$this->_em->flush();
}
protected function loadFixturesAttractions()
{
$this->attractions[] = new Bar('Boteco São Bento', $this->cities[0]);
$this->attractions[] = new Bar('Prainha Paulista', $this->cities[0]);
$this->attractions[] = new Beach('Copacabana', $this->cities[1]);
$this->attractions[] = new Beach('Ipanema', $this->cities[1]);
$this->attractions[] = new Bar('Schneider Weisse', $this->cities[2]);
$this->attractions[] = new Restaurant('Reinstoff', $this->cities[3]);
$this->attractions[] = new Restaurant('Fischers Fritz', $this->cities[3]);
$this->cities[0]->addAttraction($this->attractions[0]);
$this->cities[0]->addAttraction($this->attractions[1]);
$this->cities[1]->addAttraction($this->attractions[2]);
$this->cities[1]->addAttraction($this->attractions[3]);
$this->cities[2]->addAttraction($this->attractions[4]);
$this->cities[3]->addAttraction($this->attractions[5]);
$this->cities[3]->addAttraction($this->attractions[6]);
foreach ($this->attractions as $attraction) {
$this->_em->persist($attraction);
}
$this->_em->flush();
}
protected function loadFixturesAttractionsInfo()
{
$this->attractionsInfo[] = new AttractionContactInfo('0000-0000', $this->attractions[0]);
$this->attractionsInfo[] = new AttractionContactInfo('1111-1111', $this->attractions[1]);
$this->attractionsInfo[] = new AttractionLocationInfo('Some St 1', $this->attractions[2]);
$this->attractionsInfo[] = new AttractionLocationInfo('Some St 2', $this->attractions[3]);
foreach ($this->attractionsInfo as $info) {
$this->_em->persist($info);
}
$this->_em->flush();
}
protected function getEntityRegion($className)
{
return $this->cache->getEntityCacheRegion($className)->getName();
}
protected function getCollectionRegion($className, $association)
{
return $this->cache->getCollectionCacheRegion($className, $association)->getName();
}
protected function getDefaultQueryRegionName()
{
return $this->cache->getQueryCache()->getRegion()->getName();
}
protected function evictRegions()
{
$this->cache->evictQueryRegions();
$this->cache->evictEntityRegions();
$this->cache->evictCollectionRegions();
}
}