comicpress-manager-1.5/test/ComicPressManagerAdminTest.php

1096 lines
56 KiB
PHP

<?php
require_once('PHPUnit/Framework.php');
require_once(realpath(dirname(__FILE__) . '/../classes/ComicPressManagerAdmin.php'));
require_once(realpath(dirname(__FILE__) . '/../../mockpress/mockpress.php'));
define("CPM_DATE_FORMAT", "Y-m-d");
define("CPM_DOCUMENT_ROOT", realpath(dirname(__FILE__)));
define("CPM_STRLEN_REALPATH_DOCUMENT_ROOT", strlen(realpath(CPM_DOCUMENT_ROOT)));
class ComicPressManagerAdminTest extends PHPUnit_Framework_TestCase {
function setUp() {
global $comicpress_manager;
_reset_wp();
$this->adm = new ComicPressManagerAdmin();
unset($comicpress_manager);
}
function providerTestSetUpHooks() {
return array(
array('actions', 'add_category_form_pre', 'comicpress_categories_warning'),
array('actions', 'pre_post_update', 'handle_pre_post_update'),
array('actions', 'save_post', 'handle_edit_post'),
array('actions', 'edit_form_advanced', 'show_comic_caller'),
array('actions', 'delete_post', 'handle_delete_post'),
array('actions', 'create_category', 'rebuild_storyline_structure'),
array('actions', 'delete_category', 'rebuild_storyline_structure'),
array('actions', 'edit_category', 'rebuild_storyline_structure'),
array('filters', 'manage_posts_columns', 'manage_posts_columns'),
array('actions', 'manage_posts_custom_column', 'manage_posts_custom_column'),
array('actions', 'admin_menu', 'setup_admin_menu')
);
}
/**
* @dataProvider providerTestSetUpHooks
*/
function testSetUpHooks($type, $name, $method) {
global $wp_test_expectations;
$this->assertEquals(array($this->adm, $method), $wp_test_expectations[$type][$name]);
}
function testComicPressCategoriesWarning() {
ob_start();
$this->adm->comicpress_categories_warning();
$this->assertNotEquals("", ob_get_clean());
add_category(1, (object)array('slug' => 'test'));
ob_start();
$this->adm->comicpress_categories_warning();
$this->assertNotEquals("", ob_get_clean());
add_category(2, (object)array('slug' => 'test'));
ob_start();
$this->adm->comicpress_categories_warning();
$this->assertEquals("", ob_get_clean());
}
function providerTestVerifyPostBeforeHook() {
return array(
array(true, null, null, null),
array(false, false, null, null),
array(false, true, false, null),
array(false, true, true, false),
array(false, true, true, true),
);
}
/**
* @dataProvider providerTestVerifyPostBeforeHook
*/
function testVerifyPostBeforeHook($is_managing, $edit_post_integration, $good_post, $is_entry_post) {
global $comicpress_manager;
$comicpress_manager = $this->getMock("ComicPressManager", array('get_cpm_option'));
$comicpress_manager->is_cpm_managing_posts = $is_managing;
$expected_result = false;
if ($is_managing) {
$comicpress_manager->expects($this->never())->method('get_cpm_option');
} else {
$comicpress_manager->expects($this->once())
->method('get_cpm_option')
->will($this->returnValue($edit_post_integration ? "1" : "0"));
if ($good_post) {
$id = wp_insert_post(array(
'post_type' => $is_entry_post ? "entry" : "page"
));
if ($is_entry_post) {
$expected_result = (object)array('post_type' => 'entry', 'ID' => $id);
}
}
}
$this->assertEquals($expected_result, $this->adm->_verify_post_before_hook($id));
}
function testIsPostInComicCategory() {
global $comicpress_manager;
// not in a comic category
$comicpress_manager = $this->getMock("ComicPressManager", array('get_all_comic_categories'));
$comicpress_manager->expects($this->once())
->method('get_all_comic_categories')
->will($this->returnValue(
array(
'category_tree' => array("0/2")
)
));
wp_set_post_categories(1, array(1));
$this->assertFalse($this->adm->_is_post_in_comic_category(1));
// in comic category
$comicpress_manager = $this->getMock("ComicPressManager", array('get_all_comic_categories'));
$comicpress_manager->expects($this->once())
->method('get_all_comic_categories')
->will($this->returnValue(
array(
'category_tree' => array("0/2")
)
));
wp_set_post_categories(2, array(2));
$this->assertTrue($this->adm->_is_post_in_comic_category(2));
}
function testHandlePrePostUpdate() {
global $comicpress_manager;
$target = realpath(dirname(__FILE__) . '/comics');
foreach (glob($target . '/*') as $file ) { @unlink($file); }
touch($target . '/2009-01-01.jpg');
// is in comic category, but doesn't touch existing file because bad timestamp provided
$comicpress_manager = $this->getMock("ComicPressManager", array('get_cpm_option', 'get_all_comic_categories', 'read_information_and_check_config'));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())
->method('get_cpm_option')
->will($this->returnValue("1"));
$comicpress_manager->expects($this->once())
->method('get_all_comic_categories')
->will($this->returnValue(
array(
'category_tree' => array("0/2")
)
));
$comicpress_manager->expects($this->never())->method('read_information_and_check_config');
$id = wp_insert_post(array(
'post_type' => 'entry',
'post_date' => '2009-01-02'
));
wp_set_post_categories($id, array(1));
$_POST = array(
'aa' => md5(rand()),
'mm' => md5(rand()),
'jj' => md5(rand())
);
$this->adm->handle_pre_post_update($id);
// is in comic category, but date didn't change
$comicpress_manager = $this->getMock("ComicPressManager", array('get_cpm_option', 'get_all_comic_categories', 'read_information_and_check_config'));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())
->method('get_cpm_option')
->will($this->returnValue("1"));
$comicpress_manager->expects($this->once())
->method('get_all_comic_categories')
->will($this->returnValue(
array(
'category_tree' => array("0/2")
)
));
$comicpress_manager->expects($this->never())->method('read_information_and_check_config');
$id = wp_insert_post(array(
'post_type' => 'entry',
'post_date' => '2009-01-01'
));
wp_set_post_categories($id, array(2));
$_POST = array(
'aa' => '2009',
'mm' => '01',
'jj' => '01'
);
$this->adm->handle_pre_post_update($id);
// is in comic category, date changed, file not moved
$comicpress_manager = $this->getMock("ComicPressManager", array('get_cpm_option', 'get_all_comic_categories', 'read_information_and_check_config', 'breakdown_comic_filename'));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())
->method('get_cpm_option')
->will($this->returnValue("1"));
$comicpress_manager->expects($this->once())
->method('get_all_comic_categories')
->will($this->returnValue(
array(
'category_tree' => array("0/2")
)
));
$comicpress_manager->expects($this->never())->method('read_information_and_check_config');
$id = wp_insert_post(array(
'post_type' => 'entry',
'post_date' => '2009-01-03'
));
wp_set_post_categories($id, array(2));
$_POST = array(
'aa' => '2009',
'mm' => '01',
'jj' => '02'
);
$comicpress_manager->comic_files = array(
'comics/2009-01-01.jpg'
);
$comicpress_manager->expects($this->once())
->method('breakdown_comic_filename')
->with($this->equalTo('2009-01-01.jpg'))
->will($this->returnValue(
array(
'date' => '2009-01-01'
)
));
$this->adm->handle_pre_post_update($id);
$this->assertFileExists($target . '/2009-01-01.jpg');
// is in comic category, date changed, file moved
$comicpress_manager = $this->getMock("ComicPressManager", array('get_cpm_option', 'get_all_comic_categories', 'read_information_and_check_config', 'breakdown_comic_filename'));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())
->method('get_cpm_option')
->will($this->returnValue("1"));
$comicpress_manager->expects($this->once())
->method('get_all_comic_categories')
->will($this->returnValue(
array(
'category_tree' => array("0/2")
)
));
$comicpress_manager->expects($this->never())->method('read_information_and_check_config');
$id = wp_insert_post(array(
'post_type' => 'entry',
'post_date' => '2009-01-01'
));
wp_set_post_categories($id, array(2));
$_POST = array(
'aa' => '2009',
'mm' => '01',
'jj' => '02'
);
$comicpress_manager->comic_files = array(
realpath(dirname(__FILE__) . '/comics/2009-01-01.jpg')
);
$comicpress_manager->folders = array();
$comicpress_manager->expects($this->once())
->method('breakdown_comic_filename')
->with($this->equalTo('2009-01-01.jpg'))
->will($this->returnValue(
array(
'date' => '2009-01-01'
)
));
$this->adm->handle_pre_post_update($id);
$this->assertFileExists($target . '/2009-01-02.jpg');
@unlink($target . '/2009-01-02.jpg');
}
function testFindThumbnailsByName() {
global $comicpress_manager;
$target = dirname(__FILE__) . '/thumbs';
foreach (glob($target . '/*') as $file ) { @unlink($file); }
touch($target . '/2009-01-01.jpg');
$comicpress_manager->folders = array(
array('test', 'test', false, 'test'),
array('test2', 'test2', false, 'test2'),
array('test3', 'test3', false, 'test3')
);
$comicpress_manager->properties = array(
'comic_folder' => 'comics',
'test' => "thumbs",
'test2' => "thumbs2",
'test3' => "thumbs3",
);
$comicpress_manager->separate_thumbs_folder_defined = array();
$comicpress_manager->separate_thumbs_folder_defined['test'] = true;
$comicpress_manager->separate_thumbs_folder_defined['test2'] = false;
$comicpress_manager->separate_thumbs_folder_defined['test3'] = true;
$result = $this->adm->find_thumbnails_by_filename(dirname(__FILE__) . "/comics/2009-01-01.jpg");
$this->assertEquals(array('test' => '/thumbs/2009-01-01.jpg'), $result);
}
function testHandleEditPost() {
global $comicpress_manager;
// no file uploaded, not in comic category, no meta data
$comicpress_manager = $this->getMock("ComicPressManager", array('get_cpm_option', 'get_all_comic_categories'));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())
->method('get_cpm_option')
->will($this->returnValue("1"));
$comicpress_manager->expects($this->once())
->method('get_all_comic_categories')
->will($this->returnValue(
array(
'category_tree' => array("0/2")
)
));
$id = wp_insert_post(array(
'post_type' => 'entry',
));
wp_set_post_categories($id, array(1));
$this->adm->handle_pre_post_update($id);
$this->assertEquals(array(1), wp_get_post_categories($id));
// no file uploaded, in comic category, meta data
$comicpress_manager = $this->getMock("ComicPressManager", array('get_cpm_option', 'get_all_comic_categories'));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())
->method('get_cpm_option')
->will($this->returnValue("1"));
$comicpress_manager->expects($this->any())
->method('get_all_comic_categories')
->will($this->returnValue(
array(
'category_tree' => array("0/2")
)
));
$id = wp_insert_post(array(
'post_type' => 'entry',
));
wp_set_post_categories($id, array(2));
$_POST['comicpress-img-title'] = "test";
$_POST['comicpress-transcript'] = "test2";
$this->adm->handle_edit_post($id);
$this->assertEquals(array(2), wp_get_post_categories($id));
$this->assertEquals("test", get_post_meta($id, 'hovertext', true));
$this->assertEquals("test2", get_post_meta($id, 'transcript', true));
}
function testObfuscateFilename() {
global $comicpress_manager;
$comicpress_manager = $this->getMock("ComicPressManager", array("breakdown_comic_filename", "get_cpm_option"));
$comicpress_manager->expects($this->once())
->method("breakdown_comic_filename")
->will($this->returnValue(false));
$comicpress_manager->expects($this->never())
->method("get_cpm_option");
$this->assertEquals("test.jpg", $this->adm->obfuscate_filename("test.jpg"));
$comicpress_manager = $this->getMock("ComicPressManager", array("breakdown_comic_filename", "get_cpm_option"));
$comicpress_manager->expects($this->once())
->method("breakdown_comic_filename")
->will($this->returnValue(array('date' => "2009-01-01")));
$comicpress_manager->expects($this->once())
->method("get_cpm_option")
->will($this->returnValue("none"));
$this->assertEquals("2009-01-01.jpg", $this->adm->obfuscate_filename("2009-01-01.jpg"));
$comicpress_manager = $this->getMock("ComicPressManager", array("breakdown_comic_filename", "get_cpm_option"));
$comicpress_manager->expects($this->once())
->method("breakdown_comic_filename")
->will($this->returnValue(array('date' => "2009-01-01", 'title' => '-test')));
$comicpress_manager->expects($this->once())
->method("get_cpm_option")
->will($this->returnValue("append"));
$this->assertTrue(strpos($this->adm->obfuscate_filename("2009-01-01-test.jpg"), "2009-01-01-test") !== false);
$comicpress_manager = $this->getMock("ComicPressManager", array("breakdown_comic_filename", "get_cpm_option"));
$comicpress_manager->expects($this->once())
->method("breakdown_comic_filename")
->will($this->returnValue(array('date' => "2009-01-01", 'title' => '-test')));
$comicpress_manager->expects($this->once())
->method("get_cpm_option")
->will($this->returnValue("replace"));
$result = $this->adm->obfuscate_filename("2009-01-01-test.jpg");
$this->assertFalse(strpos($result, "2009-01-01-test") !== false);
$this->assertTrue(strpos($result, "2009-01-01") !== false);
}
function testGoGDFileCheckOnUpload() {
global $comicpress_manager;
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_cpm_option'));
$comicpress_manager->expects($this->once())->method('breakdown_comic_filename')->will($this->returnValue(false));
$comicpress_manager->expects($this->once())->method('get_cpm_option')->will($this->returnValue(0));
$result = $this->adm->do_gd_file_check_on_upload("test.jpg", "test.jpg");
$this->assertEquals(false, $result['result']);
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_cpm_option'));
$comicpress_manager->expects($this->once())->method('breakdown_comic_filename')->will($this->returnValue(true));
$comicpress_manager->expects($this->once())->method('get_cpm_option')->will($this->returnValue(1));
$comicpress_manager->gd_processor = $this->getMock('ComicPressGDProcessor', array('get_image_size'));
$comicpress_manager->gd_processor->expects($this->once())->method('get_image_size')->will($this->returnValue(false));
$result = $this->adm->do_gd_file_check_on_upload("2009-01-01.jpg", "2009-01-01.jpg");
$this->assertEquals(false, $result['file_ok']);
$this->assertEquals(false, $result['is_cmyk']);
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_cpm_option'));
$comicpress_manager->expects($this->once())->method('breakdown_comic_filename')->will($this->returnValue(true));
$comicpress_manager->expects($this->once())->method('get_cpm_option')->will($this->returnValue(1));
$comicpress_manager->gd_processor = $this->getMock('ComicPressGDProcessor', array('get_image_size'));
$comicpress_manager->gd_processor->expects($this->once())->method('get_image_size')->will($this->returnValue(array('2' => IMAGETYPE_GIF)));
$result = $this->adm->do_gd_file_check_on_upload("2009-01-01.gif", "2009-01-01.gif");
$this->assertEquals(true, $result['file_ok']);
$this->assertEquals(false, $result['is_cmyk']);
$this->assertEquals(false, $result['gd_did_rename']);
$this->assertEquals("2009-01-01.gif", $result['target_filename']);
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_cpm_option'));
$comicpress_manager->expects($this->any())->method('breakdown_comic_filename')->will($this->onConsecutiveCalls(true, false));
$comicpress_manager->expects($this->once())->method('get_cpm_option')->will($this->returnValue(1));
$comicpress_manager->gd_processor = $this->getMock('ComicPressGDProcessor', array('get_image_size'));
$comicpress_manager->gd_processor->expects($this->once())->method('get_image_size')->will($this->returnValue(array('2' => IMAGETYPE_GIF)));
$result = $this->adm->do_gd_file_check_on_upload("2009-01-01.jpg", "2009-01-01.jpg");
$this->assertEquals(true, $result['file_ok']);
$this->assertEquals(false, $result['is_cmyk']);
$this->assertEquals(true, $result['gd_did_rename']);
$this->assertEquals("2009-01-01.gif", $result['target_filename']);
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_cpm_option'));
$comicpress_manager->expects($this->any())->method('breakdown_comic_filename')->will($this->onConsecutiveCalls(true, false));
$comicpress_manager->expects($this->at(1))->method('get_cpm_option')->with('cpm-perform-gd-check')->will($this->returnValue(1));
$comicpress_manager->gd_processor = $this->getMock('ComicPressGDProcessor', array('get_image_size'));
$comicpress_manager->gd_processor->expects($this->once())->method('get_image_size')->will($this->returnValue(array('2' => IMAGETYPE_JPEG, 'channels' => 4)));
$comicpress_manager->scale_method = $this->getMock("ComicPressGDProcessor", array('convert_to_rgb'));
$comicpress_manager->scale_method->expects($this->once())->method('convert_to_rgb')->will($this->returnValue(true));
$comicpress_manager->expects($this->at(2))->method('get_cpm_option')->with('cpm-thumbnail-quality')->will($this->returnValue(80));
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->once())->method('rename');
$result = $this->adm->do_gd_file_check_on_upload("2009-01-01.jpg", "2009-01-01.jpg");
$this->assertEquals(true, $result['file_ok']);
$this->assertEquals(true, $result['is_cmyk']);
$this->assertEquals(false, $result['gd_did_rename']);
$this->assertEquals("2009-01-01.jpg", $result['target_filename']);
}
function testHandleUploadedFile() {
global $comicpress_manager;
update_option('comicpress-manager-cpm-perform-gd-check', 0);
// bad
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_cpm_option'));
$comicpress_manager->expects($this->any())->method("breakdown_comic_filename")->will($this->returnValue(false));
$this->assertEquals(array(array('not handled', 'meow.jpg')), $this->adm->handle_uploaded_file('/tmp/meow.jpg', 'comics', 'meow.jpg', 'meow.jpg'));
// normal
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->once())->method('rename')->with('/tmp/meow.jpg', 'comics/2009-01-01-test.jpg');
$this->adm->_f->expects($this->once())->method('file_exists')->will($this->returnValue(true));
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_cpm_option'));
$comicpress_manager->expects($this->any())->method("breakdown_comic_filename")->will($this->returnValue(array('converted_title' => 'Test')));
$this->assertEquals(
array(
array('file created', 'comics/2009-01-01-test.jpg'),
array('file uploaded', '2009-01-01-test.jpg')
),
$this->adm->handle_uploaded_file(
'/tmp/meow.jpg',
'comics',
'2009-01-01-test.jpg',
'2009-01-01-test.jpg'
)
);
// filesystem error
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->once())->method('rename')->with('/tmp/meow.jpg', 'comics/2009-01-01-test.jpg');
$this->adm->_f->expects($this->once())->method('file_exists')->will($this->returnValue(false));
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_cpm_option'));
$comicpress_manager->expects($this->any())->method("breakdown_comic_filename")->will($this->returnValue(array('converted_title' => 'Test')));
$this->assertEquals(
array(
array('not uploaded', '2009-01-01-test.jpg')
),
$this->adm->handle_uploaded_file(
'/tmp/meow.jpg',
'comics',
'2009-01-01-test.jpg',
'2009-01-01-test.jpg'
)
);
// obfuscate
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->once())->method('rename');
$this->adm->_f->expects($this->once())->method('file_exists')->will($this->returnValue(true));
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_cpm_option'));
$comicpress_manager->expects($this->at(1))->method('get_cpm_option')->with('cpm-perform-gd-check')->will($this->returnValue(0));
$comicpress_manager->expects($this->at(3))->method('get_cpm_option')->with('cpm-obfuscate-filenames-on-upload')->will($this->returnValue(1));
$comicpress_manager->expects($this->any())->method("breakdown_comic_filename")->will($this->returnValue(array('converted_title' => 'Test')));
$result = $this->adm->handle_uploaded_file(
'/tmp/meow.jpg',
'comics',
'2009-01-01-test.jpg',
'2009-01-01-test.jpg'
);
$needed = array('file created', 'file uploaded');
foreach ($result as $message) {
if (($index = array_search($message[0], $needed)) !== false) {
array_splice($needed, $index, 1);
}
}
$this->assertEquals(0, count($needed));
// cmyk
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->any())->method('rename');
$this->adm->_f->expects($this->once())->method('file_exists')->will($this->returnValue(true));
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_cpm_option'));
$comicpress_manager->expects($this->at(1))->method('get_cpm_option')->with('cpm-perform-gd-check')->will($this->returnValue(1));
$comicpress_manager->expects($this->at(2))->method('get_cpm_option')->with('cpm-thumbnail-quality')->will($this->returnValue(0));
$comicpress_manager->expects($this->at(4))->method('get_cpm_option')->with('cpm-obfuscate-filenames-on-upload')->will($this->returnValue(""));
$comicpress_manager->expects($this->any())->method("breakdown_comic_filename")->will($this->returnValue(array('converted_title' => 'Test')));
$comicpress_manager->gd_processor = $this->getMock('ComicPressGDProcessor', array('get_image_size', 'convert_to_rgb'));
$comicpress_manager->gd_processor->expects($this->once())->method('get_image_size')->will($this->returnValue(array('2' => IMAGETYPE_JPEG, 'channels' => 4)));
$comicpress_manager->gd_processor->expects($this->once())->method('convert_to_rgb')->will($this->returnValue(true));
$comicpress_manager->scale_method = $comicpress_manager->gd_processor;
$this->assertEquals(
array(
array('file created', 'comics/2009-01-01-test.jpg'),
array('file uploaded', '2009-01-01-test.jpg'),
array('convert cmyk', '2009-01-01-test.jpg')
),
$this->adm->handle_uploaded_file(
'/tmp/meow.jpg',
'comics',
'2009-01-01-test.jpg',
'2009-01-01-test.jpg'
)
);
// gd rename
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->any())->method('rename');
$this->adm->_f->expects($this->once())->method('file_exists')->will($this->returnValue(true));
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_cpm_option'));
$comicpress_manager->expects($this->at(1))->method('get_cpm_option')->with('cpm-perform-gd-check')->will($this->returnValue(1));
$comicpress_manager->expects($this->at(4))->method('get_cpm_option')->with('cpm-obfuscate-filenames-on-upload')->will($this->returnValue(""));
$comicpress_manager->expects($this->any())->method("breakdown_comic_filename")->will($this->returnValue(array('converted_title' => 'Test')));
$comicpress_manager->gd_processor = $this->getMock('ComicPressGDProcessor', array('get_image_size'));
$comicpress_manager->gd_processor->expects($this->once())->method('get_image_size')->will($this->returnValue(array('2' => IMAGETYPE_JPEG)));
$comicpress_manager->scale_method = $comicpress_manager->gd_processor;
$this->assertEquals(
array(
array('file created', 'comics/2009-01-01-test.jpg'),
array('file uploaded', '2009-01-01-test.jpg'),
array('gd rename file', '2009-01-01-test.gif')
),
$this->adm->handle_uploaded_file(
'/tmp/meow.gif',
'comics',
'2009-01-01-test.gif',
'2009-01-01-test.gif'
)
);
// no extension
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->any())->method('rename');
$this->adm->_f->expects($this->once())->method('file_exists')->will($this->returnValue(true));
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_cpm_option'));
$comicpress_manager->expects($this->at(1))->method('get_cpm_option')->with('cpm-perform-gd-check')->will($this->returnValue(1));
$comicpress_manager->expects($this->at(4))->method('get_cpm_option')->with('cpm-obfuscate-filenames-on-upload')->will($this->returnValue(""));
$comicpress_manager->expects($this->any())->method("breakdown_comic_filename")->will($this->returnValue(array('converted_title' => 'Test')));
$comicpress_manager->gd_processor = $this->getMock('ComicPressGDProcessor', array('get_image_size'));
$comicpress_manager->gd_processor->expects($this->once())->method('get_image_size')->will($this->returnValue(array('2' => IMAGETYPE_JPEG)));
$comicpress_manager->scale_method = $comicpress_manager->gd_processor;
$this->assertEquals(
array(
array('file created', 'comics/2009-01-01-test-jpg.jpg'),
array('file uploaded', '2009-01-01-test-jpg.jpg'),
array('gd rename file', '2009-01-01-test-jpg')
),
$this->adm->handle_uploaded_file(
'/tmp/meow.gif',
'comics',
'2009-01-01-test-jpg',
'2009-01-01-test-jpg'
)
);
// invalid imagetype
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->any())->method('rename');
$this->adm->_f->expects($this->never())->method('file_exists');
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_cpm_option'));
$comicpress_manager->expects($this->at(1))->method('get_cpm_option')->with('cpm-perform-gd-check')->will($this->returnValue(1));
$comicpress_manager->expects($this->any())->method("breakdown_comic_filename")->will($this->returnValue(array('converted_title' => 'Test')));
$comicpress_manager->gd_processor = $this->getMock('ComicPressGDProcessor', array('get_image_size'));
$comicpress_manager->gd_processor->expects($this->once())->method('get_image_size')->will($this->returnValue(false));
$comicpress_manager->scale_method = $comicpress_manager->gd_processor;
$this->assertEquals(
array(
array('invalid image type', '2009-01-01-test.doc'),
),
$this->adm->handle_uploaded_file(
'/tmp/meow.doc',
'comics',
'2009-01-01-test.doc',
'2009-01-01-test.doc'
)
);
}
function testTryUploadFiles() {
global $comicpress_manager;
$_POST['overwrite-existing-file-choice'] = "";
$this->assertFalse($this->adm->_try_upload_replace("meow.jpg", 'comics'));
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->never())->method('unlink')->will($this->returnValue(false));
$_POST['overwrite-existing-file-choice'] = "hiss.jpg";
$this->assertEquals("hiss.jpg", $this->adm->_try_upload_replace("meow.jpg", 'comics'));
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->once())->method('unlink')->will($this->returnValue(false));
$_POST['overwrite-existing-file-choice'] = "hiss.gif";
$this->assertEquals("hiss.jpg", $this->adm->_try_upload_replace("meow.jpg", 'comics'));
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->exactly(2))->method('unlink')->will($this->returnValue(true));
$_POST['overwrite-existing-file-choice'] = "hiss.gif";
$comicpress_manager = $this->getMock('ComicPressManager', array('get_thumbnails_to_generate', 'get_subcomic_directory'));
$comicpress_manager->expects($this->once())->method('get_thumbnails_to_generate')->will($this->returnValue(array('rss')));
$this->assertEquals("hiss.jpg", $this->adm->_try_upload_replace("meow.jpg", 'comics'));
}
function testGeneratePostForUploadFile() {
global $comicpress_manager, $wp_test_expectations;
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename'));
$comicpress_manager->expects($this->once())->method('breakdown_comic_filename')->will($this->returnValue(false));
$this->assertEquals(array('invalid filename', 'meow.jpg'), $this->adm->_generate_post_for_uploaded_file('meow.jpg'));
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'generate_post_hash'));
$comicpress_manager->expects($this->once())->method('breakdown_comic_filename')->will($this->returnValue(array('date' => '2009-01-01', 'converted_title' => "Test")));
$comicpress_manager->expects($this->once())->method('generate_post_hash')->will($this->returnValue(array('post_title' => "Test")));
unset($_POST['duplicate_check']);
$_POST['hovertext-to-use'] = "test";
$_POST['transcript-to-use'] = "test2";
$result = $this->adm->_generate_post_for_uploaded_file("2009-01-01-test.jpg");
$this->assertEquals("Test", $wp_test_expectations['posts'][1]->post_title);
$this->assertEquals("test", get_post_meta(1, "hovertext", true));
$this->assertEquals("test2", get_post_meta(1, "transcript", true));
$this->assertEquals('post created', $result[0]);
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'generate_post_hash'));
$comicpress_manager->expects($this->once())->method('breakdown_comic_filename')->will($this->returnValue(array('date' => '2009-01-01', 'converted_title' => "Test")));
$comicpress_manager->expects($this->once())->method('generate_post_hash')->will($this->returnValue(array('post_title' => "Test")));
$_POST['duplicate_check'] = true;
$result = $this->adm->_generate_post_for_uploaded_file("2009-01-01-test.jpg");
$this->assertEquals('duplicate post', $result[0]);
}
function testWriteThumbnails() {
global $comicpress_manager;
$comicpress_manager = $this->getMock('ComicPressManager');
$comicpress_manager->separate_thumbs_folder_defined = array();
$this->assertNull($this->adm->write_thumbnail('', '', false));
$comicpress_manager = $this->getMock('ComicPressManager', array('get_subcomic_directory'));
$comicpress_manager->separate_thumbs_folder_defined = array('rss' => true);
$comicpress_manager->thumbs_folder_writable = array('rss' => true);
$this->adm->_f = $this->getMock('ComicPressFileOperations', array('file_exists', 'filemtime'));
$this->adm->_f->expects($this->any())->method('file_exists')->will($this->returnValue(false));
$this->assertNull($this->adm->write_thumbnail('', '', false));
$comicpress_manager = $this->getMock('ComicPressManager', array('get_subcomic_directory'));
$comicpress_manager->separate_thumbs_folder_defined = array('rss' => true);
$comicpress_manager->thumbs_folder_writable = array('rss' => true);
$this->adm->_f = $this->getMock('ComicPressFileOperations', array('file_exists', 'filemtime'));
$this->adm->_f->expects($this->any())->method('file_exists')->will($this->returnValue(true));
$this->adm->_f->expects($this->at(2))->method('filemtime')->will($this->returnValue(1));
$this->adm->_f->expects($this->at(3))->method('filemtime')->will($this->returnValue(2));
$this->assertNull($this->adm->write_thumbnail('', '', false));
$comicpress_manager = $this->getMock('ComicPressManager', array('get_subcomic_directory', 'get_cpm_option'));
$comicpress_manager->expects($this->once())->method('get_subcomic_directory')->will($this->returnValue(false));
$comicpress_manager->separate_thumbs_folder_defined = array('rss' => true);
$comicpress_manager->thumbs_folder_writable = array('rss' => true);
$this->adm->_f = $this->getMock('ComicPressFileOperations', array('file_exists', 'filemtime'));
$this->adm->_f->expects($this->any())->method('file_exists')->will($this->returnValue(true));
$this->adm->_f->expects($this->at(1))->method('filemtime')->will($this->returnValue(2));
$this->adm->_f->expects($this->at(2))->method('filemtime')->will($this->returnValue(1));
$comicpress_manager->scale_method = $this->getMock('ComicPressGDProcessor', array('generate_thumbnails'));
$comicpress_manager->properties = array('rss_comic_width' => 1, 'rss_comic_folder' => 'rss');
$comicpress_manager->scale_method->expects($this->once())->method('generate_thumbnails')->with("test.jpg", array(array(CPM_DOCUMENT_ROOT . "/rss/test2.jpg", array('width' => 1))))->will($this->returnValue(1));
$this->assertEquals(1, $this->adm->write_thumbnail('test.jpg', 'test2.jpg', false));
}
function testFindComicByDate() {
global $comicpress_manager;
$comicpress_manager = $this->getMock('ComicPressManager', array('get_comic_folder_path'));
$comicpress_manager->expects($this->any())->method("get_comic_folder_path")->will($this->returnValue("test"));
$this->assertFalse($this->adm->find_comic_by_date("meow"));
$this->adm->_f = $this->getMock('ComicPressFileOperations', array('glob'));
$this->adm->_f->expects($this->once())->method("glob")->will($this->returnValue(false));
$this->assertFalse($this->adm->find_comic_by_date(time()));
$comicpress_manager->allowed_extensions = array("jpg");
$this->adm->_f = $this->getMock('ComicPressFileOperations', array('glob'));
$this->adm->_f->expects($this->once())->method("glob")->will($this->returnValue(array("test.swf", "test.jpg")));
$this->assertEquals("test.jpg", $this->adm->find_comic_by_date(time()));
}
function testHandleDeletePost() {
global $comicpress_manager;
$comicpress_manager = $this->getMock('ComicPressManager');
$comicpress_manager->is_cpm_managing_posts = true;
$comicpress_manager->expects($this->never())->method("get_cpm_option");
$this->adm->handle_delete_post(null);
$comicpress_manager = $this->getMock('ComicPressManager', array('get_cpm_option'));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())->method("get_cpm_option")->will($this->returnValue('0'));
$comicpress_manager->expects($this->never())->method("get_all_comic_categories");
$this->adm->handle_delete_post(null);
$comicpress_manager = $this->getMock('ComicPressManager', array('get_cpm_option'));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())->method("get_cpm_option")->will($this->returnValue('1'));
$comicpress_manager->expects($this->never())->method("get_all_comic_categories");
$this->adm->handle_delete_post(null);
wp_insert_post(array('ID' => 1, 'post_type' => 'page'));
$comicpress_manager = $this->getMock('ComicPressManager', array('get_cpm_option'));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())->method("get_cpm_option")->will($this->returnValue('1'));
$comicpress_manager->expects($this->never())->method("get_all_comic_categories");
$this->adm->handle_delete_post(1);
wp_insert_post(array('ID' => 2, 'post_type' => 'entry', 'post_date' => md5(rand())));
wp_set_post_categories(2, array(1));
$comicpress_manager = $this->getMock('ComicPressManager', array('get_cpm_option', 'get_all_comic_categories'));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())->method("get_cpm_option")->will($this->returnValue('1'));
$comicpress_manager->expects($this->once())->method("get_all_comic_categories")->will($this->returnValue(array('category_tree' => array('0/1'))));
$comicpress_manager->expects($this->never())->method("read_information_and_check_config");
$this->adm->handle_delete_post(2);
wp_insert_post(array('ID' => 3, 'post_type' => 'entry', 'post_date' => "2009-01-01"));
wp_set_post_categories(3, array(1));
$comicpress_manager = $this->getMock('ComicPressManager', array('get_cpm_option', 'get_all_comic_categories', "read_information_and_check_config"));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())->method("get_cpm_option")->will($this->returnValue('1'));
$comicpress_manager->expects($this->once())->method("get_all_comic_categories")->will($this->returnValue(array('category_tree' => array('0/1'))));
$comicpress_manager->expects($this->once())->method("read_information_and_check_config");
$comicpress_manager->expects($this->never())->method("breakdown_comic_filename");
$this->adm->handle_delete_post(3);
$comicpress_manager = $this->getMock('ComicPressManager', array('get_cpm_option', 'get_all_comic_categories', "breakdown_comic_filename"));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())->method("get_cpm_option")->will($this->returnValue('1'));
$comicpress_manager->expects($this->once())->method("get_all_comic_categories")->will($this->returnValue(array('category_tree' => array('0/1'))));
$comicpress_manager->expects($this->never())->method("read_information_and_check_config");
$comicpress_manager->comic_files = array('meow.jpg');
$comicpress_manager->expects($this->once())->method("breakdown_comic_filename")->with('meow.jpg')->will($this->returnValue(false));
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->never())->method("unlink");
$this->adm->handle_delete_post(3);
$comicpress_manager = $this->getMock('ComicPressManager', array('get_cpm_option', 'get_all_comic_categories', "breakdown_comic_filename"));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())->method("get_cpm_option")->will($this->returnValue('1'));
$comicpress_manager->expects($this->once())->method("get_all_comic_categories")->will($this->returnValue(array('category_tree' => array('0/1'))));
$comicpress_manager->expects($this->never())->method("read_information_and_check_config");
$comicpress_manager->comic_files = array('meow.jpg');
$comicpress_manager->expects($this->once())->method("breakdown_comic_filename")->with('meow.jpg')->will($this->returnValue(array('date' => '2009-01-02')));
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->never())->method("unlink");
$this->adm->handle_delete_post(3);
$adm = $this->getMock('ComicPressManagerAdmin', array('find_thumbnails_by_filename'));
$comicpress_manager = $this->getMock('ComicPressManager', array('get_cpm_option', 'get_all_comic_categories', "breakdown_comic_filename"));
$comicpress_manager->is_cpm_managing_posts = false;
$comicpress_manager->expects($this->once())->method("get_cpm_option")->will($this->returnValue('1'));
$comicpress_manager->expects($this->once())->method("get_all_comic_categories")->will($this->returnValue(array('category_tree' => array('0/1'))));
$comicpress_manager->expects($this->never())->method("read_information_and_check_config");
$comicpress_manager->comic_files = array('2009-01-01.jpg');
$comicpress_manager->expects($this->once())->method("breakdown_comic_filename")->with('2009-01-01.jpg')->will($this->returnValue(array('date' => '2009-01-01')));
$adm->_f = $this->getMock('ComicPressFileOperations');
$adm->_f->expects($this->once())->method("unlink");
$adm->expects($this->once())->method('find_thumbnails_by_filename')->with('2009-01-01.jpg')->will($this->returnValue(array()));
$adm->handle_delete_post(3);
}
function testManagePostsCustomColumn() {
global $comicpress_manager, $post;
unset($this->adm->broken_down_comic_files);
$this->adm->manage_posts_custom_column("test");
$this->assertTrue(empty($this->adm->broken_down_comic_files));
$comicpress_manager = $this->getMock('ComicPressManager', array('read_information_and_check_config'));
$comicpress_manager->expects($this->once())->method('read_information_and_check_config');
unset($this->adm->broken_down_comic_files);
$comicpress_manager->comic_files = array();
ob_start();
$this->adm->manage_posts_custom_column("comic");
$result = ob_get_clean();
$this->assertTrue(empty($this->adm->broken_down_comic_files));
$this->assertEquals("", $result);
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename'));
$comicpress_manager->expects($this->never())->method('read_information_and_check_config');
unset($this->adm->broken_down_comic_files);
$comicpress_manager->comic_files = array("meow.jpg");
$comicpress_manager->expects($this->once())->method('breakdown_comic_filename')->with("meow.jpg")->will($this->returnValue(false));
$comicpress_manager->expects($this->never())->method('get_subcomic_directory');
ob_start();
$this->adm->manage_posts_custom_column("comic");
$result = ob_get_clean();
$this->assertTrue(empty($this->adm->broken_down_comic_files));
$this->assertEquals("", $result);
wp_set_post_categories(1, array(2));
$post = (object)array('ID' => 1);
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_subcomic_directory', 'get_all_comic_categories'));
$comicpress_manager->expects($this->never())->method('read_information_and_check_config');
unset($this->adm->broken_down_comic_files);
$comicpress_manager->comic_files = array("2009-01-01.jpg");
$comicpress_manager->expects($this->once())->method('breakdown_comic_filename')->with("2009-01-01.jpg")->will($this->returnValue(array('date' => '2009-01-01')));
$comicpress_manager->expects($this->once())->method('get_subcomic_directory')->will($this->returnValue(false));
$comicpress_manager->expects($this->once())->method('get_all_comic_categories')->will($this->returnValue(array('category_tree' => array("0/1"))));
$comicpress_manager->expects($this->never())->method('find_thumbnails_by_filename');
ob_start();
$this->adm->manage_posts_custom_column("comic");
$result = ob_get_clean();
$this->assertFalse(empty($this->adm->broken_down_comic_files));
$this->assertTrue(($xml = _to_xml($result)) !== false);
$this->assertTrue(_node_exists($xml, '//script[@type="text/javascript"]'));
$this->assertFalse(_node_exists($xml, '//img[@width="100"]'));
wp_set_post_categories(2, array(1));
$post = (object)array('ID' => 2, 'post_date' => '2009-01-02');
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_subcomic_directory', 'get_all_comic_categories'));
$comicpress_manager->expects($this->never())->method('read_information_and_check_config');
unset($this->adm->broken_down_comic_files);
$comicpress_manager->comic_files = array("2009-01-01.jpg");
$comicpress_manager->expects($this->once())->method('breakdown_comic_filename')->with("2009-01-01.jpg")->will($this->returnValue(array('date' => '2009-01-01')));
$comicpress_manager->expects($this->once())->method('get_subcomic_directory')->will($this->returnValue(false));
$comicpress_manager->expects($this->once())->method('get_all_comic_categories')->will($this->returnValue(array('category_tree' => array("0/1"))));
$comicpress_manager->expects($this->never())->method('find_thumbnails_by_filename');
ob_start();
$this->adm->manage_posts_custom_column("comic");
$result = ob_get_clean();
$this->assertFalse(empty($this->adm->broken_down_comic_files));
$this->assertTrue(($xml = _to_xml($result)) !== false);
$this->assertTrue(_node_exists($xml, '//script[@type="text/javascript"]'));
$this->assertFalse(_node_exists($xml, '//img[@width="100"]'));
wp_set_post_categories(3, array(1));
$post = (object)array('ID' => 3, 'post_date' => '2009-01-01');
$adm = $this->getMock('ComicPressManagerAdmin', array('find_thumbnails_by_filename'));
$comicpress_manager = $this->getMock('ComicPressManager', array('breakdown_comic_filename', 'get_subcomic_directory', 'get_all_comic_categories', 'build_comic_uri'));
$comicpress_manager->expects($this->never())->method('read_information_and_check_config');
unset($adm->broken_down_comic_files);
$comicpress_manager->comic_files = array("2009-01-01.jpg");
$comicpress_manager->expects($this->once())->method('breakdown_comic_filename')->with("2009-01-01.jpg")->will($this->returnValue(array('date' => '2009-01-01')));
$comicpress_manager->expects($this->once())->method('get_subcomic_directory')->will($this->returnValue(false));
$comicpress_manager->expects($this->once())->method('get_all_comic_categories')->will($this->returnValue(array('category_tree' => array("0/1"))));
$adm->expects($this->once())->method('find_thumbnails_by_filename')->will($this->returnValue(array()));
ob_start();
$adm->manage_posts_custom_column("comic");
$result = ob_get_clean();
$this->assertFalse(empty($adm->broken_down_comic_files));
$this->assertTrue(($xml = _to_xml($result)) !== false);
$this->assertTrue(_node_exists($xml, '//script[@type="text/javascript"]'));
$this->assertTrue(_node_exists($xml, '//img[@width="100"]'));
}
function testIncludeJavascript() {
$a = $this->getMock('ComicPressManagerAdmin', array('get_plugin_path'));
update_option('siteurl', 'http://test');
$a->expects($this->any())->method('get_plugin_path')->will($this->returnValue('plu'));
$a->_f = $this->getMock('ComicPressFileOperations', array('realpath', 'file_exists'));
$a->_f->expects($this->once())->method('realpath')->will($this->returnValue('/site/js'));
$a->_f->expects($this->once())->method('file_exists')->with('/site/js/minified-test.js')->will($this->returnValue(false));
ob_start();
$a->include_javascript("test.js");
$result = ob_get_clean();
$this->assertTrue(strpos($result, "http://test/plu/js/test.js") !== false);
$a->_f = $this->getMock('ComicPressFileOperations', array('realpath', 'file_exists', 'filemtime'));
$a->_f->expects($this->once())->method('realpath')->will($this->returnValue('/site/js'));
$a->_f->expects($this->once())->method('file_exists')->with('/site/js/minified-test.js')->will($this->returnValue(true));
$a->_f->expects($this->at(2))->method('filemtime')->with('/site/js/minified-test.js')->will($this->returnValue(1));
$a->_f->expects($this->at(3))->method('filemtime')->with('/site/js/test.js')->will($this->returnValue(2));
ob_start();
$a->include_javascript("test.js");
$result = ob_get_clean();
$this->assertTrue(strpos($result, "http://test/plu/js/test.js") !== false);
$a->_f = $this->getMock('ComicPressFileOperations', array('realpath', 'file_exists', 'filemtime'));
$a->_f->expects($this->once())->method('realpath')->will($this->returnValue('/site/js'));
$a->_f->expects($this->once())->method('file_exists')->with('/site/js/minified-test.js')->will($this->returnValue(true));
$a->_f->expects($this->at(2))->method('filemtime')->with('/site/js/minified-test.js')->will($this->returnValue(12));
$a->_f->expects($this->at(3))->method('filemtime')->with('/site/js/test.js')->will($this->returnValue(1));
ob_start();
$a->include_javascript("test.js");
$result = ob_get_clean();
$this->assertTrue(strpos($result, "http://test/plu/js/minified-test.js") !== false);
}
function testGetBackupFiles() {
global $comicpress_manager;
$comicpress_manager = (object)array('config_filepath' => '/test/test2.php');
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->once())->method("glob")->with("/test/comicpress-config.php.*")->will($this->returnValue(array()));
$this->assertTrue(count($this->adm->get_backup_files()) == 0);
$this->adm->_f = $this->getMock('ComicPressFileOperations');
$this->adm->_f->expects($this->once())->method("glob")->with("/test/comicpress-config.php.*")->will($this->returnValue(array("/test/comicpress-config.php.meow", "/test/comicpress-config.php.12345")));
$this->assertEquals(array('12345'), $this->adm->get_backup_files());
}
function testHandleWarnings() {
global $comicpress_manager;
foreach (array('messages', 'warnings') as $type) {
$comicpress_manager = (object)array($type => array('test'), 'show_config_editor' => false);
ob_start();
$this->assertTrue($this->adm->handle_warnings());
$result = ob_get_clean();
$this->assertTrue(!empty($result), $type);
$this->assertTrue(($xml = _to_xml($result)) !== false);
$this->assertTrue(_node_exists($xml, '//div[@id="cpm-' . $type . '"]'));
$this->assertFalse(strpos($result, "You won't be able") !== false);
$this->assertFalse(strpos($result, "Debug info") !== false);
}
$adm = $this->getMock('ComicPressManagerAdmin', array('edit_config', 'get_backup_files'));
$adm->expects($this->any())->method('edit_config');
$adm->expects($this->any())->method('get_backup_files')->will($this->returnValue(array()));
$comicpress_manager = $this->getMock('ComicPressManager', array('get_subcomic_directory'));
$comicpress_manager->errors = array('test');
$comicpress_manager->show_config_editor = false;
$comicpress_manager->config_method = "";
ob_start();
$this->assertFalse($adm->handle_warnings());
$result = ob_get_clean();
$this->assertTrue(strpos($result, "You won't be able") !== false);
$this->assertTrue(strpos($result, "Debug info") !== false);
$comicpress_manager = $this->getMock('ComicPressManager', array('get_subcomic_directory'));
$comicpress_manager->errors = array('test');
$comicpress_manager->show_config_editor = true;
$comicpress_manager->config_method = "";
add_category(1, (object)array('name' => 'Test'));
ob_start();
$this->assertFalse($adm->handle_warnings());
$result = ob_get_clean();
$this->assertTrue(strpos($result, "You won't be able") !== false);
$this->assertTrue(strpos($result, "<td>Test</td>") !== false);
$this->assertTrue(strpos($result, '<td align="center">1</td>') !== false);
$adm = $this->getMock('ComicPressManagerAdmin', array('edit_config', 'get_backup_files'));
$adm->expects($this->never())->method('edit_config');
$adm->expects($this->once())->method('get_backup_files')->will($this->returnValue(array('12345')));
$comicpress_manager = $this->getMock('ComicPressManager', array('get_subcomic_directory'));
$comicpress_manager->errors = array('test');
$comicpress_manager->show_config_editor = false;
$comicpress_manager->can_write_config = true;
$comicpress_manager->config_method = "comicpress-config.php";
ob_start();
$this->assertFalse($adm->handle_warnings());
$result = ob_get_clean();
$this->assertFalse(strpos($result, "You won't be able") !== false);
$this->assertTrue(strpos($result, "Some backup") !== false);
$this->assertTrue(strpos($result, '<option value="12345">') !== false);
$this->assertTrue(strpos($result, "Debug info") !== false);
}
function testSetupAdminMenu() {
global $comicpress_manager, $plugin_page, $wp_test_expectations, $pagenow;
$comicpress_manager = $this->getMock('ComicPressManager', array('read_information_and_check_config'));
$comicpress_manager->expects($this->any())->method('read_information_and_check_config');
$plugin_page = "meow";
$this->adm->setup_admin_menu();
foreach (array(
array('menu', 'ComicPress', '_index_caller'),
array('submenu', 'Upload', '_index_caller'),
array('submenu', 'Import', '_import_caller'),
array('submenu', 'Bulk Edit', '_bulk_edit_caller'),
array('submenu', 'Storyline Structure', '_storyline_caller'),
array('submenu', 'Change Dates', '_dates_caller'),
array('submenu', 'ComicPress Config', '_comicpress_config_caller'),
array('submenu', 'Manager Config', '_manager_config_caller'),
) as $info) {
list ($type, $name, $function) = $info;
$found = false;
foreach ($wp_test_expectations['pages'] as $page) {
if ($page['menu_title'] == $name) {
switch ($type) {
case "menu":
$this->assertEquals("", $page['parent']);
break;
case "submenu":
$this->assertNotEquals("", $page['parent']);
break;
}
$this->assertEquals(array($this->adm, $function), $page['function'], "callback for ${name} not set");
$found = true;
break;
}
}
if (!$found) {
$this->assertFalse(true, "${name} not found");
}
}
$this->assertFalse(_did_wp_enqueue_script("prototype"));
_reset_wp();
$pagenow = "post.php";
$this->adm->setup_admin_menu();
$this->assertFalse(_did_wp_enqueue_script("prototype"));
_reset_wp();
$_REQUEST['action'] = "edit";
$this->adm->setup_admin_menu();
$this->assertTrue(_did_wp_enqueue_script("prototype"));
_reset_wp();
$pagenow = "";
$_REQUEST['action'] = "";
$plugin_page = realpath(dirname(__FILE__) . '/../classes/ComicPressManagerAdmin.php');
$this->adm->setup_admin_menu();
$this->assertTrue(_did_wp_enqueue_script("prototype"));
}
}
?>