1<?php 2 3namespace dokuwiki\plugin\struct\test\action; 4 5use dokuwiki\plugin\struct\meta; 6use dokuwiki\plugin\struct\test\StructTest; 7 8/** 9 * Tests for the move plugin support of the struct plugin 10 * 11 * @group plugin_struct 12 * @group plugins 13 * @covers action_plugin_struct_move 14 */ 15class MoveTest extends StructTest 16{ 17 18 protected $data1 = [ 19 'page' => 'wiki:syntax', 20 'pages' => ['wiki:syntax', 'wiki:welcome'], 21 'lookup' => '["page1",0]', 22 'lookups' => ['["page1",0]', '["page2",0]'], 23 'media' => 'wiki:logo.png', 24 'medias' => ['wiki:logo.png'], 25 'title' => 'wiki:syntax', 26 'titles' => ['wiki:syntax', 'wiki:welcome'] 27 ]; 28 29 protected $data2 = [ 30 'page' => 'wiki:syntax#something', 31 'pages' => ['wiki:syntax#something', 'wiki:welcome#something'], 32 'lookup' => '["page1",0]', 33 'lookups' => ['["page1",0]', '["page2",0]'], 34 'media' => 'wiki:logo.png', 35 'medias' => ['wiki:logo.png'], 36 'title' => 'wiki:syntax#something', 37 'titles' => ['wiki:syntax#something', 'wiki:welcome#something'] 38 ]; 39 40 protected $empty = [ 41 'page' => '', 42 'pages' => [], 43 'lookup' => '', 44 'lookups' => [], 45 'media' => '', 46 'medias' => [], 47 'title' => '', 48 'titles' => [] 49 ]; 50 51 public function setUp(): void 52 { 53 parent::setUp(); 54 $this->loadSchemaJSON('moves'); 55 56 $schemaData = meta\AccessTable::getPageAccess('moves', 'page1'); 57 $schemaData->saveData($this->data1); 58 59 $schemaData = meta\AccessTable::getPageAccess('moves', 'page2'); 60 $schemaData->saveData($this->data2); 61 } 62 63 public function test_selfmove() 64 { 65 // fake move event 66 $evdata = ['src_id' => 'page1', 'dst_id' => 'page3']; 67 $event = new \Doku_Event('PLUGIN_MOVE_PAGE_RENAME', $evdata); 68 $event->trigger(); 69 70 // old page should be gone 71 $schemaData = meta\AccessTable::getPageAccess('moves', 'page1'); 72 $this->assertEquals($this->empty, $schemaData->getDataArray()); 73 74 // new page should have adjusted data 75 $data = $this->data1; 76 $data['lookup'] = '["page3",0]'; 77 $data['lookups'] = ['["page3",0]', '["page2",0]']; 78 $schemaData = meta\AccessTable::getPageAccess('moves', 'page3'); 79 $this->assertEquals($data, $schemaData->getDataArray()); 80 81 // other page should have adjusted lookups 82 $data = $this->data2; 83 $data['lookup'] = '["page3",0]'; 84 $data['lookups'] = ['["page3",0]', '["page2",0]']; 85 $schemaData = meta\AccessTable::getPageAccess('moves', 'page2'); 86 $this->assertEquals($data, $schemaData->getDataArray()); 87 } 88 89 public function test_pagemove() 90 { 91 // fake move event 92 $evdata = ['src_id' => 'wiki:syntax', 'dst_id' => 'foobar']; 93 $event = new \Doku_Event('PLUGIN_MOVE_PAGE_RENAME', $evdata); 94 $event->trigger(); 95 96 $data = $this->data1; 97 $data['page'] = 'foobar'; 98 $data['pages'] = ['foobar', 'wiki:welcome']; 99 $data['title'] = 'foobar'; 100 $data['titles'] = ['foobar', 'wiki:welcome']; 101 $schemaData = meta\AccessTable::getPageAccess('moves', 'page1'); 102 $this->assertEquals($data, $schemaData->getDataArray()); 103 104 $data = $this->data2; 105 $data['page'] = 'foobar#something'; 106 $data['pages'] = ['foobar#something', 'wiki:welcome#something']; 107 $data['title'] = 'foobar#something'; 108 $data['titles'] = ['foobar#something', 'wiki:welcome#something']; 109 $schemaData = meta\AccessTable::getPageAccess('moves', 'page2'); 110 $this->assertEquals($data, $schemaData->getDataArray()); 111 } 112 113 public function test_mediamove() 114 { 115 // fake move event 116 $evdata = ['src_id' => 'wiki:logo.png', 'dst_id' => 'foobar.png']; 117 $event = new \Doku_Event('PLUGIN_MOVE_MEDIA_RENAME', $evdata); 118 $event->trigger(); 119 120 $data = $this->data1; 121 $data['media'] = 'foobar.png'; 122 $data['medias'] = ['foobar.png']; 123 $schemaData = meta\AccessTable::getPageAccess('moves', 'page1'); 124 $this->assertEquals($data, $schemaData->getDataArray()); 125 126 $data = $this->data2; 127 $data['media'] = 'foobar.png'; 128 $data['medias'] = ['foobar.png']; 129 $schemaData = meta\AccessTable::getPageAccess('moves', 'page2'); 130 $this->assertEquals($data, $schemaData->getDataArray()); 131 } 132} 133