mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-19 02:56:15 +00:00
Adding some test coverage on MediaView.
Now MediaView does not exit after successful render, closes #569
This commit is contained in:
parent
388bca4acd
commit
940ce8b06e
2 changed files with 213 additions and 6 deletions
|
@ -206,17 +206,16 @@ class MediaView extends View {
|
|||
'Content-Length: ' . $fileSize));
|
||||
}
|
||||
$this->_output();
|
||||
@ob_end_clean();
|
||||
$this->_clearBuffer();
|
||||
|
||||
while (!feof($handle) && connection_status() == 0 && !connection_aborted()) {
|
||||
while (!feof($handle) && $this->_isActive()) {
|
||||
set_time_limit(0);
|
||||
$buffer = fread($handle, $chunkSize);
|
||||
echo $buffer;
|
||||
@flush();
|
||||
@ob_flush();
|
||||
$this->_flushBuffer();
|
||||
}
|
||||
fclose($handle);
|
||||
exit(0);
|
||||
return;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -252,5 +251,32 @@ class MediaView extends View {
|
|||
header($header, $value[$header]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if connectios is still active
|
||||
* @return boolean
|
||||
* @access protected
|
||||
*/
|
||||
function _isActive() {
|
||||
return connection_status() == 0 && !connection_aborted();
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears the contents of the topmost output buffer and discards them
|
||||
* @return boolean
|
||||
* @access protected
|
||||
*/
|
||||
function _clearBuffer() {
|
||||
return @ob_end_clean();
|
||||
}
|
||||
|
||||
/**
|
||||
* Flushes the contents of the output buffer
|
||||
* @access protected
|
||||
*/
|
||||
function _flushBuffer() {
|
||||
@flush();
|
||||
@ob_flush();
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
181
cake/tests/cases/libs/view/media.test.php
Normal file
181
cake/tests/cases/libs/view/media.test.php
Normal file
|
@ -0,0 +1,181 @@
|
|||
<?php
|
||||
/**
|
||||
* ThemeViewTest file
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP(tm) Tests <https://trac.cakephp.org/wiki/Developement/TestSuite>
|
||||
* Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
* Licensed under The Open Group Test Suite License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
* @link https://trac.cakephp.org/wiki/Developement/TestSuite CakePHP(tm) Tests
|
||||
* @package cake
|
||||
* @subpackage cake.tests.cases.libs
|
||||
* @since CakePHP(tm) v 1.2.0.4206
|
||||
* @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License
|
||||
*/
|
||||
App::import('Core', array('Media', 'Controller'));
|
||||
|
||||
if (!class_exists('ErrorHandler')) {
|
||||
App::import('Core', array('Error'));
|
||||
}
|
||||
if (!defined('CAKEPHP_UNIT_TEST_EXECUTION')) {
|
||||
define('CAKEPHP_UNIT_TEST_EXECUTION', 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* ThemePostsController class
|
||||
*
|
||||
* @package cake
|
||||
* @subpackage cake.tests.cases.libs.view
|
||||
*/
|
||||
class MediaController extends Controller {
|
||||
|
||||
/**
|
||||
* name property
|
||||
*
|
||||
* @var string 'Media'
|
||||
* @access public
|
||||
*/
|
||||
var $name = 'Media';
|
||||
|
||||
/**
|
||||
* index download
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function download() {
|
||||
$path = TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'vendors' . DS .'css' . DS;
|
||||
$id = 'test_asset.css';
|
||||
$extension = 'css';
|
||||
$this->set(compact('path', 'id', 'extension'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TestMediaView class
|
||||
*
|
||||
* @package cake
|
||||
* @subpackage cake.tests.cases.libs.view
|
||||
*/
|
||||
class TestMediaView extends MediaView {
|
||||
|
||||
/**
|
||||
* headers public property as a copy from protected property _headers
|
||||
*
|
||||
* @var array
|
||||
* @access public
|
||||
*/
|
||||
var $headers = array();
|
||||
|
||||
/**
|
||||
* active property to mock the status of a remote conenction
|
||||
*
|
||||
* @var boolean true
|
||||
* @access public
|
||||
*/
|
||||
var $active = true;
|
||||
|
||||
function _output() {
|
||||
$this->headers = $this->_headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* _isActive method. Usted de $active property to mock an active (true) connection,
|
||||
* or an aborted (false) one
|
||||
*
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
function _isActive() {
|
||||
return $this->active;
|
||||
}
|
||||
|
||||
/**
|
||||
* _clearBuffer method
|
||||
*
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
function _clearBuffer() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* _flushBuffer method
|
||||
*
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
function _flushBuffer() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ThemeViewTest class
|
||||
*
|
||||
* @package cake
|
||||
* @subpackage cake.tests.cases.libs
|
||||
*/
|
||||
class MediaViewTest extends CakeTestCase {
|
||||
|
||||
/**
|
||||
* startTest method
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function startTest() {
|
||||
Router::reload();
|
||||
$this->Controller =& new Controller();
|
||||
$this->MediaController =& new MediaController();
|
||||
$this->MediaController->viewPath = 'posts';
|
||||
$this->MediaController->download();
|
||||
$this->MediaView =& new TestMediaView($this->MediaController);
|
||||
}
|
||||
|
||||
/**
|
||||
* endTest method
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function endTest() {
|
||||
unset($this->MediaView);
|
||||
unset($this->MediaController);
|
||||
unset($this->Controller);
|
||||
ClassRegistry::flush();
|
||||
}
|
||||
|
||||
/**
|
||||
* testRender method
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function testRender() {
|
||||
ob_start();
|
||||
$result = $this->MediaView->render();
|
||||
$output = ob_get_clean();
|
||||
|
||||
$this->assertTrue($result !== false);
|
||||
$this->assertEqual($output, 'this is the test asset css file');
|
||||
}
|
||||
|
||||
/**
|
||||
* testConnectionAborted method
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function testConnectionAborted() {
|
||||
$this->MediaView->active = false;
|
||||
$result = $this->MediaView->render();
|
||||
$this->assertFalse($result);
|
||||
}
|
||||
}
|
||||
?>
|
Loading…
Add table
Reference in a new issue