complete code coverage tests

This commit is contained in:
John Bintz 2009-11-11 21:07:35 -05:00
parent 08aaf6eb69
commit 8c9d8c02d6
4 changed files with 131 additions and 30 deletions

View File

@ -19,8 +19,9 @@ class ComicPressNavigation {
if (($result = wp_cache_get($cache_key, 'comicpress')) !== false) { if (($result = wp_cache_get($cache_key, 'comicpress')) !== false) {
foreach ($result as $key => $post_id) { foreach ($result as $key => $post_id) {
$nev[$key] = get_post($post_id); $nav[$key] = get_post($post_id);
} }
return $nav;
} }
// global previous/next // global previous/next

View File

@ -46,15 +46,27 @@ class ComicPressStoryline {
} }
} }
function _create_structure_key($input) {
$key = 'storyline-structure-';
if (is_string($input)) { return $key . $input; }
if (is_array($input)) {
$fixed_parts = array();
foreach ($input as $i) { if (is_string($i)) { $fixed_parts[] = $i; } }
if (!empty($fixed_parts)) { return $key . implode(',', $fixed_parts); }
}
return false;
}
/** /**
* Create a searchable structure from a node list. * Create a searchable structure from a node list.
* @param array $structure The structure to process. * @param array $structure The structure to process.
* @return boolean True if the structure was valid. * @return boolean True if the structure was valid.
*/ */
function create_structure($structure) { function create_structure($structure) {
$key = null; $key = $this->_create_structure_key($structure);
if ($key !== false) {
if (is_string($structure)) { if (is_string($structure)) {
$key = $structure;
$structure = explode(',', $structure); $structure = explode(',', $structure);
} else { } else {
if (is_array($structure)) { if (is_array($structure)) {
@ -62,13 +74,10 @@ class ComicPressStoryline {
foreach ($structure as $s) { foreach ($structure as $s) {
if (!is_array($s)) { $fixed_structure[] = $s; } if (!is_array($s)) { $fixed_structure[] = $s; }
} }
$key = implode(',', $fixed_structure); $structure = $fixed_structure;
} }
} }
if (!is_null($key)) {
$key = "storyline-structure-${key}";
if (($result = wp_cache_get($key, 'comicpress')) !== false) { if (($result = wp_cache_get($key, 'comicpress')) !== false) {
$this->_structure = $result; $this->_structure = $result;
} else { } else {
@ -142,9 +151,12 @@ class ComicPressStoryline {
return false; return false;
} }
// @codeCoverageIgnoreStart
function parent($id) { return $this->_get_field('parent', $id); } function parent($id) { return $this->_get_field('parent', $id); }
function previous($id) { return $this->_get_field('previous', $id); } function previous($id) { return $this->_get_field('previous', $id); }
function next($id) { return $this->_get_field('next', $id); } function next($id) { return $this->_get_field('next', $id); }
// @codeCoverageIgnoreEnd
function valid($id) { function valid($id) {
if (isset($this->_structure[$id])) { if (isset($this->_structure[$id])) {
return array_keys($this->_structure[$id]); return array_keys($this->_structure[$id]);
@ -168,7 +180,9 @@ class ComicPressStoryline {
} }
} }
} }
// @codeCoverageIgnoreStart
} while ($has_adjacent); } while ($has_adjacent);
// @codeCoverageIgnoreEnd
return $all_adjacent; return $all_adjacent;
} }
return false; return false;
@ -243,9 +257,11 @@ class ComicPressStoryline {
/** /**
* Get a flattened category node list. * Get a flattened category node list.
*/ */
// @codeCoverageIgnoreStart
function get_category_flattened($parent = null) { function get_category_flattened($parent = null) {
return $this->flatten_simple_storyline($this->get_category_simple_structure($parent)); return $this->flatten_simple_storyline($this->get_category_simple_structure($parent));
} }
// @codeCoverageIgnoreEnd
/** /**
* Merge a flat simple storyline into a tree. * Merge a flat simple storyline into a tree.
@ -285,7 +301,6 @@ class ComicPressStoryline {
* Integrates a bunch of other things. * Integrates a bunch of other things.
*/ */
function normalize($flattened_storyline = null, $set = true) { function normalize($flattened_storyline = null, $set = true) {
$comicpress = ComicPress::get_instance();
if (is_null($flattened_storyline)) { if (is_null($flattened_storyline)) {
$flattened_storyline = $this->get_flattened_storyline(); $flattened_storyline = $this->get_flattened_storyline();
} }
@ -418,7 +433,9 @@ class ComicPressStoryline {
} }
} }
} }
// @codeCoverageIgnoreStart
} while ($found_children); } while ($found_children);
// @codeCoverageIgnoreEnd
return $children; return $children;
} }

