diff options
author | Phil Sturgeon <email@philsturgeon.co.uk> | 2012-03-11 03:01:30 +0100 |
---|---|---|
committer | Phil Sturgeon <email@philsturgeon.co.uk> | 2012-03-11 03:01:30 +0100 |
commit | 6efbe5d7312698c73bbd645950ff5c81793b21e7 (patch) | |
tree | eb647bc246487f444ea1ffd4e24317ab0200bf30 | |
parent | e40c763bf969acbaa7c4c61be50f01e870062080 (diff) | |
parent | 8749bc7e836c196dfef37d3b7b5a67736a15092c (diff) |
Merge pull request #1161 from toopay/unit-tests
Unit Tests marked as "Incomplete" now completed.
-rwxr-xr-x | system/core/Config.php | 2 | ||||
-rw-r--r-- | system/libraries/Table.php | 4 | ||||
-rw-r--r-- | tests/Bootstrap.php | 1 | ||||
-rw-r--r-- | tests/codeigniter/core/Lang_test.php | 10 | ||||
-rw-r--r-- | tests/codeigniter/helpers/date_helper_test.php | 56 | ||||
-rw-r--r-- | tests/codeigniter/helpers/inflector_helper_test.php | 6 | ||||
-rw-r--r-- | tests/codeigniter/libraries/Table_test.php | 51 | ||||
-rw-r--r-- | tests/lib/ci_testcase.php | 17 |
8 files changed, 119 insertions, 28 deletions
diff --git a/system/core/Config.php b/system/core/Config.php index 68417435d..5424e5eb1 100755 --- a/system/core/Config.php +++ b/system/core/Config.php @@ -76,7 +76,7 @@ class CI_Config { log_message('debug', 'Config Class Initialized'); // Set the base_url automatically if none was provided - if ($this->config['base_url'] == '') + if (empty($this->config['base_url'])) { if (isset($_SERVER['HTTP_HOST'])) { diff --git a/system/libraries/Table.php b/system/libraries/Table.php index fb154e50f..8f6ac8d45 100644 --- a/system/libraries/Table.php +++ b/system/libraries/Table.php @@ -102,7 +102,7 @@ class CI_Table { */ public function make_columns($array = array(), $col_limit = 0) { - if ( ! is_array($array) OR count($array) === 0) + if ( ! is_array($array) OR count($array) === 0 OR ! is_int($col_limit)) { return FALSE; } @@ -395,7 +395,7 @@ class CI_Table { // First generate the headings from the table column names if (count($this->heading) === 0) { - if ( ! method_exists($query, 'list_fields')) + if ( ! is_callable(array($query, 'list_fields'))) { return FALSE; } diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index 94dafdce4..39c24b219 100644 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -11,6 +11,7 @@ $dir = realpath(dirname(__FILE__)); define('PROJECT_BASE', realpath($dir.'/../').'/'); define('BASEPATH', PROJECT_BASE.'system/'); define('APPPATH', PROJECT_BASE.'application/'); +define('VIEWPATH', PROJECT_BASE.''); // Prep our test environment diff --git a/tests/codeigniter/core/Lang_test.php b/tests/codeigniter/core/Lang_test.php index dcc3d0879..a414f0ace 100644 --- a/tests/codeigniter/core/Lang_test.php +++ b/tests/codeigniter/core/Lang_test.php @@ -6,6 +6,9 @@ class Lang_test extends CI_TestCase { public function set_up() { + $loader_cls = $this->ci_core_class('load'); + $this->ci_instance_var('load', new $loader_cls); + $cls = $this->ci_core_class('lang'); $this->lang = new $cls; } @@ -14,17 +17,14 @@ class Lang_test extends CI_TestCase { public function test_load() { - // get_config needs work - $this->markTestIncomplete('get_config needs work'); - //$this->assertTrue($this->lang->load('profiler')); + $this->assertTrue($this->lang->load('profiler', 'english')); } // -------------------------------------------------------------------- public function test_line() { - $this->markTestIncomplete('get_config needs work'); - + $this->assertTrue($this->lang->load('profiler', 'english')); $this->assertEquals('URI STRING', $this->lang->line('profiler_uri_string')); } diff --git a/tests/codeigniter/helpers/date_helper_test.php b/tests/codeigniter/helpers/date_helper_test.php index c7a2c9b6e..662d16485 100644 --- a/tests/codeigniter/helpers/date_helper_test.php +++ b/tests/codeigniter/helpers/date_helper_test.php @@ -5,9 +5,39 @@ class Date_helper_test extends CI_TestCase { // ------------------------------------------------------------------------ - public function test_now() + public function test_now_local() { - $this->markTestIncomplete('not implemented yet'); + // This stub job, is simply to cater $config['time_reference'] + $config = $this->getMock('CI_Config'); + $config->expects($this->any()) + ->method('item') + ->will($this->returnValue('local')); + + // Add the stub to our test instance + $this->ci_instance_var('config', $config); + + $expected = time(); + $test = now(); + $this->assertEquals($expected, $test); + } + + // ------------------------------------------------------------------------ + + public function test_now_gmt() + { + // This stub job, is simply to cater $config['time_reference'] + $config = $this->getMock('CI_Config'); + $config->expects($this->any()) + ->method('item') + ->will($this->returnValue('gmt')); + + // Add the stub to our stdClass + $this->ci_instance_var('config', $config); + + $t = time(); + $expected = mktime(gmdate("H", $t), gmdate("i", $t), gmdate("s", $t), gmdate("m", $t), gmdate("d", $t), gmdate("Y", $t)); + $test = now(); + $this->assertEquals($expected, $test); } // ------------------------------------------------------------------------ @@ -124,7 +154,16 @@ class Date_helper_test extends CI_TestCase public function test_timespan() { - $this->markTestIncomplete('not implemented yet'); + $loader_cls = $this->ci_core_class('load'); + $this->ci_instance_var('load', new $loader_cls); + + $lang_cls = $this->ci_core_class('lang'); + $this->ci_instance_var('lang', new $lang_cls); + + $this->assertEquals('1 Second', timespan(time(), time()+1)); + $this->assertEquals('1 Minute', timespan(time(), time()+60)); + $this->assertEquals('1 Hour', timespan(time(), time()+3600)); + $this->assertEquals('2 Hours', timespan(time(), time()+7200)); } // ------------------------------------------------------------------------ @@ -140,7 +179,9 @@ class Date_helper_test extends CI_TestCase public function test_local_to_gmt() { - $this->markTestIncomplete('not implemented yet'); + $t = time(); + $expected = mktime(gmdate("H", $t), gmdate("i", $t), gmdate("s", $t), gmdate("m", $t), gmdate("d", $t), gmdate("Y", $t)); + $this->assertEquals($expected, local_to_gmt($t)); } // ------------------------------------------------------------------------ @@ -177,9 +218,10 @@ class Date_helper_test extends CI_TestCase public function test_human_to_unix() { - $time = time(); - $this->markTestIncomplete('Failed Test'); - // $this->assertEquals($time, human_to_unix(unix_to_human($time))); + $date = '2000-12-31 10:00:00 PM'; + $expected = strtotime($date); + $this->assertEquals($expected, human_to_unix($date)); + $this->assertFalse(human_to_unix()); } // ------------------------------------------------------------------------ diff --git a/tests/codeigniter/helpers/inflector_helper_test.php b/tests/codeigniter/helpers/inflector_helper_test.php index ef1f54afc..e476f6dc8 100644 --- a/tests/codeigniter/helpers/inflector_helper_test.php +++ b/tests/codeigniter/helpers/inflector_helper_test.php @@ -24,14 +24,10 @@ class Inflector_helper_test extends CI_TestCase { public function test_plural() { - $this->markTestSkipped( - 'abjectness is breaking. SKipping for the time being.' - ); - $strs = array( 'telly' => 'tellies', 'smelly' => 'smellies', - 'abjectness' => 'abjectness', + 'abjectness' => 'abjectnesses', // ref : http://en.wiktionary.org/wiki/abjectnesses 'smell' => 'smells', 'witch' => 'witches' ); diff --git a/tests/codeigniter/libraries/Table_test.php b/tests/codeigniter/libraries/Table_test.php index 045216b16..0208a465a 100644 --- a/tests/codeigniter/libraries/Table_test.php +++ b/tests/codeigniter/libraries/Table_test.php @@ -194,11 +194,8 @@ class Table_test extends CI_TestCase { // Test bogus parameters $this->assertFalse($this->table->make_columns('invalid_junk')); - $this->assertFalse( $this->table->make_columns(array())); - // $this->assertFalse( - // $this->table->make_columns(array('one', 'two')), - // '2.5' // not an integer! - // ); + $this->assertFalse($this->table->make_columns(array())); + $this->assertFalse($this->table->make_columns(array('one', 'two'), '2.5')); // Now on to the actual column creation @@ -222,8 +219,6 @@ class Table_test extends CI_TestCase ), $this->table->make_columns($five_values, 3) ); - - $this->markTestSkipped('Look at commented assertFalse above'); } public function test_clear() @@ -301,7 +296,47 @@ class Table_test extends CI_TestCase function test_set_from_object() { - $this->markTestSkipped('Not yet implemented.'); + $reflectionOfTable = new ReflectionClass($this->table); + $method = $reflectionOfTable->getMethod('_set_from_object'); + + $method->setAccessible(true); + + // Make a stub of query instance + $query = new CI_TestCase(); + $query->list_fields = function(){ + return array('name', 'email'); + }; + $query->result_array = function(){ + return array( + array('name' => 'John Doe', 'email' => 'john@doe.com'), + array('name' => 'Foo Bar', 'email' => 'foo@bar.com'), + ); + }; + $query->num_rows = function(){ + return 2; + }; + + $expected_heading = array( + array('data' => 'name'), + array('data' => 'email') + ); + + $expected_second = array( + 'name' => array('data' => 'Foo Bar'), + 'email' => array('data' => 'foo@bar.com'), + ); + + $method->invokeArgs($this->table, array($query)); + + $this->assertEquals( + $expected_heading, + $this->table->heading + ); + + $this->assertEquals( + $expected_second, + $this->table->rows[1] + ); } // Test main generate method diff --git a/tests/lib/ci_testcase.php b/tests/lib/ci_testcase.php index 8ca71fdf2..afccee017 100644 --- a/tests/lib/ci_testcase.php +++ b/tests/lib/ci_testcase.php @@ -172,6 +172,23 @@ class CI_TestCase extends PHPUnit_Framework_TestCase { { return $this->ci_config; } + + // -------------------------------------------------------------------- + + /** + * This overload is useful to create a stub, that need to have a specific method. + */ + function __call($method, $args) + { + if ($this->{$method} instanceof Closure) + { + return call_user_func_array($this->{$method},$args); + } + else + { + return parent::__call($method, $args); + } + } } // EOF
\ No newline at end of file |