110 lines
3.3 KiB
PHP
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]);
|
|
}
|
|
} |