You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

630 lines
20 KiB

  1. <?php
  2. // must be run within Dokuwiki
  3. if (!defined('DOKU_INC')) die();
  4. /**
  5. * Test cases for the move plugin
  6. *
  7. * @group plugin_move
  8. * @group plugins
  9. */
  10. class plugin_move_pagemove_test extends DokuWikiTest {
  11. var $movedToId = '';
  12. var $movedId = 'parent_ns:current_ns:test_page';
  13. var $parentBacklinkingId = 'parent_ns:some_page';
  14. var $currentNsBacklinkingId = 'parent_ns:current_ns:some_page';
  15. var $otherBacklinkingId = 'level0:level1:other_backlinking_page';
  16. var $subNsPage = 'parent_ns:current_ns:sub_ns:some_page';
  17. // @todo Move page to an ID which already exists
  18. // @todo Check backlinks of a sub-namespace page (moving same, up, down, different)
  19. function setUp(): void {
  20. parent::setUpBeforeClass();
  21. $this->pluginsEnabled[] = 'move';
  22. global $ID;
  23. global $INFO;
  24. global $conf;
  25. $ID = $this->movedId;
  26. $text = <<<EOT
  27. [[start|start]]
  28. [[parallel_page|parallel_page]]
  29. [[.:|.:]]
  30. [[..current_ns:|..current_ns:]]
  31. [[..:current_ns:|..:current_ns:]]
  32. [[..parallel_ns:|..parallel_ns:]]
  33. [[..:parallel_ns:|..:parallel_ns:]]
  34. [[..:..:|..:..:]]
  35. [[..:..:parent_ns:|..:..:parent_ns:]]
  36. [[parent_ns:new_page|parent_ns:new_page]]
  37. [[parent_ns/new_page|parent_ns/new_page]]
  38. [[/start|/start]]
  39. EOT;
  40. $summary = 'Test';
  41. saveWikiText($this->movedId, $text, $summary);
  42. $INFO = pageinfo();
  43. $references = array_keys(p_get_metadata($this->movedId, 'relation references', METADATA_RENDER_UNLIMITED));
  44. idx_get_indexer()->addMetaKeys($this->movedId, 'relation_references', $references);
  45. $text = <<<EOT
  46. [[$this->movedId|$this->movedId]]
  47. [[:$this->movedId|:$this->movedId]]
  48. [[.current_ns:test_page|.current_ns:test_page]]
  49. [[.:current_ns:test_page|.:current_ns:test_page]]
  50. [[..parent_ns:current_ns:test_page|..parent_ns:current_ns:test_page]]
  51. [[test_page|test_page]]
  52. [[new_page|new_page]]
  53. [[ftp://somewhere.com|ftp://somewhere.com]]
  54. [[http://somewhere.com|http://somewhere.com]]
  55. [[start|start]]
  56. [[parallel_page|parallel_page]]
  57. [[.:|.:]]
  58. [[..current_ns:|..current_ns:]]
  59. [[..:current_ns:|..:current_ns:]]
  60. [[..parallel_ns:|..parallel_ns:]]
  61. [[..:parallel_ns:|..:parallel_ns:]]
  62. [[..:..:|..:..:]]
  63. [[..:..:parent_ns:|..:..:parent_ns:]]
  64. [[parent_ns:new_page|parent_ns:new_page]]
  65. [[parent_ns/new_page|parent_ns/new_page]]
  66. [[/start|/start]]
  67. EOT;
  68. saveWikiText($this->parentBacklinkingId, $text, $summary);
  69. $references = array_keys(p_get_metadata($this->parentBacklinkingId, 'relation references', METADATA_RENDER_UNLIMITED));
  70. idx_get_indexer()->addMetaKeys($this->parentBacklinkingId, 'relation_references', $references);
  71. $text = <<<EOT
  72. [[$this->movedId|$this->movedId]]
  73. [[:$this->movedId|:$this->movedId]]
  74. [[..current_ns:test_page|..current_ns:test_page]]
  75. [[..:current_ns:test_page|..:current_ns:test_page]]
  76. [[test_page|test_page]]
  77. [[.test_page|.test_page]]
  78. [[.:test_page|.:test_page]]
  79. [[..test_page|..test_page]]
  80. [[..:test_page|..:test_page]]
  81. [[.:..:test_page|.:..:test_page]]
  82. [[new_page|new_page]]
  83. [[ftp://somewhere.com|ftp://somewhere.com]]
  84. [[http://somewhere.com|http://somewhere.com]]
  85. [[start|start]]
  86. [[parallel_page|parallel_page]]
  87. [[.:|.:]]
  88. [[..current_ns:|..current_ns:]]
  89. [[..:current_ns:|..:current_ns:]]
  90. [[..parallel_ns:|..parallel_ns:]]
  91. [[..:parallel_ns:|..:parallel_ns:]]
  92. [[..:..:|..:..:]]
  93. [[..:..:parent_ns:|..:..:parent_ns:]]
  94. [[parent_ns:new_page|parent_ns:new_page]]
  95. [[parent_ns/new_page|parent_ns/new_page]]
  96. [[/start|/start]]
  97. EOT;
  98. saveWikiText($this->currentNsBacklinkingId, $text, $summary);
  99. $references = array_keys(p_get_metadata($this->currentNsBacklinkingId, 'relation references', METADATA_RENDER_UNLIMITED));
  100. idx_get_indexer()->addMetaKeys($this->currentNsBacklinkingId, 'relation_references', $references);
  101. $text = <<<EOT
  102. [[$this->movedId|$this->movedId]]
  103. [[:$this->movedId|:$this->movedId]]
  104. [[.current_ns:test_page|.current_ns:test_page]]
  105. [[.:current_ns:test_page|.:current_ns:test_page]]
  106. [[test_page|test_page]]
  107. [[new_page|new_page]]
  108. [[ftp://somewhere.com|ftp://somewhere.com]]
  109. [[http://somewhere.com|http://somewhere.com]]
  110. [[start|start]]
  111. [[parallel_page|parallel_page]]
  112. [[.:|.:]]
  113. [[..current_ns:|..current_ns:]]
  114. [[..:current_ns:|..:current_ns:]]
  115. [[..parallel_ns:|..parallel_ns:]]
  116. [[..:parallel_ns:|..:parallel_ns:]]
  117. [[..:..:|..:..:]]
  118. [[..:..:parent_ns:|..:..:parent_ns:]]
  119. [[parent_ns:new_page|parent_ns:new_page]]
  120. [[parent_ns/new_page|parent_ns/new_page]]
  121. [[/start|/start]]
  122. EOT;
  123. saveWikiText($this->otherBacklinkingId, $text, $summary);
  124. $references = array_keys(p_get_metadata($this->otherBacklinkingId, 'relation references', METADATA_RENDER_UNLIMITED));
  125. idx_get_indexer()->addMetaKeys($this->otherBacklinkingId, 'relation_references', $references);
  126. $text = <<<EOT
  127. [[$this->movedId|$this->movedId]]
  128. [[:$this->movedId|:$this->movedId]]
  129. [[..:..current_ns:test_page|..:..current_ns:test_page]]
  130. [[..:..:current_ns:test_page|..:..:current_ns:test_page]]
  131. [[test_page|test_page]]
  132. [[..:test_page|..:test_page]]
  133. [[..:test_page|..:test_page]]
  134. [[.:..:test_page|.:..:test_page]]
  135. [[new_page|new_page]]
  136. [[..:new_page|..:new_page]]
  137. [[ftp://somewhere.com|ftp://somewhere.com]]
  138. [[http://somewhere.com|http://somewhere.com]]
  139. [[start|start]]
  140. [[parallel_page|parallel_page]]
  141. [[.:|.:]]
  142. [[..current_ns:|..current_ns:]]
  143. [[..:current_ns:|..:current_ns:]]
  144. [[..parallel_ns:|..parallel_ns:]]
  145. [[..:parallel_ns:|..:parallel_ns:]]
  146. [[..:..:|..:..:]]
  147. [[..:..:parent_ns:|..:..:parent_ns:]]
  148. [[parent_ns:new_page|parent_ns:new_page]]
  149. [[parent_ns/new_page|parent_ns/new_page]]
  150. [[/start|/start]]
  151. EOT;
  152. saveWikiText($this->subNsPage, $text, $summary);
  153. $references = array_keys(p_get_metadata($this->subNsPage, 'relation references', METADATA_RENDER_UNLIMITED));
  154. idx_get_indexer()->addMetaKeys($this->subNsPage, 'relation_references', $references);
  155. parent::setUp();
  156. // we test under useslash conditions
  157. $conf['useslash'] = 1;
  158. }
  159. /**
  160. * @group slow
  161. */
  162. function test_move_page_in_same_ns() {
  163. global $ID;
  164. $newId = getNS($ID).':new_page';
  165. $this->movedToId = $newId;
  166. /** @var helper_plugin_move_op $MoveOp */
  167. $MoveOp = plugin_load('helper', 'move_op');
  168. $result = $MoveOp->movePage($ID, $this->movedToId);
  169. $this->assertTrue($result);
  170. $newContent = rawWiki($this->movedToId);
  171. $expectedContent = <<<EOT
  172. [[start|start]]
  173. [[parallel_page|parallel_page]]
  174. [[.:|.:]]
  175. [[..current_ns:|..current_ns:]]
  176. [[..:current_ns:|..:current_ns:]]
  177. [[..parallel_ns:|..parallel_ns:]]
  178. [[..:parallel_ns:|..:parallel_ns:]]
  179. [[..:..:|..:..:]]
  180. [[..:..:parent_ns:|..:..:parent_ns:]]
  181. [[parent_ns:new_page|parent_ns:new_page]]
  182. [[parent_ns/new_page|parent_ns/new_page]]
  183. [[/start|/start]]
  184. EOT;
  185. $this->assertEquals($expectedContent, $newContent);
  186. $newContent = rawWiki($this->parentBacklinkingId);
  187. $expectedContent = <<<EOT
  188. [[parent_ns:current_ns:new_page|$this->movedId]]
  189. [[parent_ns:current_ns:new_page|:$this->movedId]]
  190. [[.current_ns:new_page|.current_ns:test_page]]
  191. [[.current_ns:new_page|.:current_ns:test_page]]
  192. [[.current_ns:new_page|..parent_ns:current_ns:test_page]]
  193. [[test_page|test_page]]
  194. [[new_page|new_page]]
  195. [[ftp://somewhere.com|ftp://somewhere.com]]
  196. [[http://somewhere.com|http://somewhere.com]]
  197. [[start|start]]
  198. [[parallel_page|parallel_page]]
  199. [[.:|.:]]
  200. [[..current_ns:|..current_ns:]]
  201. [[..:current_ns:|..:current_ns:]]
  202. [[..parallel_ns:|..parallel_ns:]]
  203. [[..:parallel_ns:|..:parallel_ns:]]
  204. [[..:..:|..:..:]]
  205. [[..:..:parent_ns:|..:..:parent_ns:]]
  206. [[parent_ns:new_page|parent_ns:new_page]]
  207. [[parent_ns/new_page|parent_ns/new_page]]
  208. [[/start|/start]]
  209. EOT;
  210. $this->assertEquals($expectedContent, $newContent);
  211. $newContent = rawWiki($this->currentNsBacklinkingId);
  212. $expectedContent = <<<EOT
  213. [[parent_ns:current_ns:new_page|$this->movedId]]
  214. [[parent_ns:current_ns:new_page|:$this->movedId]]
  215. [[new_page|..current_ns:test_page]]
  216. [[new_page|..:current_ns:test_page]]
  217. [[new_page|test_page]]
  218. [[new_page|.test_page]]
  219. [[new_page|.:test_page]]
  220. [[..test_page|..test_page]]
  221. [[..:test_page|..:test_page]]
  222. [[.:..:test_page|.:..:test_page]]
  223. [[new_page|new_page]]
  224. [[ftp://somewhere.com|ftp://somewhere.com]]
  225. [[http://somewhere.com|http://somewhere.com]]
  226. [[start|start]]
  227. [[parallel_page|parallel_page]]
  228. [[.:|.:]]
  229. [[..current_ns:|..current_ns:]]
  230. [[..:current_ns:|..:current_ns:]]
  231. [[..parallel_ns:|..parallel_ns:]]
  232. [[..:parallel_ns:|..:parallel_ns:]]
  233. [[..:..:|..:..:]]
  234. [[..:..:parent_ns:|..:..:parent_ns:]]
  235. [[parent_ns:new_page|parent_ns:new_page]]
  236. [[parent_ns/new_page|parent_ns/new_page]]
  237. [[/start|/start]]
  238. EOT;
  239. $this->assertEquals($expectedContent, $newContent);
  240. $newContent = rawWiki($this->otherBacklinkingId);
  241. $expectedContent = <<<EOT
  242. [[parent_ns:current_ns:new_page|$this->movedId]]
  243. [[$newId|:$this->movedId]]
  244. [[.current_ns:test_page|.current_ns:test_page]]
  245. [[.:current_ns:test_page|.:current_ns:test_page]]
  246. [[test_page|test_page]]
  247. [[new_page|new_page]]
  248. [[ftp://somewhere.com|ftp://somewhere.com]]
  249. [[http://somewhere.com|http://somewhere.com]]
  250. [[start|start]]
  251. [[parallel_page|parallel_page]]
  252. [[.:|.:]]
  253. [[..current_ns:|..current_ns:]]
  254. [[..:current_ns:|..:current_ns:]]
  255. [[..parallel_ns:|..parallel_ns:]]
  256. [[..:parallel_ns:|..:parallel_ns:]]
  257. [[..:..:|..:..:]]
  258. [[..:..:parent_ns:|..:..:parent_ns:]]
  259. [[parent_ns:new_page|parent_ns:new_page]]
  260. [[parent_ns/new_page|parent_ns/new_page]]
  261. [[/start|/start]]
  262. EOT;
  263. $this->assertEquals($expectedContent, $newContent);
  264. }
  265. /**
  266. * @group slow
  267. */
  268. function test_move_page_to_parallel_ns() {
  269. global $ID;
  270. $newId = 'parent_ns:parallel_ns:new_page';
  271. $this->movedToId = $newId;
  272. /** @var helper_plugin_move_op $MoveOp */
  273. $MoveOp = plugin_load('helper', 'move_op');
  274. $result = $MoveOp->movePage($ID, $newId);
  275. $this->assertTrue($result);
  276. $newContent = rawWiki($this->movedToId);
  277. $expectedContent = <<<EOT
  278. [[..:current_ns:start|start]]
  279. [[..:current_ns:parallel_page|parallel_page]]
  280. [[..:current_ns:|.:]]
  281. [[..current_ns:|..current_ns:]]
  282. [[..:current_ns:|..:current_ns:]]
  283. [[..parallel_ns:|..parallel_ns:]]
  284. [[..:parallel_ns:|..:parallel_ns:]]
  285. [[..:..:|..:..:]]
  286. [[..:..:parent_ns:|..:..:parent_ns:]]
  287. [[parent_ns:new_page|parent_ns:new_page]]
  288. [[parent_ns/new_page|parent_ns/new_page]]
  289. [[/start|/start]]
  290. EOT;
  291. $this->assertEquals($expectedContent, $newContent);
  292. $newContent = rawWiki($this->parentBacklinkingId);
  293. $expectedContent = <<<EOT
  294. [[parent_ns:parallel_ns:new_page|$this->movedId]]
  295. [[parent_ns:parallel_ns:new_page|:$this->movedId]]
  296. [[.parallel_ns:new_page|.current_ns:test_page]]
  297. [[.parallel_ns:new_page|.:current_ns:test_page]]
  298. [[.parallel_ns:new_page|..parent_ns:current_ns:test_page]]
  299. [[test_page|test_page]]
  300. [[new_page|new_page]]
  301. [[ftp://somewhere.com|ftp://somewhere.com]]
  302. [[http://somewhere.com|http://somewhere.com]]
  303. [[start|start]]
  304. [[parallel_page|parallel_page]]
  305. [[.:|.:]]
  306. [[..current_ns:|..current_ns:]]
  307. [[..:current_ns:|..:current_ns:]]
  308. [[..parallel_ns:|..parallel_ns:]]
  309. [[..:parallel_ns:|..:parallel_ns:]]
  310. [[..:..:|..:..:]]
  311. [[..:..:parent_ns:|..:..:parent_ns:]]
  312. [[parent_ns:new_page|parent_ns:new_page]]
  313. [[parent_ns/new_page|parent_ns/new_page]]
  314. [[/start|/start]]
  315. EOT;
  316. $this->assertEquals($expectedContent, $newContent);
  317. $newContent = rawWiki($this->currentNsBacklinkingId);
  318. $expectedContent = <<<EOT
  319. [[parent_ns:parallel_ns:new_page|$this->movedId]]
  320. [[$newId|:$this->movedId]]
  321. [[..:parallel_ns:new_page|..current_ns:test_page]]
  322. [[..:parallel_ns:new_page|..:current_ns:test_page]]
  323. [[..:parallel_ns:new_page|test_page]]
  324. [[..:parallel_ns:new_page|.test_page]]
  325. [[..:parallel_ns:new_page|.:test_page]]
  326. [[..test_page|..test_page]]
  327. [[..:test_page|..:test_page]]
  328. [[.:..:test_page|.:..:test_page]]
  329. [[new_page|new_page]]
  330. [[ftp://somewhere.com|ftp://somewhere.com]]
  331. [[http://somewhere.com|http://somewhere.com]]
  332. [[start|start]]
  333. [[parallel_page|parallel_page]]
  334. [[.:|.:]]
  335. [[..current_ns:|..current_ns:]]
  336. [[..:current_ns:|..:current_ns:]]
  337. [[..parallel_ns:|..parallel_ns:]]
  338. [[..:parallel_ns:|..:parallel_ns:]]
  339. [[..:..:|..:..:]]
  340. [[..:..:parent_ns:|..:..:parent_ns:]]
  341. [[parent_ns:new_page|parent_ns:new_page]]
  342. [[parent_ns/new_page|parent_ns/new_page]]
  343. [[/start|/start]]
  344. EOT;
  345. $this->assertEquals($expectedContent, $newContent);
  346. $newContent = rawWiki($this->otherBacklinkingId);
  347. $expectedContent = <<<EOT
  348. [[parent_ns:parallel_ns:new_page|$this->movedId]]
  349. [[$newId|:$this->movedId]]
  350. [[.current_ns:test_page|.current_ns:test_page]]
  351. [[.:current_ns:test_page|.:current_ns:test_page]]
  352. [[test_page|test_page]]
  353. [[new_page|new_page]]
  354. [[ftp://somewhere.com|ftp://somewhere.com]]
  355. [[http://somewhere.com|http://somewhere.com]]
  356. [[start|start]]
  357. [[parallel_page|parallel_page]]
  358. [[.:|.:]]
  359. [[..current_ns:|..current_ns:]]
  360. [[..:current_ns:|..:current_ns:]]
  361. [[..parallel_ns:|..parallel_ns:]]
  362. [[..:parallel_ns:|..:parallel_ns:]]
  363. [[..:..:|..:..:]]
  364. [[..:..:parent_ns:|..:..:parent_ns:]]
  365. [[parent_ns:new_page|parent_ns:new_page]]
  366. [[parent_ns/new_page|parent_ns/new_page]]
  367. [[/start|/start]]
  368. EOT;
  369. $this->assertEquals($expectedContent, $newContent);
  370. }
  371. /**
  372. * @group slow
  373. */
  374. function test_move_page_to_parent_ns() {
  375. global $ID;
  376. $newId = 'parent_ns:new_page';
  377. $this->movedToId = $newId;
  378. /** @var helper_plugin_move_op $MoveOp */
  379. $MoveOp = plugin_load('helper', 'move_op');
  380. $result = $MoveOp->movePage($ID, $newId); //parent_ns:current_ns:test_page -> parent_ns:new_page
  381. $this->assertTrue($result);
  382. $newContent = rawWiki($this->movedToId);
  383. $expectedContent = <<<EOT
  384. [[.current_ns:start|start]]
  385. [[.current_ns:parallel_page|parallel_page]]
  386. [[.current_ns:|.:]]
  387. [[.current_ns:|..current_ns:]]
  388. [[.current_ns:|..:current_ns:]]
  389. [[.parallel_ns:|..parallel_ns:]]
  390. [[.parallel_ns:|..:parallel_ns:]]
  391. [[..:..:|..:..:]]
  392. [[..:..:parent_ns:|..:..:parent_ns:]]
  393. [[parent_ns:new_page|parent_ns:new_page]]
  394. [[parent_ns/new_page|parent_ns/new_page]]
  395. [[/start|/start]]
  396. EOT;
  397. // Note: ..:..: is not a great link for a page in a namespace 'parent_ns', but it is correctly resolved.
  398. $this->assertEquals($expectedContent, $newContent);
  399. // page is moved to same NS as backlinking page (parent_ns)
  400. $newContent = rawWiki($this->parentBacklinkingId);
  401. $expectedContent = <<<EOT
  402. [[parent_ns:new_page|$this->movedId]]
  403. [[parent_ns:new_page|:$this->movedId]]
  404. [[new_page|.current_ns:test_page]]
  405. [[new_page|.:current_ns:test_page]]
  406. [[new_page|..parent_ns:current_ns:test_page]]
  407. [[test_page|test_page]]
  408. [[new_page|new_page]]
  409. [[ftp://somewhere.com|ftp://somewhere.com]]
  410. [[http://somewhere.com|http://somewhere.com]]
  411. [[start|start]]
  412. [[parallel_page|parallel_page]]
  413. [[.:|.:]]
  414. [[..current_ns:|..current_ns:]]
  415. [[..:current_ns:|..:current_ns:]]
  416. [[..parallel_ns:|..parallel_ns:]]
  417. [[..:parallel_ns:|..:parallel_ns:]]
  418. [[..:..:|..:..:]]
  419. [[..:..:parent_ns:|..:..:parent_ns:]]
  420. [[parent_ns:new_page|parent_ns:new_page]]
  421. [[parent_ns/new_page|parent_ns/new_page]]
  422. [[/start|/start]]
  423. EOT;
  424. $this->assertEquals($expectedContent, $newContent);
  425. $newContent = rawWiki($this->currentNsBacklinkingId);
  426. $expectedContent = <<<EOT
  427. [[parent_ns:new_page|$this->movedId]]
  428. [[$newId|:$this->movedId]]
  429. [[..:new_page|..current_ns:test_page]]
  430. [[..:new_page|..:current_ns:test_page]]
  431. [[..:new_page|test_page]]
  432. [[..:new_page|.test_page]]
  433. [[..:new_page|.:test_page]]
  434. [[..test_page|..test_page]]
  435. [[..:test_page|..:test_page]]
  436. [[.:..:test_page|.:..:test_page]]
  437. [[new_page|new_page]]
  438. [[ftp://somewhere.com|ftp://somewhere.com]]
  439. [[http://somewhere.com|http://somewhere.com]]
  440. [[start|start]]
  441. [[parallel_page|parallel_page]]
  442. [[.:|.:]]
  443. [[..current_ns:|..current_ns:]]
  444. [[..:current_ns:|..:current_ns:]]
  445. [[..parallel_ns:|..parallel_ns:]]
  446. [[..:parallel_ns:|..:parallel_ns:]]
  447. [[..:..:|..:..:]]
  448. [[..:..:parent_ns:|..:..:parent_ns:]]
  449. [[parent_ns:new_page|parent_ns:new_page]]
  450. [[parent_ns/new_page|parent_ns/new_page]]
  451. [[/start|/start]]
  452. EOT;
  453. $this->assertEquals($expectedContent, $newContent);
  454. $newContent = rawWiki($this->otherBacklinkingId);
  455. $expectedContent = <<<EOT
  456. [[parent_ns:new_page|$this->movedId]]
  457. [[$newId|:$this->movedId]]
  458. [[.current_ns:test_page|.current_ns:test_page]]
  459. [[.:current_ns:test_page|.:current_ns:test_page]]
  460. [[test_page|test_page]]
  461. [[new_page|new_page]]
  462. [[ftp://somewhere.com|ftp://somewhere.com]]
  463. [[http://somewhere.com|http://somewhere.com]]
  464. [[start|start]]
  465. [[parallel_page|parallel_page]]
  466. [[.:|.:]]
  467. [[..current_ns:|..current_ns:]]
  468. [[..:current_ns:|..:current_ns:]]
  469. [[..parallel_ns:|..parallel_ns:]]
  470. [[..:parallel_ns:|..:parallel_ns:]]
  471. [[..:..:|..:..:]]
  472. [[..:..:parent_ns:|..:..:parent_ns:]]
  473. [[parent_ns:new_page|parent_ns:new_page]]
  474. [[parent_ns/new_page|parent_ns/new_page]]
  475. [[/start|/start]]
  476. EOT;
  477. $this->assertEquals($expectedContent, $newContent);
  478. }
  479. /**
  480. * Ensure that absolute links stay absolute. See https://github.com/michitux/dokuwiki-plugin-move/pull/6#discussion_r15698440
  481. *
  482. * @group slow
  483. */
  484. function test_move_startpage_of_ns() {
  485. saveWikiText('wiki:bar:test',
  486. '[[wiki:foo:]]', 'Test setup');
  487. idx_addPage('wiki:bar:test');
  488. saveWikiText('wiki:foo:start',
  489. 'bar', 'Test setup');
  490. idx_addPage('wiki:foo:start');
  491. /** @var helper_plugin_move_op $move */
  492. $move = plugin_load('helper', 'move_op');
  493. $this->assertTrue($move->movePage('wiki:foo:start', 'wiki:foo2:start'));
  494. $this->assertEquals('[[wiki:foo2:]]', rawWiki('wiki:bar:test'));
  495. }
  496. /**
  497. * If the relative part would be too large, create an absolute link instead.
  498. * If the original link ended with a colon and the new link also points to a namespace's startpage: keep the colon.
  499. *
  500. * @group slow
  501. */
  502. function test_move_no_long_rel_links_keep_colon() {
  503. saveWikiText('wiki:foo:start', '[[..:..:one_ns_up:]]', 'Test setup');
  504. idx_addPage('wiki:foo:start');
  505. /** @var helper_plugin_move_op $move */
  506. $move = plugin_load('helper', 'move_op');
  507. $this->assertTrue($move->movePage('wiki:foo:start', 'wiki:foo:bar:start'));
  508. $this->assertEquals('[[one_ns_up:]]', rawWiki('wiki:foo:bar:start'));
  509. }
  510. /**
  511. * @covers helper_plugin_move_handler::_nsStartCheck
  512. * @group slow
  513. */
  514. function test_move_to_thisns_start(){
  515. saveWikiText('wiki:foo:test_page', '[[..:..:bar:]]', 'Test setup');
  516. idx_addPage('wiki:foo:test_page');
  517. saveWikiText('bar:start', 'foo', 'Test setup');
  518. idx_addPage('bar:start');
  519. /** @var helper_plugin_move_op $move */
  520. $move = plugin_load('helper', 'move_op');
  521. $this->assertTrue($move->movePage('bar:start', 'wiki:foo:start'));
  522. $this->assertEquals('[[.:]]', rawWiki('wiki:foo:test_page'));
  523. }
  524. function test_move_ns_in_same_ns() {
  525. $newNamespace = 'new_ns';
  526. $newPagename = '';
  527. $opts = array();
  528. $opts['page_ns'] = 'ns';
  529. $opts['newns'] = 'parent_ns'.':'.$newNamespace;
  530. $opts['newname'] = $newPagename;
  531. $this->movedToId = $opts['newns'].':'.$newPagename;
  532. //$this->move->_pm_move_recursive($opts);
  533. $this->markTestIncomplete('Test must yet be implemented.');
  534. }
  535. function test_move_start_ns_into_ns_page() {
  536. saveWikiText('bugs:start', 'Bug page', 'created');
  537. idx_addPage('bugs:start');
  538. saveWikiText('foo:bugs:test', '[[bugs:start]]', 'created');
  539. idx_addPage('foo:bugs:test');
  540. /** @var helper_plugin_move_op $move */
  541. $move = plugin_load('helper', 'move_op');
  542. $this->assertTrue($move->movePage('bugs:start', 'bugs'));
  543. $this->assertEquals('[[:bugs]]', rawWiki('foo:bugs:test'));
  544. $this->assertTrue($move->movePage('bugs', 'start'));
  545. $this->assertEquals('[[:start]]', rawWiki('foo:bugs:test'));
  546. }
  547. function test_clean_id_move() {
  548. saveWikiText('some_space:start', 'Space page', 'created');
  549. idx_addPage('some_space:start');
  550. saveWikiText('foo:bar:test', '[[some space:start]]', 'created');
  551. idx_addPage('foo:bar:test');
  552. /** @var helper_plugin_move_op $move */
  553. $move = plugin_load('helper', 'move_op');
  554. $this->assertTrue($move->movePage('some_space:start', 'spaceless:start'));
  555. $this->assertEquals('[[spaceless:start]]', rawWiki('foo:bar:test'));
  556. }
  557. }