[ Index ] |
PHP Cross Reference of DokuWiki |
[Summary view] [Print] [Text view]
1 <?php 2 3 use dokuwiki\ChangeLog\PageChangeLog; 4 5 /** 6 * Tests for requesting revisions of a page with getRevisions() 7 * 8 * This class uses the files: 9 * - data/pages/mailinglist.txt 10 * - data/meta/mailinglist.changes 11 */ 12 class changelog_getrevisionsaround_test extends DokuWikiTest { 13 14 /** 15 * list of revisions in mailinglist.changes 16 */ 17 private $revsexpected = array( 18 1374261194, //current page 19 1371579614, 1368622240, 20 1368622195, 1368622152, 21 1368612599, 1368612506, 22 1368609772, 1368575634, 23 1363436892, 1362527164, 24 1362527046, 1362526861, 25 1362526767, 1362526167, 26 1362526119, 1362526039, 27 1362525926, 1362525899, 28 1362525359, 1362525145, 29 1362524799, 1361901536, 30 1360110636 31 ); 32 private $pageid = 'mailinglist'; 33 34 function setup() : void { 35 parent::setup(); 36 global $cache_revinfo; 37 $cache =& $cache_revinfo; 38 unset($cache['nonexist']); 39 unset($cache['mailinglist']); 40 // fix filemtime of page source 41 touch(wikiFN($this->pageid), $this->revsexpected[0]); 42 } 43 44 /** 45 * no nonexist.changes meta file available 46 */ 47 function test_changemetadatanotexists() { 48 $rev1 = 1362526767; 49 $rev2 = 1362527164; 50 $max = 50; 51 $id = 'nonexist'; 52 $revsexpected = array(array(), array()); 53 54 $pagelog = new PageChangeLog($id, $chunk_size = 8192); 55 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 56 $this->assertEquals($revsexpected, $revs); 57 } 58 59 /** 60 * Surrounding revisions of rev1 and rev2 overlaps 61 */ 62 function test_request_overlapping() { 63 $rev1 = 1362526767; 64 $rev2 = 1362527164; 65 $max = 10; 66 $revsexpected = array( 67 array_slice($this->revsexpected, 8, 11), 68 array_slice($this->revsexpected, 5, 11) 69 ); 70 71 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 72 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 73 $this->assertEquals($revsexpected, $revs); 74 75 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 76 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 77 $this->assertEquals($revsexpected, $revs); 78 79 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 80 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 81 $this->assertEquals($revsexpected, $revs); 82 } 83 84 /** 85 * Surrounding revisions of rev1 and rev2 don't overlap. 86 */ 87 function test_request_non_overlapping() { 88 $rev1 = 1362525899; 89 $rev2 = 1368612599; 90 $max = 10; 91 $revsexpected = array( 92 array_slice($this->revsexpected, 13, 11), 93 array_slice($this->revsexpected, 0, 11) 94 ); 95 96 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 97 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 98 $this->assertEquals($revsexpected, $revs); 99 100 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 101 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 102 $this->assertEquals($revsexpected, $revs); 103 104 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 105 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 106 $this->assertEquals($revsexpected, $revs); 107 } 108 109 /** 110 * rev1 and rev2 are at start and end of the changelog. 111 * Should return still a number of revisions equal to max 112 */ 113 function test_request_first_last() { 114 $rev1 = 1360110636; 115 $rev2 = 1374261194; 116 $max = 10; 117 $revsexpected = array( 118 array_slice($this->revsexpected, 13, 11), 119 array_slice($this->revsexpected, 0, 11) 120 ); 121 122 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 123 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 124 $this->assertEquals($revsexpected, $revs); 125 126 //todo: number of revisions on the left side is not (yet) completed until max number 127 $revsexpected = array( 128 array_slice($this->revsexpected, 18, 6), 129 array_slice($this->revsexpected, 0, 11) 130 ); 131 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 132 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 133 $this->assertEquals($revsexpected, $revs); 134 135 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 136 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 137 $this->assertEquals($revsexpected, $revs); 138 } 139 140 141 /** 142 * Number of requested revisions is larger than available revisions, 143 * so returns whole log 144 */ 145 function test_request_wholelog() { 146 $rev1 = 1362525899; 147 $rev2 = 1368612599; 148 $max = 50; 149 $revsexpected = array($this->revsexpected, $this->revsexpected); 150 151 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 152 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 153 $this->assertEquals($revsexpected, $revs); 154 155 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 156 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 157 $this->assertEquals($revsexpected, $revs); 158 159 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 160 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 161 $this->assertEquals($revsexpected, $revs); 162 } 163 164 /** 165 * When rev1 > rev2, their order is changed 166 */ 167 function test_request_wrong_order_revs() { 168 $rev1 = 1362527164; 169 $rev2 = 1362526767; 170 $max = 10; 171 $revsexpected = array( 172 array_slice($this->revsexpected, 8, 11), 173 array_slice($this->revsexpected, 5, 11) 174 ); 175 176 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 177 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 178 $this->assertEquals($revsexpected, $revs); 179 180 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 181 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 182 $this->assertEquals($revsexpected, $revs); 183 184 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 185 $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 186 $this->assertEquals($revsexpected, $revs); 187 } 188 189 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body