Files
mr-legend_wiki/lib/plugins/move/_test/plan.test.php
T
2024-07-08 03:32:47 +09:00

110 lines
3.3 KiB
PHP

<?php
// must be run within Dokuwiki
if(!defined('DOKU_INC')) die();
require_once(__DIR__ . '/../helper/plan.php');
/**
* Test cases for the move plugin
*
* @group plugin_move
* @group plugins
*/
class plugin_move_plan_test extends DokuWikiTest {
/**
* Create some page namespace structure
*/
function setUp():void {
$pages = array(
'animals:mammals:bear:brownbear',
'animals:mammals:bear:blackbear',
'animals:mammals:cute:otter',
'animals:mammals:cute:cat',
'animals:mammals:cute:dog',
'animals:insects:butterfly:fly',
'animals:insects:butterfly:moth',
'animals:monkey',
'humans:programmers:andi',
'humans:programmers:joe',
'humans:programmers:john',
'yeti'
);
foreach($pages as $page) {
saveWikiText($page, $page, 'test setup');
}
parent::setUp();
}
/**
* Check that the plan is sorted into the right order
*/
function test_sorting() {
$plan = new test_helper_plugin_move_plan();
$plan->addPageNamespaceMove('animals:mammals:bear', 'animals:mammals:cute:bear');
$plan->addPageNamespaceMove('humans:programmers', 'animals:mammals:cute:programmers');
$plan->addPageMove('humans:programmers:andi', 'animals:insects:butterfly:andi');
$plan->addPageMove('yeti', 'humans:yeti');
$plan->addPageMove('animals:monkey', 'monkey');
$sorted = $plan->sortedPlan();
// the plan is sorted FORWARD (first things first)
$this->assertEquals(5, count($sorted));
$this->assertEquals('humans:programmers:andi', $sorted[0]['src']);
$this->assertEquals('animals:monkey', $sorted[1]['src']);
$this->assertEquals('yeti', $sorted[2]['src']);
$this->assertEquals('animals:mammals:bear', $sorted[3]['src']);
$this->assertEquals('humans:programmers', $sorted[4]['src']);
}
/**
* Move a page out of a namespace and then move the namespace elsewhere
*/
function test_pageinnamespace() {
$plan = new test_helper_plugin_move_plan();
$plan->addPageNamespaceMove('animals:mammals:cute', 'animals:mammals:funny');
$plan->addPageMove('animals:mammals:cute:otter', 'animals:mammals:otter');
$plan->commit();
$list = $plan->getList('pagelist');
// the files are sorted BACKWARDS (first things last)
$this->assertEquals(3, count($list));
$this->assertEquals("animals:mammals:cute:otter\tanimals:mammals:otter", trim($list[2]));
$this->assertEquals("animals:mammals:cute:cat\tanimals:mammals:funny:cat", trim($list[1]));
$this->assertEquals("animals:mammals:cute:dog\tanimals:mammals:funny:dog", trim($list[0]));
}
}
/**
* Class test_helper_plugin_move_plan
*
* gives access to some internal stuff of the class
*/
class test_helper_plugin_move_plan extends helper_plugin_move_plan {
/**
* Access the sorted plan
*
* @return array
*/
function sortedPlan() {
usort($this->plan, array($this, 'planSorter'));
return $this->plan;
}
/**
* Get the full saved list specified by name
*
* @param $name
* @return array
*/
function getList($name) {
return file($this->files[$name]);
}
}