Blame | Last modification | View Log | RSS feed
<?php/*** Toolbar facade tests.** PHP 5** CakePHP(tm) : Rapid Development Framework (http://cakephp.org)* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)** Licensed under The MIT License* Redistributions of files must retain the above copyright notice.** @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)* @link http://cakephp.org CakePHP(tm) Project* @since DebugKit 0.1* @license http://www.opensource.org/licenses/mit-license.php MIT License*/App::uses('View', 'View');App::uses('Controller', 'Controller');App::uses('Helper', 'View');App::uses('ToolbarHelper', 'DebugKit.View/Helper');App::uses('ConnectionManager', 'Manager');/*** Class MockBackendHelper** @since DebugKit 0.1*/class MockBackendHelper extends Helper {}/*** Class ToolbarHelperTestCase**/class ToolbarHelperTestCase extends CakeTestCase {/*** Fixtures** @var array*/public $fixtures = array('core.post');/*** setUp** @return void*/public function setUp() {parent::setUp();$db = ConnectionManager::getDatasource('test');$db->fullDebug = true;Configure::write('Cache.disable', false);Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));Router::parse('/');$this->Controller = new Controller(null);$this->View = new View($this->Controller);$this->Toolbar = new ToolbarHelper($this->View, array('output' => 'MockBackendHelper','cacheKey' => 'debug_kit_toolbar_test_case','cacheConfig' => 'default'));$this->Toolbar->MockBackend = $this->getMock('Helper', array('testMethod'), array($this->View));$this->_viewPaths = App::path('views');App::build(array('View' => array(CAKE_CORE_INCLUDE_PATH . DS . 'Cake' . DS . 'Test' . DS . 'test_app' . DS . 'View' . DS,APP . 'Plugin' . DS . 'DebugKit' . DS . 'View' . DS,CAKE_CORE_INCLUDE_PATH . DS . 'Cake' . DS . 'View' . DS)), true);}/*** tearDown** @return void*/public function tearDown() {parent::tearDown();Cache::delete('debug_kit_toolbar_test_case', 'default');unset($this->Toolbar, $this->Controller);}/*** test cache writing for views.** @return void*/public function testCacheWrite() {$result = $this->Toolbar->writeCache('test', array('stuff', 'to', 'cache'));$this->assertTrue($result);}/*** Ensure that the cache writing only affects the* top most level of the history stack. As this is where the current request is stored.** @return void*/public function testOnlyWritingToFirstElement() {$values = array(array('test' => array('content' => array('first', 'values'))),array('test' => array('content' => array('second', 'values'))),);Cache::write('debug_kit_toolbar_test_case', $values, 'default');$this->Toolbar->writeCache('test', array('new', 'values'));$result = $this->Toolbar->readCache('test');$this->assertEquals($result, array('new', 'values'));$result = $this->Toolbar->readCache('test', 1);$this->assertEquals($result, array('second', 'values'));}/*** test cache reading for views** @return void*/public function testCacheRead() {$result = $this->Toolbar->writeCache('test', array('stuff', 'to', 'cache'));$this->assertTrue($result, 'Cache write failed %s');$result = $this->Toolbar->readCache('test');$this->assertEquals($result, array('stuff', 'to', 'cache'), 'Cache value is wrong %s');$result = $this->Toolbar->writeCache('test', array('new', 'stuff'));$this->assertTrue($result, 'Cache write failed %s');$result = $this->Toolbar->readCache('test');$this->assertEquals($result, array('new', 'stuff'), 'Cache value is wrong %s');}/*** Test that reading/writing doesn't work with no cache config.** @return void*/public function testNoCacheConfigPresent() {$this->Toolbar = new ToolbarHelper($this->View, array('output' => 'MockBackendHelper'));$result = $this->Toolbar->writeCache('test', array('stuff', 'to', 'cache'));$this->assertFalse($result, 'Writing to cache succeeded with no cache config %s');$result = $this->Toolbar->readCache('test');$this->assertFalse($result, 'Reading cache succeeded with no cache config %s');}/*** ensure that getQueryLogs works and writes to the cache so the history panel will* work.** @return void*/public function testGetQueryLogs() {$model = new CakeTestModel(array('table' => 'posts', 'alias' => 'Post'));$model->find('all');$model->find('first');$result = $this->Toolbar->getQueryLogs($model->useDbConfig, array('cache' => false));$this->assertTrue(is_array($result));$this->assertTrue(count($result) >= 2, 'Should be more than 2 queries in the log %s');$this->assertTrue(isset($result['queries'][0]['actions']));$model->find('first');Cache::delete('debug_kit_toolbar_test_case', 'default');$result = $this->Toolbar->getQueryLogs($model->useDbConfig, array('cache' => true));$cached = $this->Toolbar->readCache('sql_log');$this->assertTrue(isset($cached[$model->useDbConfig]));$this->assertEquals($cached[$model->useDbConfig]['queries'][0], $result['queries'][0]);}}