はじまりの大地
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
<?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]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user