diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/codeigniter/database/DB_test.php | 47 | ||||
-rw-r--r-- | tests/codeigniter/database/query_builder/.gitkeep (renamed from tests/codeigniter/database/.gitkeep) | 0 | ||||
-rw-r--r-- | tests/mocks/database/db.php | 72 | ||||
-rw-r--r-- | tests/mocks/database/models/.gitkeep (renamed from tests/mocks/database/.gitkeep) | 0 | ||||
-rw-r--r-- | tests/phpunit.xml | 5 |
5 files changed, 120 insertions, 4 deletions
diff --git a/tests/codeigniter/database/DB_test.php b/tests/codeigniter/database/DB_test.php new file mode 100644 index 000000000..10e8dec64 --- /dev/null +++ b/tests/codeigniter/database/DB_test.php @@ -0,0 +1,47 @@ +<?php + +class DB_test extends CI_TestCase { + + // ------------------------------------------------------------------------ + + public function test_db_invalid() + { + $db_config = new Mock_Database_DB(array( + 'undefined' => array( + 'dsn' => '', + 'hostname' => 'undefined', + 'username' => 'undefined', + 'password' => 'undefined', + 'database' => 'undefined', + 'dbdriver' => 'undefined', + ), + )); + + $this->setExpectedException('InvalidArgumentException', 'CI Error: Invalid DB driver'); + + Mock_Database_DB::DB($db_config->set_dsn('undefined'), TRUE); + } + + // ------------------------------------------------------------------------ + + public function test_db_valid() + { + $db_config = new Mock_Database_DB(array( + 'mysql' => array( + 'dsn' => '', + 'hostname' => 'localhost', + 'username' => 'travis', + 'password' => '', + 'database' => 'ci_test', + 'dbdriver' => 'mysql', + ), + )); + + $db = Mock_Database_DB::DB($db_config->set_dsn('mysql'), TRUE); + + $this->assertTrue($db instanceof CI_DB); + $this->assertTrue($db instanceof CI_DB_Driver); + $this->assertTrue($db instanceof CI_DB_mysql_driver); + } + +}
\ No newline at end of file diff --git a/tests/codeigniter/database/.gitkeep b/tests/codeigniter/database/query_builder/.gitkeep index e69de29bb..e69de29bb 100644 --- a/tests/codeigniter/database/.gitkeep +++ b/tests/codeigniter/database/query_builder/.gitkeep diff --git a/tests/mocks/database/db.php b/tests/mocks/database/db.php new file mode 100644 index 000000000..11e4a93bd --- /dev/null +++ b/tests/mocks/database/db.php @@ -0,0 +1,72 @@ +<?php + +class Mock_Database_DB { + + private $config = array(); + + /** + * Prepare database configuration skeleton + * + * @param array DB configuration to set + * @return void + */ + public function __construct($config = array()) + { + $this->config = $config; + } + + public function set_dsn($group = 'default') + { + if ( ! isset($this->config[$group])) + { + throw new InvalidArgumentException('Group '.$group.' not exists'); + } + + $params = array( + 'dbprefix' => '', + 'pconnect' => FALSE, + 'db_debug' => TRUE, + 'cache_on' => FALSE, + 'cachedir' => '', + 'char_set' => 'utf8', + 'dbcollat' => 'utf8_general_ci', + 'swap_pre' => '', + 'autoinit' => TRUE, + 'stricton' => FALSE, + 'failover' => array() + ); + + $config = array_merge($this->config[$group], $params); + + if ( ! empty($config['dsn'])) + { + $dsn = $config['dsn']; + } + else + { + $dsn = $config['dbdriver'].'://'.$config['username'].':'.$config['password'] + .'@'.$config['hostname'].'/'.$config['database']; + + } + + $other_params = array_slice($config, 6); + + return $dsn.http_build_query($other_params); + } + + public static function DB($group, $query_builder = FALSE) + { + include_once(BASEPATH.'database/DB.php'); + + try + { + $db = DB($group, $query_builder); + } + catch (Exception $e) + { + throw new InvalidArgumentException($e->getMessage()); + } + + return $db; + } +}
\ No newline at end of file diff --git a/tests/mocks/database/.gitkeep b/tests/mocks/database/models/.gitkeep index e69de29bb..e69de29bb 100644 --- a/tests/mocks/database/.gitkeep +++ b/tests/mocks/database/models/.gitkeep diff --git a/tests/phpunit.xml b/tests/phpunit.xml index dfeecd19f..ffd2a1f0f 100644 --- a/tests/phpunit.xml +++ b/tests/phpunit.xml @@ -15,10 +15,7 @@ <directory suffix="test.php">codeigniter/core</directory> <directory suffix="test.php">codeigniter/helpers</directory> <directory suffix="test.php">codeigniter/libraries</directory> - <!-- We'll worry about these later ... - <directory suffix="test.php">codeigniter/libraries</directory> - <directory suffix="test.php">codeigniter/helpers</directory> - --> + <directory suffix="test.php">codeigniter/database</directory> </testsuite> </testsuites> <filters> |