. */ /** * Doctrine_Query_Cache_TestCase * * @package Doctrine * @author Konsta Vesterinen * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @category Object Relational Mapping * @link www.phpdoctrine.com * @since 1.0 * @version $Revision$ */ class Doctrine_Query_Cache_TestCase extends Doctrine_UnitTestCase { public function testQueryCacheAddsQueryIntoCache() { $cache = new Doctrine_Cache_Array(); $q = new Doctrine_Query(); $q->select('u.name')->from('User u')->leftJoin('u.Phonenumber p')->where('u.name = ?', 'walhala') ->useQueryCache($cache); $coll = $q->execute(); $this->assertEqual($cache->count(), 1); $this->assertEqual(count($coll), 0); $coll = $q->execute(); $this->assertEqual($cache->count(), 1); $this->assertEqual(count($coll), 0); } public function testQueryCacheWorksWithGlobalConfiguration() { $cache = new Doctrine_Cache_Array(); Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_QUERY_CACHE, $cache); $q = new Doctrine_Query(); $q->select('u.name')->from('User u')->leftJoin('u.Phonenumber p'); $coll = $q->execute(); $this->assertEqual($cache->count(), 1); $this->assertEqual(count($coll), 8); $coll = $q->execute(); $this->assertEqual($cache->count(), 1); $this->assertEqual(count($coll), 8); } public function testResultSetCacheAddsResultSetsIntoCache() { $q = new Doctrine_Query(); $cache = new Doctrine_Cache_Array(); $q->useCache($cache)->select('u.name')->from('User u'); $coll = $q->execute(); $this->assertEqual($cache->count(), 1); $this->assertEqual(count($coll), 8); $coll = $q->execute(); $this->assertEqual($cache->count(), 1); $this->assertEqual(count($coll), 8); } public function testResultSetCacheSupportsQueriesWithJoins() { $q = new Doctrine_Query(); $cache = new Doctrine_Cache_Array(); $q->useCache($cache); $q->select('u.name')->from('User u')->leftJoin('u.Phonenumber p'); $coll = $q->execute(); $this->assertEqual($cache->count(), 1); $this->assertEqual(count($coll), 8); $coll = $q->execute(); $this->assertEqual($cache->count(), 1); $this->assertEqual(count($coll), 8); } public function testResultSetCacheSupportsPreparedStatements() { $q = new Doctrine_Query(); $cache = new Doctrine_Cache_Array(); $q->useCache($cache); $q->select('u.name')->from('User u')->leftJoin('u.Phonenumber p') ->where('u.id = ?'); $coll = $q->execute(array(5)); $this->assertEqual($cache->count(), 1); $this->assertEqual(count($coll), 1); $coll = $q->execute(array(5)); $this->assertEqual($cache->count(), 1); $this->assertEqual(count($coll), 1); } public function testUseCacheSupportsBooleanTrueAsParameter() { $q = new Doctrine_Query(); $cache = new Doctrine_Cache_Array(); $this->conn->setAttribute(Doctrine::ATTR_CACHE, $cache); $q->useCache(true); $q->select('u.name')->from('User u')->leftJoin('u.Phonenumber p') ->where('u.id = ?'); $coll = $q->execute(array(5)); $this->assertEqual($cache->count(), 1); $this->assertEqual(count($coll), 1); $coll = $q->execute(array(5)); $this->assertEqual($cache->count(), 1); $this->assertEqual(count($coll), 1); $this->conn->setAttribute(Doctrine::ATTR_CACHE, null); } }