comicpress-theme-core/test/ComicPressStorylineTest.php

139 lines
4.4 KiB
PHP

<?php
require_once('MockPress/mockpress.php');
require_once('PHPUnit/Framework.php');
require_once(dirname(__FILE__) . '/../classes/ComicPressStoryline.inc');
class ComicPressStorylineTest extends PHPUnit_Framework_TestCase {
function setUp() {
_reset_wp();
$this->css = new ComicPressStoryline();
}
function providerTestCreateStorylineStructure() {
return array(
array(
false,
false
),
array(
array('0'),
false
),
array(
array('1'),
false
),
array(
array(array(0,1)),
false
),
array(
array('0/1'),
array('1' => array())
),
array(
array('0/1', '0/1/2'),
array('1' => array('upcoming' => 2), '2' => array('parent' => 1, 'prior' => 1))
),
array(
array('0/1', '0/1/2', '0/1/3'),
array(
'1' => array('upcoming' => 2),
'2' => array('parent' => 1, 'next' => 3, 'prior' => 1, 'upcoming' => 3),
'3' => array('parent' => 1, 'previous' => 2, 'prior' => 2),
)
),
array(
array('0/1', '0/1/2', '0/1/2/3', '0/1/2/4', '0/1/5'),
array(
'1' => array('upcoming' => 2),
'2' => array('parent' => 1, 'next' => 5, 'upcoming' => 3, 'prior' => 1),
'3' => array('parent' => 2, 'next' => 4, 'upcoming' => 4, 'prior' => 2),
'4' => array('parent' => 2, 'previous' => 3, 'upcoming' => 5, 'prior' => 3),
'5' => array('parent' => 1, 'previous' => 2, 'prior' => 4),
)
),
array(
array('0/1', '0/1/2', '0/1/2/3', '0/1/2/4', '0/1/5', '0/1/5/6', '0/1/5/7', '0/1/5/8', '0/1/9'),
array(
'1' => array('upcoming' => 2),
'2' => array('parent' => 1, 'next' => 5, 'upcoming' => 3, 'prior' => 1),
'3' => array('parent' => 2, 'next' => 4, 'upcoming' => 4, 'prior' => 2),
'4' => array('parent' => 2, 'previous' => 3, 'upcoming' => 5, 'prior' => 3),
'5' => array('parent' => 1, 'previous' => 2, 'next' => 9, 'upcoming' => 6, 'prior' => 4),
'6' => array('parent' => 5, 'next' => 7, 'upcoming' => 7, 'prior' => 5),
'7' => array('parent' => 5, 'previous' => 6, 'next' => 8, 'upcoming' => 8, 'prior' => 6),
'8' => array('parent' => 5, 'previous' => 7, 'upcoming' => 9, 'prior' => 7),
'9' => array('parent' => 1, 'previous' => 5, 'prior' => 8),
)
),
);
}
/**
* @dataProvider providerTestCreateStorylineStructure
*/
function testCreateStorylineStructure($input, $expected_structure) {
$this->assertEquals(is_array($expected_structure), $this->css->create_structure($input));
$this->assertEquals($expected_structure, $this->css->_structure);
}
function providerTestGetFields() {
return array(
array('parent', 1, false),
array('parent', 2, 1),
array('next', 3, 4),
array('next', 4, false),
array('previous', 4, 3),
array('previous', 3, false),
array('previous', 2, false),
array('upcoming', 2, 3),
array('upcoming', 3, 4),
array('valid', 1, array('upcoming')),
array('valid', 6, false),
);
}
/**
* @dataProvider providerTestGetFields
*/
function testGetFields($field, $category, $expected_value) {
$this->css->_structure = array(
'1' => array('upcoming' => 2),
'2' => array('parent' => 1, 'prior' => 1, 'upcoming' => 3),
'3' => array('parent' => 2, 'next' => 4, 'upcoming' => 4, 'prior' => 2),
'4' => array('parent' => 2, 'previous' => 3, 'prior' => 3)
);
$this->assertEquals($expected_value, $this->css->{$field}($category));
}
function providerTestGetValidNav() {
return array(
array(array(1), array('upcoming')),
array(array(1,2), false),
array(array(1,4), array('upcoming')),
array(array(2), array('prior', 'upcoming', 'next')),
array(array(3), array('prior', 'previous')),
);
}
/**
* @dataProvider providerTestGetValidNav
*/
function testGetValidNav($post_categories, $expected_navigation) {
wp_set_post_categories(1, $post_categories);
$this->css->_structure = array(
'1' => array('upcoming' => 2),
'2' => array('prior' => 1, 'upcoming' => 3, 'next' => 3),
'3' => array('prior' => 2, 'previous' => 2)
);
$this->assertEquals($expected_navigation, $this->css->get_valid_storyline_nav(1));
}
}
?>