start integration testing on nav building

This commit is contained in:
John Bintz 2009-10-20 07:22:34 -04:00
parent 8b63f3a1fd
commit 1db0f884f3
4 changed files with 41 additions and 20 deletions

View File

@ -18,12 +18,7 @@ class ComicPressDBInterface {
* Set the comic categories for the current run of ComicPress.
*/
function set_comic_categories($categories) {
$this->_non_comic_categories = array();
$this->_all_categories = array();
foreach ($this->_get_categories() as $category_object) {
$this->_all_categories[] = $category_object->term_id;
}
$this->_all_categories = get_all_category_ids();
$this->_non_comic_categories = array_values(array_diff($this->_all_categories, $categories));
}
@ -60,10 +55,11 @@ class ComicPressDBInterface {
/**
* Get the comic post adjacent to the current comic.
* Wrapper around get_adjacent_post(). Don't unit test this method.
*/
function get_adjacent_comic($category, $next = false, $override_post = null) {
global $wp_query, $post;
$temp = $wp_query->is_single;
$temp_single = $wp_query->is_single;
$wp_query->is_single = true;
if (!is_null($override_post)) {
@ -71,9 +67,9 @@ class ComicPressDBInterface {
$post = $override_post;
}
$result = get_adjacent_post(false, implode(" and ", $categories_to_exclude), !$next);
$result = get_adjacent_post(false, implode(" and ", $this->_get_categories_to_exclude($category)), !$next);
$wp_query->is_single = $temp;
$wp_query->is_single = $temp_single;
if (!is_null($override_post)) {
$post = $temp_post;

View File

@ -1,7 +1,22 @@
<?php
class ComicPressNavigation {
require_once('ComicPressStoryline.inc');
require_once('ComicPressDBInterface.inc');
class ComicPressNavigation {
function init($storyline) {
$this->_storyline = $storyline;
$this->_dbi = ComicPressDBInterface::get_instance();
}
function get_post_nav($post) {
$nav = array();
// post
foreach (array('previous', 'next') as $field) {
$nav[$field] = $this->_dbi->{"get_${field}_comic"}(null, $post);
}
}
}
?>

View File

@ -16,14 +16,9 @@ class ComicPressDBInterfaceTest extends PHPUnit_Framework_TestCase {
}
function testSetComicCategories() {
$dbi = $this->getMock('ComicPressDBInterface', array('_get_categories'));
$dbi = ComicPressDBInterface::get_instance();
$dbi->expects($this->once())->method('_get_categories')->will($this->returnValue(array(
(object)array('term_id' => 1),
(object)array('term_id' => 2),
(object)array('term_id' => 3),
(object)array('term_id' => 4)
)));
for ($i = 1; $i <= 4; ++$i) { add_category($i, (object)array()); }
$dbi->set_comic_categories(array(2,3));

View File

@ -4,14 +4,29 @@ require_once('MockPress/mockpress.php');
require_once('PHPUnit/Framework.php');
require_once(dirname(__FILE__) . '/../classes/ComicPressNavigation.inc');
/**
* Integration Testing. Just make sure things are called correctly.
*/
class ComicPressNavigationTest extends PHPUnit_Framework_TestCase {
function setUp() {
_reset_wp();
$this->nav = new ComicPressNavigation();
}
function testSomething() {
$this->markTestIncomplete();
function testGetPostNav() {
$dbi = $this->getMock('ComicPressDBInterface', array('get_previous_comic', 'get_next_comic'));
wp_insert_post(array('ID' => 1));
$post = get_post(1);
wp_set_post_categories(1, array(1));
$dbi->expects($this->once())->method('get_previous_comic')->with(null, $post);
$dbi->expects($this->once())->method('get_next_comic')->with(null, $post);
$this->nav->_dbi = $dbi;
$this->nav->get_post_nav($post);
}
}