refactor class and link code and code coverage

This commit is contained in:
John Bintz 2009-11-28 11:13:24 -05:00
parent 50bbc6ff5a
commit ba6281b2c3
3 changed files with 202 additions and 145 deletions

1
.gitignore vendored
View File

@ -3,3 +3,4 @@
.project
.settings/
.DS_Store
coverage/

View File

@ -10,9 +10,6 @@ class GraphicalNavigationWidgetTest extends PHPUnit_Framework_TestCase {
$this->w = new GraphicalNavigationWidget();
}
/**
* @covers WidgetComicPressGraphicalStorylineNavigation::update
*/
function testUpdateWidget() {
$result = $this->w->update(array(
"next" => "<b>test</b>",
@ -41,7 +38,6 @@ class GraphicalNavigationWidgetTest extends PHPUnit_Framework_TestCase {
/**
* @dataProvider providerTestIsNavLinkVisible
* @covers WidgetComicPressGraphicalStorylineNavigation::_will_display_nav_link
*/
function testIsNavLinkVisible($which, $current_id, $target_id, $expected_result) {
$current = (object)array('ID' => $current_id);
@ -76,7 +72,6 @@ class GraphicalNavigationWidgetTest extends PHPUnit_Framework_TestCase {
/**
* @dataProvider providerTestGroupNavigationButtons
* @covers WidgetComicPressGraphicalStorylineNavigation::_group_navigation_buttons
*/
function testGroupNavigationButtons($buttons, $expected_grouping) {
_set_filter_expectation('comicpress_navigation_grouping_details', array(array(
@ -88,6 +83,14 @@ class GraphicalNavigationWidgetTest extends PHPUnit_Framework_TestCase {
$this->assertEquals($expected_grouping, $this->w->_group_navigation_buttons($buttons, array()));
}
/**
* @expectedException PHPUnit_Framework_Error
*/
function testGroupNavigationButtonsNoDefaultGroup() {
_set_filter_expectation('comicpress_navigation_grouping_details', array(array()));
$this->w->_group_navigation_buttons(array(), array());
}
function providerTestSetUpPostNavStoryPrev() {
return array(
array(
@ -230,6 +233,43 @@ class GraphicalNavigationWidgetTest extends PHPUnit_Framework_TestCase {
$css->set_up_post_nav(array());
}
function providerTestGetLinkNaviClassNames() {
return array(
array(
'previous', (object)array('guid' => 'previous'), array(), array(
'link' => 'previous',
'navi_class_names' => array('navi-previous', 'navi-prev')
)
),
array(
'last', (object)array('guid' => 'last'), array('lastgohome' => 'off'), array(
'link' => 'last',
'navi_class_names' => array('navi-last')
)
),
array(
'last', (object)array('guid' => 'last'), array('lastgohome' => 'on'), array(
'link' => 'home',
'navi_class_names' => array('navi-last')
)
),
array(
'next', 'next', array(), array(
'link' => 'next',
'navi_class_names' => array('navi-next')
)
),
);
}
/**
* @dataProvider providerTestGetLinkNaviClassNames
*/
function testGetLinkNaviClassNames($which, $target, $instance, $expected_results) {
_set_bloginfo('url', 'home');
$this->assertEquals($expected_results, $this->w->_get_link_navi_class_names($which, null, $target, $instance));
}
}
?>

View File

@ -11,6 +11,7 @@ Author URI: http://frumph.net/
require_once(dirname(__FILE__) . '/../classes/ComicPressNavigation.inc');
class GraphicalNavigationWidget extends WP_Widget {
// @codeCoverageIgnoreStart
function GraphicalNavigationWidget() {
$widget_ops = array('classname' => 'WidgetComicPressGraphicalStorylineNavigation', 'description' => __('Displays Graphical Navigation Buttons. (used in comic sidebars)','comicpress') );
$this->WP_Widget('graphicalstorylinenavigation', __('Comic Navigation','comicpress'), $widget_ops);
@ -58,12 +59,6 @@ class GraphicalNavigationWidget extends WP_Widget {
function comicpress_display_navigation_link($which, $current, $target, $instance, $content = '') {
global $id;
$css_name_mapping = array(
'story_prev' => 'prevchap',
'previous' => 'prev',
'story_next' => 'nextchap'
);
$ok = true;
switch ($which) {
case 'first':
@ -93,23 +88,9 @@ class GraphicalNavigationWidget extends WP_Widget {
case 'story_next':
case 'story_prev_in':
case 'story_next_in':
$obj_ok = false;
$navi_class_names = array("navi-${which}");
$link = false;
if (is_object($target)) {
$obj_ok = true;
if (isset($css_name_mapping[$which])) { $navi_class_names[] = "navi-{$css_name_mapping[$which]}"; }
extract($this->_get_link_navi_class_names($which, $current, $target, $instance));
$link = get_permalink($target->ID);
if (($which == 'last') && ($instance['lastgohome'] == 'on')) { $link = get_bloginfo('url'); }
}
if (($filter_link = array_shift(apply_filters('comicpress_display_navigation_link', $link, $which, $current, $target, $instance))) !== false) {
$link = $filter_link;
$obj_ok = true;
}
if ($ok && $obj_ok) {
if ($ok && $link) {
?><a href="<?php echo $link; ?>"
class="navi <?php echo implode(" ", $navi_class_names); ?>"
title="<?php echo $instance["${which}_title"]; ?>"><?php echo htmlspecialchars_decode($instance["${which}_title"]); ?></a><?php
@ -152,6 +133,37 @@ class GraphicalNavigationWidget extends WP_Widget {
}
return array($which, $current, $target, $instance, ob_get_clean());
}
// @codeCoverageIgnoreEnd
function _get_link_navi_class_names($which, $current, $target, $instance) {
$css_name_mapping = array(
'story_prev' => 'prevchap',
'previous' => 'prev',
'story_next' => 'nextchap'
);
$navi_class_names = array("navi-${which}");
if (isset($css_name_mapping[$which])) { $navi_class_names[] = "navi-{$css_name_mapping[$which]}"; }
$link = false;
if (is_object($target)) {
if (($which == 'last') && ($instance['lastgohome'] == 'on')) {
$link = get_bloginfo('url');
} else {
$link = get_permalink($target);
}
} else {
if (is_string($target)) {
$link = $target;
}
}
if (($filter_link = apply_filters('comicpress_display_navigation_link', $link, $which, $current, $target, $instance)) !== false) {
$link = $filter_link;
}
return compact('link', 'navi_class_names');
}
/**
* Returns true if the combination of target and current post will show or hide this nav link.
@ -177,6 +189,7 @@ class GraphicalNavigationWidget extends WP_Widget {
return apply_filters('comicpress_graphical_navigation_will_display_nav_link', $return, $which, $current, $target);
}
// @codeCoverageIgnoreStart
/**
* Get the order of the buttons to be displayed on-screen.
*/
@ -193,6 +206,7 @@ class GraphicalNavigationWidget extends WP_Widget {
'comic_navi_right' => array('story_next', 'story_next_in', 'next', 'last')
);
}
// @codeCoverageIgnoreEnd
function _group_navigation_buttons($buttons = array(), $grouped_buttons = array()) {
$grouping_hash = array();
@ -210,7 +224,9 @@ class GraphicalNavigationWidget extends WP_Widget {
if (is_null($default_group)) {
trigger_error('No default group defined for filter comicpress_navigation_grouping_details', E_USER_WARNING);
// @codeCoverageIgnoreStart
}
// @codeCoverageIgnoreEnd
$groups = array();
foreach ($buttons as $key => $button) {