non-html code coverage

This commit is contained in:
John Bintz 2010-01-14 16:19:58 -05:00
parent 99afbd9ee8
commit 6765862e68
2 changed files with 84 additions and 8 deletions

View File

@ -9,15 +9,29 @@ class PostFixtures {
/**
* Initialize the plugin.
*/
// @codeCoverageIgnoreStart
function init() {
add_action('admin_menu', array(&$this, 'admin_menu'));
add_action('admin_notices', array(&$this, 'admin_notices'));
add_action("admin_enqueue_scripts", array(&$this, 'admin_enqueue_scripts'), 10, 1);
foreach (array(
'admin_init' => array(),
'admin_menu' => array(),
'admin_notices' => array(),
'admin_enqueue_scripts' => array(10, 1),
) as $method => $additional_params) {
call_user_func_array(
'add_action',
array_merge(
array($method, array(&$this, $method)),
$additional_params
)
);
}
}
// @codeCoverageIgnoreEnd
/**
* Print any admin notices.
*/
// @codeCoverageIgnoreStart
function admin_notices() {
if (!empty($this->messages)) { ?>
<div class="fade updated">
@ -27,6 +41,7 @@ class PostFixtures {
</div>
<?php }
}
// @codeCoverageIgnoreEnd
/**
* Handle an update.
@ -49,30 +64,39 @@ class PostFixtures {
/**
* Handle the admin_menu action.
*/
// @codeCoverageIgnoreStart
function admin_menu() {
global $plugin_page;
$this->hook_suffix = add_submenu_page('tools.php', __('Post Fixtures', 'post-fixtures'), __('Post Fixtures', 'post-fixtures'), 'manage_options', 'post-fixtures', array(&$this, 'render_admin'));
}
// @codeCoverageIgnoreEnd
if (isset($_POST['pf'])) {
/**
* Handle the admin_init action.
* This is where the processing happens.
*/
function admin_init() {
if (isset($_POST['pf']['_nonce'])) {
if (wp_verify_nonce($_POST['pf']['_nonce'], 'post-fixtures')) {
$this->handle_update($_POST['pf']);
}
}
}
unset($_POST['pf']);
}
/**
* Handle the admin_enqueue_scripts action.
* @param string $hook_suffix The hook suffix for the page being loaded.
*/
// @codeCoverageIgnoreStart
function admin_enqueue_scripts($hook_suffix) {
if ($this->hook_suffix == $hook_suffix) {
wp_enqueue_script('jquery');
wp_enqueue_style('post-fixtures', plugin_dir_url(dirname(__FILE__)) . 'style.css');
}
}
// @codeCoverageIgnoreEnd
/**
* Render the admin page.

View File

@ -9,6 +9,11 @@ class PostFixturesTest extends PHPUnit_Framework_TestCase {
_reset_wp();
$this->pf = new PostFixtures();
$_POST = array();
}
function tearDown() {
$_POST = array();
}
function providerTestParseJSON() {
@ -278,4 +283,51 @@ class PostFixturesTest extends PHPUnit_Framework_TestCase {
}
}
}
function providerTestHandleUpdate() {
return array(
array(array(), false),
array(array('is_ok' => true, 'data' => '{]'), false),
array(array('is_ok' => true, 'data' => '{"test": "test"}'), true),
);
}
/**
* @dataProvider providerTestHandleUpdate
*/
function testHandleUpdate($info, $should_succeed) {
$pf = $this->getMock('PostFixtures', array('process_data', 'remove', 'create'));
foreach (array('process_data', 'remove', 'create') as $method) {
$pf->expects($this->{$should_succeed ? 'once' : 'never'}())->method($method);
}
$pf->handle_update($info);
}
function providerTestAdminInit() {
return array(
array(array(), false),
array(array('pf' => false), false),
array(array('pf' => array()), false),
array(array('pf' => array('_nonce' => false)), false),
array(array('pf' => array('_nonce' => 'post-fixtures')), true),
);
}
/**
* @dataProvider providerTestAdminInit
*/
function testAdminInit($post, $should_update) {
$_POST = $post;
$pf = $this->getMock('PostFixtures', array('handle_update'));
$pf->expects($this->{$should_update ? 'once' : 'never'}())->method('handle_update');
_set_valid_nonce('post-fixtures', 'post-fixtures');
$pf->admin_init();
$this->assertTrue(!isset($_POST['pf']));
}
}