View File

@ -17,8 +17,18 @@ class ComicPressNavigationTest extends PHPUnit_Framework_TestCase {
$this->assertTrue($this->nav->get_post_nav(false) === false); $this->assertTrue($this->nav->get_post_nav(false) === false);
} }
function testGetPostNavPostHasNoID() {
$this->assertTrue($this->nav->get_post_nav((object)array()) === false);
}
function testGetPostNavFromCache() { function testGetPostNavFromCache() {
$this->markTestIncomplete(); wp_cache_set('navigation-1', array('test' => 2), 'comicpress');
$post_2 = (object)array('ID' => 2);
wp_insert_post((array)$post_2);
$this->assertEquals(array('test' => $post_2), $this->nav->get_post_nav((object)array('ID' => 1)));
} }
function testGetPostNav() { function testGetPostNav() {

View File

@ -14,23 +14,19 @@ class ComicPressStorylineTest extends PHPUnit_Framework_TestCase {
function providerTestCreateStorylineStructure() { function providerTestCreateStorylineStructure() {
return array( return array(
array( array(
false,
false, false,
false false
), ),
array( array(
array('0'), array('0'),
false,
false false
), ),
array( array(
array('1'), array('1'),
false, false,
false
), ),
array( array(
array(array(0,1)), array(array(0,1)),
false,
false false
), ),
array( array(
@ -41,6 +37,10 @@ class ComicPressStorylineTest extends PHPUnit_Framework_TestCase {
array('0/1', '0/1/2'), array('0/1', '0/1/2'),
array('1' => array('next' => 2, 'level' => 1), '2' => array('parent' => 1, 'previous' => 1, 'level' => 2)) array('1' => array('next' => 2, 'level' => 1), '2' => array('parent' => 1, 'previous' => 1, 'level' => 2))
), ),
array(
array('0/1', false),
false
),
array( array(
array('0/1', '0/1/2', '0/1/3'), array('0/1', '0/1/2', '0/1/3'),
array( array(
@ -97,13 +97,29 @@ class ComicPressStorylineTest extends PHPUnit_Framework_TestCase {
* @group cache * @group cache
*/ */
function testCreateStorylineStructureFromCache($input, $expected_structure) { function testCreateStorylineStructureFromCache($input, $expected_structure) {
if (is_string($input)) { $key = $this->css->_create_structure_key($input);
wp_cache_set("storyline-structure-${input}", $expected_structure, 'comicpress'); if ($key !== false) {
} wp_cache_set($key, $expected_structure, 'comicpress');
$this->assertEquals(is_array($expected_structure), $this->css->create_structure($input)); $this->assertEquals(is_array($expected_structure), $this->css->create_structure($input));
$this->assertEquals($expected_structure, $this->css->_structure); $this->assertEquals($expected_structure, $this->css->_structure);
} }
}
function providerTestCreateStructureKey() {
return array(
array(false, false),
array('blah', 'storyline-structure-blah'),
array(array('test', 'test2'), 'storyline-structure-test,test2')
);
}
/**
* @dataProvider providerTestCreateStructureKey
*/
function testCreateStructureKey($input, $expected_key) {
$this->assertTrue($expected_key === $this->css->_create_structure_key($input));
}
function providerTestGetFields() { function providerTestGetFields() {
return array( return array(
@ -511,11 +527,11 @@ class ComicPressStorylineTest extends PHPUnit_Framework_TestCase {
return array( return array(
array( array(
null, null,
array(1,2,3,4,5,6,7) array(1,2,3,4,5,6,8,7)
), ),
array( array(
array(), array(),
array(1,2,3,4,5,6,7) array(1,2,3,4,5,6,8,7)
), ),
array( array(
array('child_of' => 1), array('child_of' => 1),
@ -529,6 +545,14 @@ class ComicPressStorylineTest extends PHPUnit_Framework_TestCase {
array('child_of' => 1, 'only' => 7), array('child_of' => 1, 'only' => 7),
array(1,2,3,7) array(1,2,3,7)
), ),
array(
array('child_of' => 1, '!only' => 2),
array(1, 3)
),
array(
array('child_of' => 4),
array(4,5,6,8)
),
array( array(
array('level' => 1), array('level' => 1),
array(1,4,7) array(1,4,7)
@ -554,7 +578,7 @@ class ComicPressStorylineTest extends PHPUnit_Framework_TestCase {
function testBuildFromRestrictions($restrictions, $expected_categories) { function testBuildFromRestrictions($restrictions, $expected_categories) {
global $post; global $post;
$this->css->set_flattened_storyline('0/1,0/1/2,0/1/3,0/4,0/4/5,0/4/6,0/7'); $this->css->set_flattened_storyline('0/1,0/1/2,0/1/3,0/4,0/4/5,0/4/6,0/4/6/8,0/7');
wp_set_post_categories(1, array(3)); wp_set_post_categories(1, array(3));
$post = (object)array('ID' => 1); $post = (object)array('ID' => 1);
@ -562,6 +586,10 @@ class ComicPressStorylineTest extends PHPUnit_Framework_TestCase {
$this->assertEquals($expected_categories, $this->css->build_from_restrictions($restrictions)); $this->assertEquals($expected_categories, $this->css->build_from_restrictions($restrictions));
} }
function testFindChildrenEmpty() {
$this->assertTrue(false === $this->css->_find_children(null));
}
function providerTestAllAdjacent() { function providerTestAllAdjacent() {
return array( return array(
array(3, 'previous', array(2, 1)), array(3, 'previous', array(2, 1)),
@ -584,6 +612,51 @@ class ComicPressStorylineTest extends PHPUnit_Framework_TestCase {
$this->assertEquals($expected_result, $this->css->all_adjacent($start, $direction)); $this->assertEquals($expected_result, $this->css->all_adjacent($start, $direction));
} }
function providerTestNormalize() {
return array(
array(null, false),
array(true, false),
array(null, true),
array(true, true),
);
}
/**
* @dataProvider providerTestNormalize
*/
function testNormalize($flattened_storyline, $do_set) {
$css = $this->getMock('ComicPressStoryline', array('get_flattened_storyline', 'get_category_flattened', 'normalize_flattened_storyline', 'set_flattened_storyline'));
$css->expects(is_null($flattened_storyline) ? $this->once() : $this->never())->method('get_flattened_storyline');
$css->expects($do_set ? $this->once() : $this->never())->method('set_flattened_storyline');
$css->normalize($flattened_storyline, $do_set);
}
function testExclude() {
$css = $this->getMock('ComicPressStoryline', array('_find_blah'));
$css->expects($this->once())->method('_find_blah')->with(1)->will($this->returnValue(array(1,2,3)));
$css->_category_search = array(1,2,3,4,5,6);
$css->_exclude('_find_blah', 1);
$this->assertEquals(array(4,5,6), $css->_category_search);
}
function providerTestEnsurePostID() {
return array(
array(null, null),
array((object)array('test' => 'blah'), null),
array((object)array('ID' => 1), 1),
array("1", 1),
array("1a", null),
);
}
/**
* @dataProvider providerTestEnsurePostID
*/
function testEnsurePostID($thing, $expected_result) {
$this->assertEquals($expected_result, $this->css->_ensure_post_id($thing));
}
} }
?> ?>