CacheBehaviorTestCase::testUseDifferentCacheEngine PHP Method

testUseDifferentCacheEngine() public method

    function testUseDifferentCacheEngine()
    {
        $this->skipIf(!class_exists('Memcache'), 'Memcache is not installed, skipping test');
        Cache::config('cacherMemcache', array('duration' => '+1 days', 'engine' => 'Memcache', 'prefix' => Inflector::slug(APP_DIR) . '_cacher_test_'));
        $this->CacheData->Behaviors->attach('Cacher.Cache', array('config' => 'cacherMemcache', 'clearOnDelete' => false));
        $results = $this->CacheData->find('all', array('conditions' => array('CacheData.name LIKE' => '%cache%')));
        $results = Set::extract('/CacheData/name', $results);
        $expected = array('A Cached Thing', 'Cache behavior');
        $this->assertEquals($results, $expected);
        // test that it's pulling from the cache
        $this->CacheData->delete(1);
        $results = $this->CacheData->find('all', array('conditions' => array('CacheData.name LIKE' => '%cache%')));
        $results = Set::extract('/CacheData/name', $results);
        $expected = array('A Cached Thing', 'Cache behavior');
        $this->assertEquals($results, $expected);
        $ds = ConnectionManager::getDataSource('cacher');
        $this->assertEquals($ds->config['config'], 'cacherMemcache');
        $map = Cache::read('map', 'cacherMemcache');
        $this->assertTrue($map !== false);
        $this->assertTrue(isset($map[$ds->source->configKeyName][$this->CacheData->alias][0]));
        $cache = Cache::read($map[$ds->source->configKeyName][$this->CacheData->alias][0], 'cacherMemcache');
        $this->assertTrue($cache !== false);
        $this->CacheData->clearCache();
        $map = Cache::read('map', 'cacherMemcache');
        $this->assertTrue(empty($map[$ds->source->configKeyName][$this->CacheData->alias]));
        Cache::drop('cacherMemcache');
    }