diff options
Diffstat (limited to 'tests/mocks')
30 files changed, 413 insertions, 236 deletions
diff --git a/tests/mocks/autoloader.php b/tests/mocks/autoloader.php index 92c9bea59..88d016bba 100644 --- a/tests/mocks/autoloader.php +++ b/tests/mocks/autoloader.php @@ -7,9 +7,9 @@ // Prototype : // // $mock_table = new Mock_Libraries_Table(); // Will load ./mocks/libraries/table.php -// $mock_database_driver = new Mock_Database_Driver(); // Will load ./mocks/database/driver.php +// $mock_database_driver = new Mock_Database_Driver(); // Will load ./mocks/database/driver.php // and so on... -function autoload($class) +function autoload($class) { $dir = realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR; @@ -22,14 +22,18 @@ function autoload($class) ); $ci_libraries = array( - 'Calendar', 'Cart', 'Driver', + 'Calendar', 'Cart', 'Driver_Library', 'Email', 'Encrypt', 'Form_validation', 'Ftp', 'Image_lib', 'Javascript', 'Log', 'Migration', 'Pagination', - 'Parser', 'Profiler', 'Session', - 'Table', 'Trackback', 'Typography', - 'Unit_test', 'Upload', 'User_agent', - 'Xmlrpc', 'Zip', + 'Parser', 'Profiler', 'Table', + 'Trackback', 'Typography', 'Unit_test', + 'Upload', 'User_agent', 'Xmlrpc', + 'Zip', + ); + + $ci_drivers = array( + 'Session', ); if (strpos($class, 'Mock_') === 0) @@ -50,9 +54,18 @@ function autoload($class) elseif (in_array($subclass, $ci_libraries)) { $dir = BASEPATH.'libraries'.DIRECTORY_SEPARATOR; + $class = ($subclass === 'Driver_Library') ? 'Driver' : $subclass; + } + elseif (in_array($subclass, $ci_drivers)) + { + $dir = BASEPATH.'libraries'.DIRECTORY_SEPARATOR.$subclass.DIRECTORY_SEPARATOR; + $class = $subclass; + } + elseif (in_array(($parent = strtok($subclass, '_')), $ci_drivers)) { + $dir = BASEPATH.'libraries'.DIRECTORY_SEPARATOR.$parent.DIRECTORY_SEPARATOR.'drivers'.DIRECTORY_SEPARATOR; $class = $subclass; } - elseif (preg_match('/^CI_DB_(.+)_(driver|forge|result|utility)$/', $class, $m) && count($m) == 3) + elseif (preg_match('/^CI_DB_(.+)_(driver|forge|result|utility)$/', $class, $m) && count($m) === 3) { $driver_path = BASEPATH.'database'.DIRECTORY_SEPARATOR.'drivers'.DIRECTORY_SEPARATOR; $dir = $driver_path.$m[1].DIRECTORY_SEPARATOR; @@ -75,15 +88,20 @@ function autoload($class) { $trace = debug_backtrace(); - // If the autoload call came from `class_exists` or `file_exists`, - // we skipped and return FALSE - if ($trace[2]['function'] == 'class_exists' OR $trace[2]['function'] == 'file_exists') + if ($trace[2]['function'] === 'class_exists' OR $trace[2]['function'] === 'file_exists') { + // If the autoload call came from `class_exists` or `file_exists`, + // we skipped and return FALSE return FALSE; } - - throw new InvalidArgumentException("Unable to load $class."); + elseif (($autoloader = spl_autoload_functions()) && end($autoloader) !== __FUNCTION__) + { + // If there was other custom autoloader, passed away + return FALSE; + } + + throw new InvalidArgumentException("Unable to load {$class}."); } include_once($file); -}
\ No newline at end of file +} diff --git a/tests/mocks/ci_testcase.php b/tests/mocks/ci_testcase.php index f327e6b07..eda9e1b60 100644 --- a/tests/mocks/ci_testcase.php +++ b/tests/mocks/ci_testcase.php @@ -1,11 +1,11 @@ <?php class CI_TestCase extends PHPUnit_Framework_TestCase { - + protected $ci_config; protected $ci_instance; protected static $ci_test_instance; - + private $global_map = array( 'benchmark' => 'bm', 'config' => 'cfg', @@ -19,18 +19,17 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { 'loader' => 'load', 'model' => 'model' ); - + // -------------------------------------------------------------------- - + public function __construct() { parent::__construct(); - $this->ci_config = array(); } - + // -------------------------------------------------------------------- - + public function setUp() { if (method_exists($this, 'set_up')) @@ -38,10 +37,10 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { $this->set_up(); } } - + // -------------------------------------------------------------------- - - public function tearDown() + + public function tearDown() { if (method_exists($this, 'tear_down')) { @@ -50,15 +49,15 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { } // -------------------------------------------------------------------- - + public static function instance() { return self::$ci_test_instance; } - + // -------------------------------------------------------------------- - - function ci_set_config($key, $val = '') + + public function ci_set_config($key, $val = '') { if (is_array($key)) { @@ -71,36 +70,36 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { } // -------------------------------------------------------------------- - - function ci_get_config() + + public function ci_get_config() { return $this->ci_config; } - + // -------------------------------------------------------------------- - - function ci_instance($obj = FALSE) + + public function ci_instance($obj = FALSE) { if ( ! is_object($obj)) { return $this->ci_instance; } - + $this->ci_instance = $obj; } - + // -------------------------------------------------------------------- - - function ci_instance_var($name, $obj = FALSE) + + public function ci_instance_var($name, $obj = FALSE) { if ( ! is_object($obj)) { return $this->ci_instance->$name; } - + $this->ci_instance->$name =& $obj; } - + // -------------------------------------------------------------------- /** @@ -112,10 +111,10 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { * test can modify the variable it assigns to and * still maintain the global. */ - function &ci_core_class($name) + public function &ci_core_class($name) { $name = strtolower($name); - + if (isset($this->global_map[$name])) { $class_name = ucfirst($name); @@ -130,29 +129,29 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { { throw new Exception('Not a valid core class.'); } - + if ( ! class_exists('CI_'.$class_name)) { require_once BASEPATH.'core/'.$class_name.'.php'; } - + $GLOBALS[strtoupper($global_name)] = 'CI_'.$class_name; return $GLOBALS[strtoupper($global_name)]; } - + // -------------------------------------------------------------------- - + // convenience function for global mocks - function ci_set_core_class($name, $obj) + public function ci_set_core_class($name, $obj) { $orig =& $this->ci_core_class($name); $orig = $obj; } - + // -------------------------------------------------------------------- // Internals // -------------------------------------------------------------------- - + /** * Overwrite runBare * @@ -169,28 +168,27 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { } // -------------------------------------------------------------------- - - function helper($name) + + public function helper($name) { require_once(BASEPATH.'helpers/'.$name.'_helper.php'); } // -------------------------------------------------------------------- - + /** * This overload is useful to create a stub, that need to have a specific method. */ - function __call($method, $args) + public function __call($method, $args) { - if ($this->{$method} instanceof Closure) + if ($this->{$method} instanceof Closure) { return call_user_func_array($this->{$method},$args); - } - else + } + else { return parent::__call($method, $args); } } -} -// EOF
\ No newline at end of file +}
\ No newline at end of file diff --git a/tests/mocks/core/common.php b/tests/mocks/core/common.php index fc94d7fff..a655ee1db 100644 --- a/tests/mocks/core/common.php +++ b/tests/mocks/core/common.php @@ -2,53 +2,65 @@ // Set up the global CI functions in their most minimal core representation -function &get_instance() +if ( ! function_exists('get_instance')) { - $test = CI_TestCase::instance(); - $instance = $test->ci_instance(); - return $instance; + function &get_instance() + { + $test = CI_TestCase::instance(); + $test = $test->ci_instance(); + return $test; + } } // -------------------------------------------------------------------- -function &get_config() { - $test = CI_TestCase::instance(); - $config = $test->ci_get_config(); - - return $config; +if ( ! function_exists('get_config')) +{ + function &get_config() + { + $test = CI_TestCase::instance(); + $config = $test->ci_get_config(); + return $config; + } } -function config_item($item) +if ( ! function_exists('config_item')) { - $config =& get_config(); - - if ( ! isset($config[$item])) + function config_item($item) { - return FALSE; + $config =& get_config(); + + if ( ! isset($config[$item])) + { + return FALSE; + } + + return $config[$item]; } - - return $config[$item]; } // -------------------------------------------------------------------- -function load_class($class, $directory = 'libraries', $prefix = 'CI_') +if ( ! function_exists('load_class')) { - if ($directory != 'core' OR $prefix != 'CI_') + function load_class($class, $directory = 'libraries', $prefix = 'CI_') { - throw new Exception('Not Implemented: Non-core load_class()'); - } - - $test = CI_TestCase::instance(); - - $obj =& $test->ci_core_class($class); - - if (is_string($obj)) - { - throw new Exception('Bad Isolation: Use ci_set_core_class to set '.$class.''); + if ($directory !== 'core' OR $prefix !== 'CI_') + { + throw new Exception('Not Implemented: Non-core load_class()'); + } + + $test = CI_TestCase::instance(); + + $obj =& $test->ci_core_class($class); + + if (is_string($obj)) + { + throw new Exception('Bad Isolation: Use ci_set_core_class to set '.$class); + } + + return $obj; } - - return $obj; } // This is sort of meh. Should probably be mocked up with @@ -57,76 +69,101 @@ function load_class($class, $directory = 'libraries', $prefix = 'CI_') // bootstrap testsuite. // -------------------------------------------------------------------- -function remove_invisible_characters($str, $url_encoded = TRUE) +if ( ! function_exists('remove_invisible_characters')) { - $non_displayables = array(); - - // every control character except newline (dec 10) - // carriage return (dec 13), and horizontal tab (dec 09) - - if ($url_encoded) + function remove_invisible_characters($str, $url_encoded = TRUE) { - $non_displayables[] = '/%0[0-8bcef]/'; // url encoded 00-08, 11, 12, 14, 15 - $non_displayables[] = '/%1[0-9a-f]/'; // url encoded 16-31 - } - - $non_displayables[] = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S'; // 00-08, 11, 12, 14-31, 127 + $non_displayables = array(); - do - { - $str = preg_replace($non_displayables, '', $str, -1, $count); - } - while ($count); + // every control character except newline (dec 10) + // carriage return (dec 13), and horizontal tab (dec 09) + + if ($url_encoded) + { + $non_displayables[] = '/%0[0-8bcef]/'; // url encoded 00-08, 11, 12, 14, 15 + $non_displayables[] = '/%1[0-9a-f]/'; // url encoded 16-31 + } + + $non_displayables[] = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S'; // 00-08, 11, 12, 14-31, 127 + + do + { + $str = preg_replace($non_displayables, '', $str, -1, $count); + } + while ($count); - return $str; + return $str; + } } // Clean up error messages // -------------------------------------------------------------------- -function show_error($message, $status_code = 500, $heading = 'An Error Was Encountered') +if ( ! function_exists('show_error')) { - throw new RuntimeException('CI Error: '.$message); + function show_error($message, $status_code = 500, $heading = 'An Error Was Encountered') + { + throw new RuntimeException('CI Error: '.$message); + } } -function show_404($page = '', $log_error = TRUE) +if ( ! function_exists('show_404')) { - throw new RuntimeException('CI Error: 404'); + function show_404($page = '', $log_error = TRUE) + { + throw new RuntimeException('CI Error: 404'); + } } -function _exception_handler($severity, $message, $filepath, $line) +if ( ! function_exists('_exception_handler')) { - throw new RuntimeException('CI Exception: '.$message.' | '.$filepath.' | '.$line); + function _exception_handler($severity, $message, $filepath, $line) + { + throw new RuntimeException('CI Exception: '.$message.' | '.$filepath.' | '.$line); + } } // We assume a few things about our environment ... // -------------------------------------------------------------------- -function is_php($version = '5.0.0') +if ( ! function_exists('is_php')) { - return ! (version_compare(PHP_VERSION, $version) < 0); + function is_php($version = '5.0.0') + { + return ! (version_compare(PHP_VERSION, $version) < 0); + } } -function is_really_writable($file) +if ( ! function_exists('is_really_writable')) { - return is_writable($file); + function is_really_writable($file) + { + return is_writable($file); + } } -function is_loaded() +if ( ! function_exists('is_loaded')) { - throw new Exception('Bad Isolation: mock up environment'); + function is_loaded() + { + throw new Exception('Bad Isolation: mock up environment'); + } } -function log_message($level = 'error', $message, $php_error = FALSE) +if ( ! function_exists('log_message')) { - return TRUE; + function log_message($level = 'error', $message, $php_error = FALSE) + { + return TRUE; + } } -function set_status_header($code = 200, $text = '') +if ( ! function_exists('set_status_header')) { - return TRUE; -} - -// EOF
\ No newline at end of file + function set_status_header($code = 200, $text = '') + { + return TRUE; + } +}
\ No newline at end of file diff --git a/tests/mocks/core/input.php b/tests/mocks/core/input.php index 8a337d2ef..2a4aa4997 100644 --- a/tests/mocks/core/input.php +++ b/tests/mocks/core/input.php @@ -1,10 +1,10 @@ <?php class Mock_Core_Input extends CI_Input { - + /** - * Since we use GLOBAL to fetch Security and Utf8 classes, - * we need to use inversion of control to mock up + * Since we use GLOBAL to fetch Security and Utf8 classes, + * we need to use inversion of control to mock up * the same process within CI_Input class constructor. * * @covers CI_Input::__construct() diff --git a/tests/mocks/core/lang.php b/tests/mocks/core/lang.php new file mode 100644 index 000000000..1b99aedb3 --- /dev/null +++ b/tests/mocks/core/lang.php @@ -0,0 +1,15 @@ +<?php + +class Mock_Core_Lang extends CI_Lang { + + function line($line = '') + { + return FALSE; + } + + function load($langfile, $idiom = '', $return = false, $add_suffix = true, $alt_path = '') + { + return; + } + +}
\ No newline at end of file diff --git a/tests/mocks/core/loader.php b/tests/mocks/core/loader.php index d4b29bb3d..53d88d55b 100644 --- a/tests/mocks/core/loader.php +++ b/tests/mocks/core/loader.php @@ -1,7 +1,7 @@ <?php class Mock_Core_Loader extends CI_Loader { - + /** * Since we use paths to load up models, views, etc, we need the ability to * mock up the file system so when core tests are run, we aren't mucking @@ -15,16 +15,17 @@ class Mock_Core_Loader extends CI_Loader { { vfsStreamWrapper::register(); vfsStreamWrapper::setRoot(new vfsStreamDirectory('application')); - + $this->models_dir = vfsStream::newDirectory('models')->at(vfsStreamWrapper::getRoot()); $this->libs_dir = vfsStream::newDirectory('libraries')->at(vfsStreamWrapper::getRoot()); $this->helpers_dir = vfsStream::newDirectory('helpers')->at(vfsStreamWrapper::getRoot()); $this->views_dir = vfsStream::newDirectory('views')->at(vfsStreamWrapper::getRoot()); - + $this->_ci_ob_level = ob_get_level(); $this->_ci_library_paths = array(vfsStream::url('application').'/', BASEPATH); $this->_ci_helper_paths = array(vfsStream::url('application').'/', BASEPATH); $this->_ci_model_paths = array(vfsStream::url('application').'/'); $this->_ci_view_paths = array(vfsStream::url('application').'/views/' => TRUE); } + }
\ No newline at end of file diff --git a/tests/mocks/core/security.php b/tests/mocks/core/security.php index d7ea0e6bd..e19a8b20b 100644 --- a/tests/mocks/core/security.php +++ b/tests/mocks/core/security.php @@ -1,7 +1,7 @@ <?php class Mock_Core_Security extends CI_Security { - + public function csrf_set_cookie() { // We cannot set cookie in CLI mode, so for csrf test, who rely on $_COOKIE, diff --git a/tests/mocks/core/uri.php b/tests/mocks/core/uri.php index b6946091e..94f75df64 100644 --- a/tests/mocks/core/uri.php +++ b/tests/mocks/core/uri.php @@ -1,12 +1,12 @@ <?php class Mock_Core_URI extends CI_URI { - + public function __construct() { $test = CI_TestCase::instance(); $cls =& $test->ci_core_class('cfg'); - + // set predictable config values $test->ci_set_config(array( 'index_page' => 'index.php', @@ -14,12 +14,13 @@ class Mock_Core_URI extends CI_URI { 'subclass_prefix' => 'MY_' )); - $this->config = new $cls; + $this->config = new $cls; } - + protected function _is_cli_request() { return FALSE; } + }
\ No newline at end of file diff --git a/tests/mocks/core/utf8.php b/tests/mocks/core/utf8.php index b77d717e7..068e74ac1 100644 --- a/tests/mocks/core/utf8.php +++ b/tests/mocks/core/utf8.php @@ -1,27 +1,26 @@ <?php class Mock_Core_Utf8 extends CI_Utf8 { - + /** - * We need to define several constants as + * We need to define several constants as * the same process within CI_Utf8 class constructor. * * @covers CI_Utf8::__construct() */ public function __construct() { - defined('UTF8_ENABLED') or define('UTF8_ENABLED', TRUE); + defined('UTF8_ENABLED') OR define('UTF8_ENABLED', TRUE); if (extension_loaded('mbstring')) { - defined('MB_ENABLED') or define('MB_ENABLED', TRUE); + defined('MB_ENABLED') OR define('MB_ENABLED', TRUE); mb_internal_encoding('UTF-8'); } else { - defined('MB_ENABLED') or define('MB_ENABLED', FALSE); + defined('MB_ENABLED') OR define('MB_ENABLED', FALSE); } - } }
\ No newline at end of file diff --git a/tests/mocks/database/ci_test.sqlite b/tests/mocks/database/ci_test.sqlite Binary files differindex 23a3de2a4..44dcef9ec 100755 --- a/tests/mocks/database/ci_test.sqlite +++ b/tests/mocks/database/ci_test.sqlite diff --git a/tests/mocks/database/config/mysql.php b/tests/mocks/database/config/mysql.php index ace0a31b1..a590b9f53 100644 --- a/tests/mocks/database/config/mysql.php +++ b/tests/mocks/database/config/mysql.php @@ -1,7 +1,7 @@ <?php return array( - + // Typical Database configuration 'mysql' => array( 'dsn' => '', @@ -9,7 +9,7 @@ return array( 'username' => 'travis', 'password' => '', 'database' => 'ci_test', - 'dbdriver' => 'mysql', + 'dbdriver' => 'mysql' ), // Database configuration with failover @@ -28,7 +28,7 @@ return array( 'password' => '', 'database' => 'ci_test', 'dbdriver' => 'mysql', - ), - ), - ), + ) + ) + ) );
\ No newline at end of file diff --git a/tests/mocks/database/config/pdo/mysql.php b/tests/mocks/database/config/pdo/mysql.php index cefb6b008..96608f787 100644 --- a/tests/mocks/database/config/pdo/mysql.php +++ b/tests/mocks/database/config/pdo/mysql.php @@ -1,16 +1,16 @@ <?php return array( - + // Typical Database configuration 'pdo/mysql' => array( - 'dsn' => '', + 'dsn' => 'mysql:host=localhost;dbname=ci_test', 'hostname' => 'localhost', 'username' => 'travis', 'password' => '', 'database' => 'ci_test', 'dbdriver' => 'pdo', - 'pdodriver' => 'mysql', + 'subdriver' => 'mysql' ), // Database configuration with failover @@ -21,17 +21,17 @@ return array( 'password' => 'wrong password', 'database' => 'not_ci_test', 'dbdriver' => 'pdo', - 'pdodriver' => 'mysql', + 'subdriver' => 'mysql', 'failover' => array( array( - 'dsn' => '', + 'dsn' => 'mysql:host=localhost;dbname=ci_test', 'hostname' => 'localhost', 'username' => 'travis', 'password' => '', 'database' => 'ci_test', 'dbdriver' => 'pdo', - 'pdodriver' => 'mysql', - ), - ), - ), + 'subdriver' => 'mysql' + ) + ) + ) );
\ No newline at end of file diff --git a/tests/mocks/database/config/pdo/pgsql.php b/tests/mocks/database/config/pdo/pgsql.php index 5196e9ad9..e55e3ea77 100644 --- a/tests/mocks/database/config/pdo/pgsql.php +++ b/tests/mocks/database/config/pdo/pgsql.php @@ -1,7 +1,7 @@ <?php return array( - + // Typical Database configuration 'pdo/pgsql' => array( 'dsn' => 'pgsql:host=localhost;port=5432;dbname=ci_test;', @@ -10,7 +10,7 @@ return array( 'password' => '', 'database' => 'ci_test', 'dbdriver' => 'pdo', - 'pdodriver' => 'pgsql', + 'subdriver' => 'pgsql' ), // Database configuration with failover @@ -21,7 +21,7 @@ return array( 'password' => 'wrong password', 'database' => 'not_ci_test', 'dbdriver' => 'pdo', - 'pdodriver' => 'pgsql', + 'subdriver' => 'pgsql', 'failover' => array( array( 'dsn' => 'pgsql:host=localhost;port=5432;dbname=ci_test;', @@ -30,8 +30,8 @@ return array( 'password' => '', 'database' => 'ci_test', 'dbdriver' => 'pdo', - 'pdodriver' => 'pgsql', - ), - ), - ), + 'subdriver' => 'pgsql' + ) + ) + ) );
\ No newline at end of file diff --git a/tests/mocks/database/config/pdo/sqlite.php b/tests/mocks/database/config/pdo/sqlite.php index c68b4b213..1bf56b3ac 100644 --- a/tests/mocks/database/config/pdo/sqlite.php +++ b/tests/mocks/database/config/pdo/sqlite.php @@ -10,7 +10,7 @@ return array( 'password' => 'sqlite', 'database' => 'sqlite', 'dbdriver' => 'pdo', - 'pdodriver' => 'sqlite', + 'subdriver' => 'sqlite' ), // Database configuration with failover @@ -21,7 +21,7 @@ return array( 'password' => 'sqlite', 'database' => 'sqlite', 'dbdriver' => 'pdo', - 'pdodriver' => 'sqlite', + 'subdriver' => 'sqlite', 'failover' => array( array( 'dsn' => 'sqlite:/'.realpath(__DIR__.'/../..').'/ci_test.sqlite', @@ -29,9 +29,9 @@ return array( 'username' => 'sqlite', 'password' => 'sqlite', 'database' => 'sqlite', - 'dbdriver' => 'pdo', - 'pdodriver' => 'sqlite', - ), - ), - ), + 'dbdriver' => 'pdo', + 'subdriver' => 'sqlite' + ) + ) + ) );
\ No newline at end of file diff --git a/tests/mocks/database/config/pgsql.php b/tests/mocks/database/config/pgsql.php index c06af8ce0..1444b0066 100644 --- a/tests/mocks/database/config/pgsql.php +++ b/tests/mocks/database/config/pgsql.php @@ -1,7 +1,7 @@ <?php return array( - + // Typical Database configuration 'pgsql' => array( 'dsn' => '', @@ -9,7 +9,7 @@ return array( 'username' => 'postgres', 'password' => '', 'database' => 'ci_test', - 'dbdriver' => 'postgre', + 'dbdriver' => 'postgre' ), // Database configuration with failover @@ -28,7 +28,7 @@ return array( 'password' => '', 'database' => 'ci_test', 'dbdriver' => 'postgre', - ), - ), - ), + ) + ) + ) );
\ No newline at end of file diff --git a/tests/mocks/database/config/sqlite.php b/tests/mocks/database/config/sqlite.php index 755ce2a3a..d37ee4871 100644 --- a/tests/mocks/database/config/sqlite.php +++ b/tests/mocks/database/config/sqlite.php @@ -9,7 +9,7 @@ return array( 'username' => 'sqlite', 'password' => 'sqlite', 'database' => realpath(__DIR__.'/..').'/ci_test.sqlite', - 'dbdriver' => 'sqlite3', + 'dbdriver' => 'sqlite3' ), // Database configuration with failover @@ -27,8 +27,8 @@ return array( 'username' => 'sqlite', 'password' => 'sqlite', 'database' => realpath(__DIR__.'/..').'/ci_test.sqlite', - 'dbdriver' => 'sqlite3', - ), - ), - ), + 'dbdriver' => 'sqlite3' + ) + ) + ) );
\ No newline at end of file diff --git a/tests/mocks/database/db.php b/tests/mocks/database/db.php index 59028ed9c..75658530b 100644 --- a/tests/mocks/database/db.php +++ b/tests/mocks/database/db.php @@ -6,7 +6,7 @@ class Mock_Database_DB { * @var array DB configuration */ private $config = array(); - + /** * Prepare database configuration skeleton * @@ -21,7 +21,7 @@ class Mock_Database_DB { /** * Build DSN connection string for DB driver instantiate process * - * @param string Group name + * @param string Group name * @return string DSN Connection string */ public function set_dsn($group = 'default') @@ -45,9 +45,9 @@ class Mock_Database_DB { ); $config = array_merge($this->config[$group], $params); - $dsnstring = ( ! empty($config['dsn'])) ? $config['dsn'] : FALSE; - $pdodriver = ( ! empty($config['pdodriver'])) ? $config['pdodriver'] : FALSE; - $failover = ( ! empty($config['failover'])) ? $config['failover'] : FALSE; + $dsnstring = empty($config['dsn']) ? FALSE : $config['dsn']; + $subdriver = empty($config['subdriver']) ? FALSE: $config['subdriver']; + $failover = empty($config['failover']) ? FALSE : $config['failover']; $dsn = $config['dbdriver'].'://'.$config['username'].':'.$config['password'] .'@'.$config['hostname'].'/'.$config['database']; @@ -55,7 +55,7 @@ class Mock_Database_DB { // Build the parameter $other_params = array_slice($config, 6); if ($dsnstring) $other_params['dsn'] = $dsnstring; - if ($pdodriver) $other_params['pdodriver'] = $pdodriver; + if ($subdriver) $other_params['subdriver'] = $subdriver; if ($failover) $other_params['failover'] = $failover; return $dsn.'?'.http_build_query($other_params); @@ -65,28 +65,27 @@ class Mock_Database_DB { * Return a database config array * * @see ./config - * @param string Driver based configuration - * @return array + * @param string Driver based configuration + * @return array */ public static function config($driver) { $dir = realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR; - return include($dir.'config'.DIRECTORY_SEPARATOR.$driver.'.php'); } /** * Main DB method wrapper * - * @param string Group or DSN string - * @param bool - * @return object + * @param string Group or DSN string + * @param bool + * @return object */ public static function DB($group, $query_builder = FALSE) { include_once(BASEPATH.'database/DB.php'); - try + try { $db = DB($group, $query_builder); } @@ -97,4 +96,5 @@ class Mock_Database_DB { return $db; } + }
\ No newline at end of file diff --git a/tests/mocks/database/db/driver.php b/tests/mocks/database/db/driver.php index cb1820277..65ac2c4cc 100644 --- a/tests/mocks/database/db/driver.php +++ b/tests/mocks/database/db/driver.php @@ -1,7 +1,7 @@ <?php class Mock_Database_DB_Driver extends CI_DB_driver { - + /** * @var object The actual Driver */ @@ -16,7 +16,10 @@ class Mock_Database_DB_Driver extends CI_DB_driver { */ public function __construct($driver_class, $config = array()) { - if (is_string($driver_class)) $this->ci_db_driver = new $driver_class($config); + if (is_string($driver_class)) + { + $this->ci_db_driver = new $driver_class($config); + } } /** diff --git a/tests/mocks/database/db/querybuilder.php b/tests/mocks/database/db/querybuilder.php index 1b95c92af..3f2252622 100644 --- a/tests/mocks/database/db/querybuilder.php +++ b/tests/mocks/database/db/querybuilder.php @@ -1,10 +1,3 @@ <?php -if ( ! class_exists('CI_DB_query_builder')) -{ - class Mock_Database_DB_QueryBuilder extends CI_DB_active_record {} -} -else -{ - class Mock_Database_DB_QueryBuilder extends CI_DB_query_builder {} -} +class Mock_Database_DB_QueryBuilder extends CI_DB_query_builder {}
\ No newline at end of file diff --git a/tests/mocks/database/drivers/mysql.php b/tests/mocks/database/drivers/mysql.php index 34a74e2bf..e0c1fb06c 100644 --- a/tests/mocks/database/drivers/mysql.php +++ b/tests/mocks/database/drivers/mysql.php @@ -1,16 +1,17 @@ <?php class Mock_Database_Drivers_Mysql extends Mock_Database_DB_Driver { - + /** * Instantiate the database driver * - * @param string DB Driver class name - * @param array DB configuration to set - * @return void + * @param string DB Driver class name + * @param array DB configuration to set + * @return void */ public function __construct($config = array()) { parent::__construct('CI_DB_mysql_driver', $config); } + }
\ No newline at end of file diff --git a/tests/mocks/database/drivers/pdo.php b/tests/mocks/database/drivers/pdo.php index 590e19552..17768eed7 100644 --- a/tests/mocks/database/drivers/pdo.php +++ b/tests/mocks/database/drivers/pdo.php @@ -1,13 +1,13 @@ <?php class Mock_Database_Drivers_PDO extends Mock_Database_DB_Driver { - + /** * Instantiate the database driver * - * @param string DB Driver class name - * @param array DB configuration to set - * @return void + * @param string DB Driver class name + * @param array DB configuration to set + * @return void */ public function __construct($config = array()) { diff --git a/tests/mocks/database/drivers/postgre.php b/tests/mocks/database/drivers/postgre.php index 0df905963..5a45115fa 100644 --- a/tests/mocks/database/drivers/postgre.php +++ b/tests/mocks/database/drivers/postgre.php @@ -1,16 +1,17 @@ <?php class Mock_Database_Drivers_Postgre extends Mock_Database_DB_Driver { - + /** * Instantiate the database driver * - * @param string DB Driver class name - * @param array DB configuration to set - * @return void + * @param string DB Driver class name + * @param array DB configuration to set + * @return void */ public function __construct($config = array()) { parent::__construct('CI_DB_postgre_driver', $config); } + }
\ No newline at end of file diff --git a/tests/mocks/database/drivers/sqlite.php b/tests/mocks/database/drivers/sqlite.php index 76a182cbf..512467520 100644 --- a/tests/mocks/database/drivers/sqlite.php +++ b/tests/mocks/database/drivers/sqlite.php @@ -1,16 +1,17 @@ <?php class Mock_Database_Drivers_Sqlite extends Mock_Database_DB_Driver { - + /** * Instantiate the database driver * - * @param string DB Driver class name - * @param array DB configuration to set - * @return void + * @param string DB Driver class name + * @param array DB configuration to set + * @return void */ public function __construct($config = array()) { parent::__construct('CI_DB_sqlite3_driver', $config); } + }
\ No newline at end of file diff --git a/tests/mocks/database/schema/skeleton.php b/tests/mocks/database/schema/skeleton.php index 671336cc4..18e1ddd4d 100644 --- a/tests/mocks/database/schema/skeleton.php +++ b/tests/mocks/database/schema/skeleton.php @@ -41,8 +41,7 @@ class Mock_Database_Schema_Skeleton { return static::$db; } - - + /** * Create the dummy tables * @@ -54,20 +53,20 @@ class Mock_Database_Schema_Skeleton { static::$forge->add_field(array( 'id' => array( 'type' => 'INTEGER', - 'constraint' => 3, + 'constraint' => 3 ), 'name' => array( 'type' => 'VARCHAR', - 'constraint' => 40, + 'constraint' => 40 ), 'email' => array( 'type' => 'VARCHAR', - 'constraint' => 100, + 'constraint' => 100 ), 'country' => array( 'type' => 'VARCHAR', - 'constraint' => 40, - ), + 'constraint' => 40 + ) )); static::$forge->add_key('id', TRUE); static::$forge->create_table('user', (strpos(static::$driver, 'pgsql') === FALSE)); @@ -76,18 +75,35 @@ class Mock_Database_Schema_Skeleton { static::$forge->add_field(array( 'id' => array( 'type' => 'INTEGER', - 'constraint' => 3, + 'constraint' => 3 ), 'name' => array( 'type' => 'VARCHAR', - 'constraint' => 40, + 'constraint' => 40 ), 'description' => array( - 'type' => 'TEXT', - ), + 'type' => 'TEXT' + ) )); static::$forge->add_key('id', TRUE); static::$forge->create_table('job', (strpos(static::$driver, 'pgsql') === FALSE)); + + // Misc Table + static::$forge->add_field(array( + 'id' => array( + 'type' => 'INTEGER', + 'constraint' => 3 + ), + 'key' => array( + 'type' => 'VARCHAR', + 'constraint' => 40 + ), + 'value' => array( + 'type' => 'TEXT' + ) + )); + static::$forge->add_key('id', TRUE); + static::$forge->create_table('misc', (strpos(static::$driver, 'pgsql') === FALSE)); } /** @@ -103,24 +119,29 @@ class Mock_Database_Schema_Skeleton { array('id' => 1, 'name' => 'Derek Jones', 'email' => 'derek@world.com', 'country' => 'US'), array('id' => 2, 'name' => 'Ahmadinejad', 'email' => 'ahmadinejad@world.com', 'country' => 'Iran'), array('id' => 3, 'name' => 'Richard A Causey', 'email' => 'richard@world.com', 'country' => 'US'), - array('id' => 4, 'name' => 'Chris Martin', 'email' => 'chris@world.com', 'country' => 'UK'), + array('id' => 4, 'name' => 'Chris Martin', 'email' => 'chris@world.com', 'country' => 'UK') ), 'job' => array( - array('id' => 1, 'name' => 'Developer', 'description' => 'Awesome job, but sometimes makes you bored'), + array('id' => 1, 'name' => 'Developer', 'description' => 'Awesome job, but sometimes makes you bored'), array('id' => 2, 'name' => 'Politician', 'description' => 'This is not really a job'), - array('id' => 3, 'name' => 'Accountant', 'description' => 'Boring job, but you will get free snack at lunch'), - array('id' => 4, 'name' => 'Musician', 'description' => 'Only Coldplay can actually called Musician'), + array('id' => 3, 'name' => 'Accountant', 'description' => 'Boring job, but you will get free snack at lunch'), + array('id' => 4, 'name' => 'Musician', 'description' => 'Only Coldplay can actually called Musician') ), + 'misc' => array( + array('id' => 1, 'key' => '\\xxxfoo456', 'value' => 'Entry with \\xxx'), + array('id' => 2, 'key' => '\\%foo456', 'value' => 'Entry with \\%') + ) ); - foreach ($data as $table => $dummy_data) + foreach ($data as $table => $dummy_data) { static::$db->truncate($table); foreach ($dummy_data as $single_dummy_data) { - static::$db->insert($table, $single_dummy_data); + static::$db->insert($table, $single_dummy_data); } } } + }
\ No newline at end of file diff --git a/tests/mocks/libraries/calendar.php b/tests/mocks/libraries/calendar.php new file mode 100644 index 000000000..8fee5365e --- /dev/null +++ b/tests/mocks/libraries/calendar.php @@ -0,0 +1,25 @@ +<?php + +class Mock_Libraries_Calendar extends CI_Calendar { + + public function __construct($config = array()) + { + $this->CI = new stdClass; + $this->CI->lang = new Mock_Core_Lang(); + + if ( ! in_array('calendar_lang.php', $this->CI->lang->is_loaded, TRUE)) + { + $this->CI->lang->load('calendar'); + } + + $this->local_time = time(); + + if (count($config) > 0) + { + $this->initialize($config); + } + + log_message('debug', 'Calendar Class Initialized'); + } + +}
\ No newline at end of file diff --git a/tests/mocks/libraries/encrypt.php b/tests/mocks/libraries/encrypt.php new file mode 100644 index 000000000..f1859398f --- /dev/null +++ b/tests/mocks/libraries/encrypt.php @@ -0,0 +1,16 @@ +<?php + +class Mock_Libraries_Encrypt extends CI_Encrypt { + + // Overide inaccesible protected method + public function __call($method, $params) + { + if (is_callable(array($this, '_'.$method))) + { + return call_user_func_array(array($this, '_'.$method), $params); + } + + throw new BadMethodCallException('Method '.$method.' was not found'); + } + +}
\ No newline at end of file diff --git a/tests/mocks/libraries/session.php b/tests/mocks/libraries/session.php new file mode 100644 index 000000000..9d6feee42 --- /dev/null +++ b/tests/mocks/libraries/session.php @@ -0,0 +1,43 @@ +<?php + +/** + * Mock library to add testing features to Session driver library + */ +class Mock_Libraries_Session extends CI_Session { + /** + * Simulate new page load + */ + public function reload() + { + $this->_flashdata_sweep(); + $this->_flashdata_mark(); + $this->_tempdata_sweep(); + } +} + +/** + * Mock cookie driver to overload cookie setting + */ +class Mock_Libraries_Session_cookie extends CI_Session_cookie { + /** + * Overload _setcookie to manage $_COOKIE values, since actual cookies can't be set in unit testing + */ + protected function _setcookie($name, $value = '', $expire = 0, $path = '', $domain = '', $secure = false, + $httponly = false) + { + if (empty($value) || $expire <= time()) { + // Clear cookie + unset($_COOKIE[$name]); + } + else { + // Set cookie + $_COOKIE[$name] = $value; + } + } +} + +/** + * Mock native driver (just for consistency in loading) + */ +class Mock_Libraries_Session_native extends CI_Session_native { } + diff --git a/tests/mocks/libraries/table.php b/tests/mocks/libraries/table.php index 97fbb30bd..87c278bce 100644 --- a/tests/mocks/libraries/table.php +++ b/tests/mocks/libraries/table.php @@ -1,7 +1,7 @@ <?php class Mock_Libraries_Table extends CI_Table { - + // Overide inaccesible protected method public function __call($method, $params) { @@ -12,4 +12,5 @@ class Mock_Libraries_Table extends CI_Table { throw new BadMethodCallException('Method '.$method.' was not found'); } + }
\ No newline at end of file diff --git a/tests/mocks/libraries/upload.php b/tests/mocks/libraries/upload.php new file mode 100644 index 000000000..988723e45 --- /dev/null +++ b/tests/mocks/libraries/upload.php @@ -0,0 +1,3 @@ +<?php + +class Mock_Libraries_Upload extends CI_Upload {}
\ No newline at end of file diff --git a/tests/mocks/uploads/ci_logo.gif b/tests/mocks/uploads/ci_logo.gif Binary files differnew file mode 100644 index 000000000..073ec14b4 --- /dev/null +++ b/tests/mocks/uploads/ci_logo.gif |