1<?php 2 3 4class helper_plugin_move_plan_findMissingDocuments_mock extends helper_plugin_move_plan { 5 6 public function findMissingDocuments($src, $dst, $type = self::TYPE_PAGES) { 7 parent::findMissingDocuments($src, $dst, $type); 8 } 9 10 public function getTmpstore() { 11 return $this->tmpstore; 12 } 13 14} 15 16 17/** 18 * Test cases for helper_plugin_move_plan::stepThroughDocuments function of the move plugin 19 * 20 * @group plugin_move 21 * @group plugin_move_unittests 22 * @group plugins 23 * @group unittests 24 * @covers helper_plugin_move_plan::findMissingDocuments 25 */ 26class plugin_move_findMissingPages_test extends DokuWikiTest { 27 28 protected $pluginsEnabled = array('move',); 29 /** @var helper_plugin_move_plan_findMissingDocuments_mock $plan */ 30 protected $plan; 31 32 /** 33 * @coversNothing 34 */ 35 public function setUp(): void { 36 parent::setUp(); 37 $this->plan = new helper_plugin_move_plan_findMissingDocuments_mock(); 38 } 39 40 41 /** 42 * @coversNothing 43 */ 44 public function tearDown(): void { 45 global $conf; 46 47 $dirs = array('indexdir','datadir','metadir', 'mediadir'); 48 foreach ($dirs as $dir) { 49 io_rmdir($conf[$dir],true); 50 mkdir($conf[$dir]); 51 } 52 $this->plan->abort(); 53 parent::tearDown(); 54 } 55 56 57 function test_findMissingPages_empty () { 58 $this->plan->findMissingDocuments('oldns','newns:'); 59 $tmpstore = $this->plan->getTmpstore(); 60 $this->assertSame(array(),$tmpstore['miss']); 61 } 62 63 function test_findMissingPages_missingPage_default () { 64 saveWikiText('start','[[oldns:missing]]','test edit'); 65 idx_addPage('start'); 66 $this->plan->findMissingDocuments('oldns:','newns:'); 67 $tmpstore = $this->plan->getTmpstore(); 68 $this->assertSame(array('oldns:missing' => 'newns:missing',),$tmpstore['miss']); 69 } 70 71 function test_findMissingPages_missingPage_explicit () { 72 saveWikiText('start','[[oldns:missing]]','test edit'); 73 idx_addPage('start'); 74 $this->plan->findMissingDocuments('oldns:','newns:',helper_plugin_move_plan::TYPE_PAGES); 75 $tmpstore = $this->plan->getTmpstore(); 76 $this->assertSame(array('oldns:missing' => 'newns:missing',),$tmpstore['miss']); 77 } 78 79 function test_findMissingPages_missingPage_integrated () { 80 saveWikiText('oldns:start','[[oldns:missing]] {{oldns:missing.png}}','test edit'); 81 idx_addPage('oldns:start'); 82 $this->plan->addPageNamespaceMove('oldns', 'newns'); 83 $this->plan->addMediaNamespaceMove('oldns', 'newns'); 84 85 $this->plan->commit(); 86 87 $missing_file = file(TMP_DIR . '/data/meta/__move_missing'); 88 $this->assertSame(array("oldns:missing\tnewns:missing\n",),$missing_file,'new configuration fails'); 89 90 $missing_media_file = file(TMP_DIR . '/data/meta/__move_missing_media'); 91 $this->assertSame(array("oldns:missing.png\tnewns:missing.png\n",),$missing_media_file,'new configuration fails'); 92 93 } 94 95 function test_findMissingPages_missingMedia () { 96 saveWikiText('start','{{oldns:missing.png}}','test edit'); 97 idx_addPage('start'); 98 $this->plan->findMissingDocuments('oldns:','newns:',helper_plugin_move_plan::TYPE_MEDIA); 99 $tmpstore = $this->plan->getTmpstore(); 100 $this->assertSame(array('oldns:missing.png' => 'newns:missing.png',),$tmpstore['miss_media']); 101 } 102 103 function test_findMissingDocuments_nonMissingMedia () { 104 $filepath = DOKU_TMP_DATA.'media/oldns/oldnsimage.png'; 105 io_makeFileDir($filepath); 106 io_saveFile($filepath,''); 107 saveWikiText('start','{{oldns:oldnsimage.png}}','test edit'); 108 idx_addPage('start'); 109 $this->plan->findMissingDocuments('oldns:','newns:',helper_plugin_move_plan::TYPE_MEDIA); 110 $tmpstore = $this->plan->getTmpstore(); 111 $this->assertSame(array(),$tmpstore['miss_media']); 112 } 113} 114