pluginsEnabled[] = 'move'; global $ID; global $INFO; global $conf; $ID = $this->movedId; $text = <<movedId, $text, $summary); $INFO = pageinfo(); $references = array_keys(p_get_metadata($this->movedId, 'relation references', METADATA_RENDER_UNLIMITED)); idx_get_indexer()->addMetaKeys($this->movedId, 'relation_references', $references); $text = <<movedId|$this->movedId]] [[:$this->movedId|:$this->movedId]] [[.current_ns:test_page|.current_ns:test_page]] [[.:current_ns:test_page|.:current_ns:test_page]] [[..parent_ns:current_ns:test_page|..parent_ns:current_ns:test_page]] [[test_page|test_page]] [[new_page|new_page]] [[ftp://somewhere.com|ftp://somewhere.com]] [[http://somewhere.com|http://somewhere.com]] [[start|start]] [[parallel_page|parallel_page]] [[.:|.:]] [[..current_ns:|..current_ns:]] [[..:current_ns:|..:current_ns:]] [[..parallel_ns:|..parallel_ns:]] [[..:parallel_ns:|..:parallel_ns:]] [[..:..:|..:..:]] [[..:..:parent_ns:|..:..:parent_ns:]] [[parent_ns:new_page|parent_ns:new_page]] [[parent_ns/new_page|parent_ns/new_page]] [[/start|/start]] EOT; saveWikiText($this->parentBacklinkingId, $text, $summary); $references = array_keys(p_get_metadata($this->parentBacklinkingId, 'relation references', METADATA_RENDER_UNLIMITED)); idx_get_indexer()->addMetaKeys($this->parentBacklinkingId, 'relation_references', $references); $text = <<movedId|$this->movedId]] [[:$this->movedId|:$this->movedId]] [[..current_ns:test_page|..current_ns:test_page]] [[..:current_ns:test_page|..:current_ns:test_page]] [[test_page|test_page]] [[.test_page|.test_page]] [[.:test_page|.:test_page]] [[..test_page|..test_page]] [[..:test_page|..:test_page]] [[.:..:test_page|.:..:test_page]] [[new_page|new_page]] [[ftp://somewhere.com|ftp://somewhere.com]] [[http://somewhere.com|http://somewhere.com]] [[start|start]] [[parallel_page|parallel_page]] [[.:|.:]] [[..current_ns:|..current_ns:]] [[..:current_ns:|..:current_ns:]] [[..parallel_ns:|..parallel_ns:]] [[..:parallel_ns:|..:parallel_ns:]] [[..:..:|..:..:]] [[..:..:parent_ns:|..:..:parent_ns:]] [[parent_ns:new_page|parent_ns:new_page]] [[parent_ns/new_page|parent_ns/new_page]] [[/start|/start]] EOT; saveWikiText($this->currentNsBacklinkingId, $text, $summary); $references = array_keys(p_get_metadata($this->currentNsBacklinkingId, 'relation references', METADATA_RENDER_UNLIMITED)); idx_get_indexer()->addMetaKeys($this->currentNsBacklinkingId, 'relation_references', $references); $text = <<movedId|$this->movedId]] [[:$this->movedId|:$this->movedId]] [[.current_ns:test_page|.current_ns:test_page]] [[.:current_ns:test_page|.:current_ns:test_page]] [[test_page|test_page]] [[new_page|new_page]] [[ftp://somewhere.com|ftp://somewhere.com]] [[http://somewhere.com|http://somewhere.com]] [[start|start]] [[parallel_page|parallel_page]] [[.:|.:]] [[..current_ns:|..current_ns:]] [[..:current_ns:|..:current_ns:]] [[..parallel_ns:|..parallel_ns:]] [[..:parallel_ns:|..:parallel_ns:]] [[..:..:|..:..:]] [[..:..:parent_ns:|..:..:parent_ns:]] [[parent_ns:new_page|parent_ns:new_page]] [[parent_ns/new_page|parent_ns/new_page]] [[/start|/start]] EOT; saveWikiText($this->otherBacklinkingId, $text, $summary); $references = array_keys(p_get_metadata($this->otherBacklinkingId, 'relation references', METADATA_RENDER_UNLIMITED)); idx_get_indexer()->addMetaKeys($this->otherBacklinkingId, 'relation_references', $references); $text = <<movedId|$this->movedId]] [[:$this->movedId|:$this->movedId]] [[..:..current_ns:test_page|..:..current_ns:test_page]] [[..:..:current_ns:test_page|..:..:current_ns:test_page]] [[test_page|test_page]] [[..:test_page|..:test_page]] [[..:test_page|..:test_page]] [[.:..:test_page|.:..:test_page]] [[new_page|new_page]] [[..:new_page|..:new_page]] [[ftp://somewhere.com|ftp://somewhere.com]] [[http://somewhere.com|http://somewhere.com]] [[start|start]] [[parallel_page|parallel_page]] [[.:|.:]] [[..current_ns:|..current_ns:]] [[..:current_ns:|..:current_ns:]] [[..parallel_ns:|..parallel_ns:]] [[..:parallel_ns:|..:parallel_ns:]] [[..:..:|..:..:]] [[..:..:parent_ns:|..:..:parent_ns:]] [[parent_ns:new_page|parent_ns:new_page]] [[parent_ns/new_page|parent_ns/new_page]] [[/start|/start]] EOT; saveWikiText($this->subNsPage, $text, $summary); $references = array_keys(p_get_metadata($this->subNsPage, 'relation references', METADATA_RENDER_UNLIMITED)); idx_get_indexer()->addMetaKeys($this->subNsPage, 'relation_references', $references); parent::setUp(); // we test under useslash conditions $conf['useslash'] = 1; } /** * @group slow */ function test_move_page_in_same_ns() { global $ID; $newId = getNS($ID).':new_page'; $this->movedToId = $newId; /** @var helper_plugin_move_op $MoveOp */ $MoveOp = plugin_load('helper', 'move_op'); $result = $MoveOp->movePage($ID, $this->movedToId); $this->assertTrue($result); $newContent = rawWiki($this->movedToId); $expectedContent = <<assertEquals($expectedContent, $newContent); $newContent = rawWiki($this->parentBacklinkingId); $expectedContent = <<movedId]] [[parent_ns:current_ns:new_page|:$this->movedId]] [[.current_ns:new_page|.current_ns:test_page]] [[.current_ns:new_page|.:current_ns:test_page]] [[.current_ns:new_page|..parent_ns:current_ns:test_page]] [[test_page|test_page]] [[new_page|new_page]] [[ftp://somewhere.com|ftp://somewhere.com]] [[http://somewhere.com|http://somewhere.com]] [[start|start]] [[parallel_page|parallel_page]] [[.:|.:]] [[..current_ns:|..current_ns:]] [[..:current_ns:|..:current_ns:]] [[..parallel_ns:|..parallel_ns:]] [[..:parallel_ns:|..:parallel_ns:]] [[..:..:|..:..:]] [[..:..:parent_ns:|..:..:parent_ns:]] [[parent_ns:new_page|parent_ns:new_page]] [[parent_ns/new_page|parent_ns/new_page]] [[/start|/start]] EOT; $this->assertEquals($expectedContent, $newContent); $newContent = rawWiki($this->currentNsBacklinkingId); $expectedContent = <<movedId]] [[parent_ns:current_ns:new_page|:$this->movedId]] [[new_page|..current_ns:test_page]] [[new_page|..:current_ns:test_page]] [[new_page|test_page]] [[new_page|.test_page]] [[new_page|.:test_page]] [[..test_page|..test_page]] [[..:test_page|..:test_page]] [[.:..:test_page|.:..:test_page]] [[new_page|new_page]] [[ftp://somewhere.com|ftp://somewhere.com]] [[http://somewhere.com|http://somewhere.com]] [[start|start]] [[parallel_page|parallel_page]] [[.:|.:]] [[..current_ns:|..current_ns:]] [[..:current_ns:|..:current_ns:]] [[..parallel_ns:|..parallel_ns:]] [[..:parallel_ns:|..:parallel_ns:]] [[..:..:|..:..:]] [[..:..:parent_ns:|..:..:parent_ns:]] [[parent_ns:new_page|parent_ns:new_page]] [[parent_ns/new_page|parent_ns/new_page]] [[/start|/start]] EOT; $this->assertEquals($expectedContent, $newContent); $newContent = rawWiki($this->otherBacklinkingId); $expectedContent = <<movedId]] [[$newId|:$this->movedId]] [[.current_ns:test_page|.current_ns:test_page]] [[.:current_ns:test_page|.:current_ns:test_page]] [[test_page|test_page]] [[new_page|new_page]] [[ftp://somewhere.com|ftp://somewhere.com]] [[http://somewhere.com|http://somewhere.com]] [[start|start]] [[parallel_page|parallel_page]] [[.:|.:]] [[..current_ns:|..current_ns:]] [[..:current_ns:|..:current_ns:]] [[..parallel_ns:|..parallel_ns:]] [[..:parallel_ns:|..:parallel_ns:]] [[..:..:|..:..:]] [[..:..:parent_ns:|..:..:parent_ns:]] [[parent_ns:new_page|parent_ns:new_page]] [[parent_ns/new_page|parent_ns/new_page]] [[/start|/start]] EOT; $this->assertEquals($expectedContent, $newContent); } /** * @group slow */ function test_move_page_to_parallel_ns() { global $ID; $newId = 'parent_ns:parallel_ns:new_page'; $this->movedToId = $newId; /** @var helper_plugin_move_op $MoveOp */ $MoveOp = plugin_load('helper', 'move_op'); $result = $MoveOp->movePage($ID, $newId); $this->assertTrue($result); $newContent = rawWiki($this->movedToId); $expectedContent = <<assertEquals($expectedContent, $newContent); $newContent = rawWiki($this->parentBacklinkingId); $expectedContent = <<movedId]] [[parent_ns:parallel_ns:new_page|:$this->movedId]] [[.parallel_ns:new_page|.current_ns:test_page]] [[.parallel_ns:new_page|.:current_ns:test_page]] [[.parallel_ns:new_page|..parent_ns:current_ns:test_page]] [[test_page|test_page]] [[new_page|new_page]] [[ftp://somewhere.com|ftp://somewhere.com]] [[http://somewhere.com|http://somewhere.com]] [[start|start]] [[parallel_page|parallel_page]] [[.:|.:]] [[..current_ns:|..current_ns:]] [[..:current_ns:|..:current_ns:]] [[..parallel_ns:|..parallel_ns:]] [[..:parallel_ns:|..:parallel_ns:]] [[..:..:|..:..:]] [[..:..:parent_ns:|..:..:parent_ns:]] [[parent_ns:new_page|parent_ns:new_page]] [[parent_ns/new_page|parent_ns/new_page]] [[/start|/start]] EOT; $this->assertEquals($expectedContent, $newContent); $newContent = rawWiki($this->currentNsBacklinkingId); $expectedContent = <<movedId]] [[$newId|:$this->movedId]] [[..:parallel_ns:new_page|..current_ns:test_page]] [[..:parallel_ns:new_page|..:current_ns:test_page]] [[..:parallel_ns:new_page|test_page]] [[..:parallel_ns:new_page|.test_page]] [[..:parallel_ns:new_page|.:test_page]] [[..test_page|..test_page]] [[..:test_page|..:test_page]] [[.:..:test_page|.:..:test_page]] [[new_page|new_page]] [[ftp://somewhere.com|ftp://somewhere.com]] [[http://somewhere.com|http://somewhere.com]] [[start|start]] [[parallel_page|parallel_page]] [[.:|.:]] [[..current_ns:|..current_ns:]] [[..:current_ns:|..:current_ns:]] [[..parallel_ns:|..parallel_ns:]] [[..:parallel_ns:|..:parallel_ns:]] [[..:..:|..:..:]] [[..:..:parent_ns:|..:..:parent_ns:]] [[parent_ns:new_page|parent_ns:new_page]] [[parent_ns/new_page|parent_ns/new_page]] [[/start|/start]] EOT; $this->assertEquals($expectedContent, $newContent); $newContent = rawWiki($this->otherBacklinkingId); $expectedContent = <<movedId]] [[$newId|:$this->movedId]] [[.current_ns:test_page|.current_ns:test_page]] [[.:current_ns:test_page|.:current_ns:test_page]] [[test_page|test_page]] [[new_page|new_page]] [[ftp://somewhere.com|ftp://somewhere.com]] [[http://somewhere.com|http://somewhere.com]] [[start|start]] [[parallel_page|parallel_page]] [[.:|.:]] [[..current_ns:|..current_ns:]] [[..:current_ns:|..:current_ns:]] [[..parallel_ns:|..parallel_ns:]] [[..:parallel_ns:|..:parallel_ns:]] [[..:..:|..:..:]] [[..:..:parent_ns:|..:..:parent_ns:]] [[parent_ns:new_page|parent_ns:new_page]] [[parent_ns/new_page|parent_ns/new_page]] [[/start|/start]] EOT; $this->assertEquals($expectedContent, $newContent); } /** * @group slow */ function test_move_page_to_parent_ns() { global $ID; $newId = 'parent_ns:new_page'; $this->movedToId = $newId; /** @var helper_plugin_move_op $MoveOp */ $MoveOp = plugin_load('helper', 'move_op'); $result = $MoveOp->movePage($ID, $newId); //parent_ns:current_ns:test_page -> parent_ns:new_page $this->assertTrue($result); $newContent = rawWiki($this->movedToId); $expectedContent = <<assertEquals($expectedContent, $newContent); // page is moved to same NS as backlinking page (parent_ns) $newContent = rawWiki($this->parentBacklinkingId); $expectedContent = <<movedId]] [[parent_ns:new_page|:$this->movedId]] [[new_page|.current_ns:test_page]] [[new_page|.:current_ns:test_page]] [[new_page|..parent_ns:current_ns:test_page]] [[test_page|test_page]] [[new_page|new_page]] [[ftp://somewhere.com|ftp://somewhere.com]] [[http://somewhere.com|http://somewhere.com]] [[start|start]] [[parallel_page|parallel_page]] [[.:|.:]] [[..current_ns:|..current_ns:]] [[..:current_ns:|..:current_ns:]] [[..parallel_ns:|..parallel_ns:]] [[..:parallel_ns:|..:parallel_ns:]] [[..:..:|..:..:]] [[..:..:parent_ns:|..:..:parent_ns:]] [[parent_ns:new_page|parent_ns:new_page]] [[parent_ns/new_page|parent_ns/new_page]] [[/start|/start]] EOT; $this->assertEquals($expectedContent, $newContent); $newContent = rawWiki($this->currentNsBacklinkingId); $expectedContent = <<movedId]] [[$newId|:$this->movedId]] [[..:new_page|..current_ns:test_page]] [[..:new_page|..:current_ns:test_page]] [[..:new_page|test_page]] [[..:new_page|.test_page]] [[..:new_page|.:test_page]] [[..test_page|..test_page]] [[..:test_page|..:test_page]] [[.:..:test_page|.:..:test_page]] [[new_page|new_page]] [[ftp://somewhere.com|ftp://somewhere.com]] [[http://somewhere.com|http://somewhere.com]] [[start|start]] [[parallel_page|parallel_page]] [[.:|.:]] [[..current_ns:|..current_ns:]] [[..:current_ns:|..:current_ns:]] [[..parallel_ns:|..parallel_ns:]] [[..:parallel_ns:|..:parallel_ns:]] [[..:..:|..:..:]] [[..:..:parent_ns:|..:..:parent_ns:]] [[parent_ns:new_page|parent_ns:new_page]] [[parent_ns/new_page|parent_ns/new_page]] [[/start|/start]] EOT; $this->assertEquals($expectedContent, $newContent); $newContent = rawWiki($this->otherBacklinkingId); $expectedContent = <<movedId]] [[$newId|:$this->movedId]] [[.current_ns:test_page|.current_ns:test_page]] [[.:current_ns:test_page|.:current_ns:test_page]] [[test_page|test_page]] [[new_page|new_page]] [[ftp://somewhere.com|ftp://somewhere.com]] [[http://somewhere.com|http://somewhere.com]] [[start|start]] [[parallel_page|parallel_page]] [[.:|.:]] [[..current_ns:|..current_ns:]] [[..:current_ns:|..:current_ns:]] [[..parallel_ns:|..parallel_ns:]] [[..:parallel_ns:|..:parallel_ns:]] [[..:..:|..:..:]] [[..:..:parent_ns:|..:..:parent_ns:]] [[parent_ns:new_page|parent_ns:new_page]] [[parent_ns/new_page|parent_ns/new_page]] [[/start|/start]] EOT; $this->assertEquals($expectedContent, $newContent); } /** * Ensure that absolute links stay absolute. See https://github.com/michitux/dokuwiki-plugin-move/pull/6#discussion_r15698440 * * @group slow */ function test_move_startpage_of_ns() { saveWikiText('wiki:bar:test', '[[wiki:foo:]]', 'Test setup'); idx_addPage('wiki:bar:test'); saveWikiText('wiki:foo:start', 'bar', 'Test setup'); idx_addPage('wiki:foo:start'); /** @var helper_plugin_move_op $move */ $move = plugin_load('helper', 'move_op'); $this->assertTrue($move->movePage('wiki:foo:start', 'wiki:foo2:start')); $this->assertEquals('[[wiki:foo2:]]', rawWiki('wiki:bar:test')); } /** * If the relative part would be too large, create an absolute link instead. * If the original link ended with a colon and the new link also points to a namespace's startpage: keep the colon. * * @group slow */ function test_move_no_long_rel_links_keep_colon() { saveWikiText('wiki:foo:start', '[[..:..:one_ns_up:]]', 'Test setup'); idx_addPage('wiki:foo:start'); /** @var helper_plugin_move_op $move */ $move = plugin_load('helper', 'move_op'); $this->assertTrue($move->movePage('wiki:foo:start', 'wiki:foo:bar:start')); $this->assertEquals('[[one_ns_up:]]', rawWiki('wiki:foo:bar:start')); } /** * @covers helper_plugin_move_handler::_nsStartCheck * @group slow */ function test_move_to_thisns_start(){ saveWikiText('wiki:foo:test_page', '[[..:..:bar:]]', 'Test setup'); idx_addPage('wiki:foo:test_page'); saveWikiText('bar:start', 'foo', 'Test setup'); idx_addPage('bar:start'); /** @var helper_plugin_move_op $move */ $move = plugin_load('helper', 'move_op'); $this->assertTrue($move->movePage('bar:start', 'wiki:foo:start')); $this->assertEquals('[[.:]]', rawWiki('wiki:foo:test_page')); } function test_move_ns_in_same_ns() { $newNamespace = 'new_ns'; $newPagename = ''; $opts = array(); $opts['page_ns'] = 'ns'; $opts['newns'] = 'parent_ns'.':'.$newNamespace; $opts['newname'] = $newPagename; $this->movedToId = $opts['newns'].':'.$newPagename; //$this->move->_pm_move_recursive($opts); $this->markTestIncomplete('Test must yet be implemented.'); } function test_move_start_ns_into_ns_page() { saveWikiText('bugs:start', 'Bug page', 'created'); idx_addPage('bugs:start'); saveWikiText('foo:bugs:test', '[[bugs:start]]', 'created'); idx_addPage('foo:bugs:test'); /** @var helper_plugin_move_op $move */ $move = plugin_load('helper', 'move_op'); $this->assertTrue($move->movePage('bugs:start', 'bugs')); $this->assertEquals('[[:bugs]]', rawWiki('foo:bugs:test')); $this->assertTrue($move->movePage('bugs', 'start')); $this->assertEquals('[[:start]]', rawWiki('foo:bugs:test')); } function test_clean_id_move() { saveWikiText('some_space:start', 'Space page', 'created'); idx_addPage('some_space:start'); saveWikiText('foo:bar:test', '[[some space:start]]', 'created'); idx_addPage('foo:bar:test'); /** @var helper_plugin_move_op $move */ $move = plugin_load('helper', 'move_op'); $this->assertTrue($move->movePage('some_space:start', 'spaceless:start')); $this->assertEquals('[[spaceless:start]]', rawWiki('foo:bar:test')); } }