* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) * * Licensed under The MIT License * For full copyright and license information, please see the LICENSE.txt * Redistributions of files must retain the above copyright notice * * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) * @link http://book.cakephp.org/2.0/en/development/testing.html CakePHP(tm) Tests * @since 3.0.0 * @license http://www.opensource.org/licenses/mit-license.php MIT License */ namespace Cake\Test\TestCase\View; use Cake\Controller\Controller; use Cake\Core\Configure; use Cake\Core\Plugin; use Cake\Event\EventManager; use Cake\TestSuite\TestCase; use Cake\View\Cell; use Cake\View\CellTrait; /** * CellTest class. * * For testing both View\Cell & Utility\CellTrait */ class CellTest extends TestCase { /** * setUp method * * @return void */ public function setUp() { parent::setUp(); Configure::write('App.namespace', 'TestApp'); Configure::write('debug', 2); Plugin::load('TestPlugin'); $request = $this->getMock('Cake\Network\Request'); $response = $this->getMock('Cake\Network\Response'); $this->View = new \Cake\View\View($request, $response); } /** * tearDown method * * @return void */ public function tearDown() { parent::tearDown(); Plugin::unload('TestPlugin'); unset($this->View); } /** * Tests basic cell rendering. * * @return void */ public function testCellRender() { $cell = $this->View->cell('Articles::teaserList'); $render = "{$cell}"; $this->assertTrue( strpos($render, '

Lorem ipsum

') !== false && strpos($render, '

Usectetur adipiscing eli

') !== false && strpos($render, '

Topis semper blandit eu non

') !== false && strpos($render, '

Suspendisse gravida neque

') !== false ); } /** * Tests that we are able pass multiple arguments to cell methods. * * @return void */ public function testCellWithArguments() { $cell = $this->View->cell('Articles::doEcho', ['msg1' => 'dummy', 'msg2' => ' message']); $render = "{$cell}"; $this->assertTrue(strpos($render, 'dummy message') !== false); } /** * Tests that cell runs default action when none is provided. * * @return void */ public function testDefaultCellAction() { $appCell = $this->View->cell('Articles'); $this->assertTrue(strpos("{$appCell}", 'dummy') !== false); $pluginCell = $this->View->cell('TestPlugin.Dummy'); $this->assertTrue(strpos("{$pluginCell}", 'dummy') !== false); } /** * Tests manual render() invocation. * * @return void */ public function testCellManualRender() { $cell = $this->View->cell('Articles::doEcho', ['msg1' => 'dummy', 'msg2' => ' message']); $this->assertTrue(strpos($cell->render(), 'dummy message') !== false); $cell->teaserList(); $this->assertTrue(strpos($cell->render('teaser_list'), '

Lorem ipsum

') !== false); } /** * Tests that using plugin's cells works. * * @return void */ public function testPluginCell() { $cell = $this->View->cell('TestPlugin.Dummy::echoThis', ['msg' => 'hello world!']); $this->assertTrue(strpos("{$cell}", 'hello world!') !== false); } /** * Tests that using an unexisting cell throws an exception. * * @expectedException \Cake\View\Error\MissingCellException * @return void */ public function testUnexistingCell() { $cell = $this->View->cell('TestPlugin.Void::echoThis', ['arg1' => 'v1']); $cell = $this->View->cell('Void::echoThis', ['arg1' => 'v1', 'arg2' => 'v2']); } }