1<?php 2/** 3 * Tests for requesting revisions of a page with getRevisions() 4 * 5 * This class uses the files: 6 * - data/pages/mailinglist.txt 7 * - data/meta/mailinglist.changes 8 */ 9class changelog_getrevisions_test extends DokuWikiTest { 10 11 /** 12 * $first counts inclusive zero, after the current page 13 */ 14 private $revsexpected = array( 15 1374261194, //current page 16 1371579614, 1368622240, // revisions, corresponds to respectively $first = 0 and 1 17 1368622195, 1368622152, 18 1368612599, 1368612506, 19 1368609772, 1368575634, 20 1363436892, 1362527164, 21 1362527046, 1362526861, //10 and 11 22 1362526767, 1362526167, 23 1362526119, 1362526039, 24 1362525926, 1362525899, 25 1362525359, 1362525145, 26 1362524799, 1361901536, //20 and 21 27 1360110636 28 ); 29 private $pageid = 'mailinglist'; 30 31 function setup() { 32 parent::setup(); 33 global $cache_revinfo; 34 $cache =& $cache_revinfo; 35 if(isset($cache['nonexist'])) { 36 unset($cache['nonexist']); 37 } 38 if(isset($cache['mailinglist'])) { 39 unset($cache['mailinglist']); 40 } 41 } 42 43 /** 44 * no nonexist.changes meta file available 45 */ 46 function test_changemetadatanotexists() { 47 $first = 0; 48 $num = 1; 49 $id = 'nonexist'; 50 $revsexpected = array(); 51 52 $pagelog = new PageChangeLog($id, $chunk_size = 8192); 53 $revs = $pagelog->getRevisions($first, $num); 54 $this->assertEquals($revsexpected, $revs); 55 } 56 57 /** 58 * request first recentest revision 59 * (so skips first line which belongs to the current existing page) 60 */ 61 function test_requestlastrev() { 62 $first = 0; 63 $num = 1; 64 $revsexpected = array($this->revsexpected[1]); 65 66 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 67 $revs = $pagelog->getRevisions($first, $num); 68 $this->assertEquals($revsexpected, $revs); 69 70 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 71 $revs = $pagelog->getRevisions($first, $num); 72 $this->assertEquals($revsexpected, $revs); 73 74 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 75 $revs = $pagelog->getRevisions($first, $num); 76 $this->assertEquals($revsexpected, $revs); 77 } 78 79 /** 80 * request first recentest revision 81 * (so skips first line which belongs to the current existing page) 82 */ 83 function test_requestonebutlastrev() { 84 $first = 1; 85 $num = 1; 86 $revsexpected = array($this->revsexpected[2]); 87 88 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 89 $revs = $pagelog->getRevisions($first, $num); 90 $this->assertEquals($revsexpected, $revs); 91 92 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 93 $revs = $pagelog->getRevisions($first, $num); 94 $this->assertEquals($revsexpected, $revs); 95 96 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 97 $revs = $pagelog->getRevisions($first, $num); 98 $this->assertEquals($revsexpected, $revs); 99 } 100 101 /** 102 * request first recentest revision 103 * (so skips first line of current existing page) 104 */ 105 function test_requestrevswithoffset() { 106 $first = 10; 107 $num = 5; 108 $revsexpected = array_slice($this->revsexpected, $first + 1, $num); 109 110 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 111 $revs = $pagelog->getRevisions($first, $num); 112 $this->assertEquals($revsexpected, $revs); 113 114 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 115 $revs = $pagelog->getRevisions($first, $num); 116 $this->assertEquals($revsexpected, $revs); 117 118 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 119 $revs = $pagelog->getRevisions($first, $num); 120 $this->assertEquals($revsexpected, $revs); 121 } 122 123 /** 124 * first = -1 requests recentest logline, without skipping 125 */ 126 function test_requestrecentestlogline() { 127 $first = -1; 128 $num = 1; 129 $revsexpected = array($this->revsexpected[0]); 130 131 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 132 $revs = $pagelog->getRevisions($first, $num); 133 $this->assertEquals($revsexpected, $revs); 134 135 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 136 $revs = $pagelog->getRevisions($first, $num); 137 $this->assertEquals($revsexpected, $revs); 138 } 139 140 /** 141 * chunck size = 0 skips chuncked loading 142 */ 143 function test_wholefile() { 144 $first = 0; 145 $num = 1000; 146 $revsexpected = array_slice($this->revsexpected, 1); 147 148 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 0); 149 $revs = $pagelog->getRevisions($first, $num); 150 $this->assertEquals($revsexpected, $revs); 151 } 152 153 /** 154 * Negative range returns no result 155 */ 156 function test_negativenum() { 157 $first = 0; 158 $num = -10; 159 $revsexpected = array(); 160 161 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 162 $revs = $pagelog->getRevisions($first, $num); 163 $this->assertEquals($revsexpected, $revs); 164 165 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 166 $revs = $pagelog->getRevisions($first, $num); 167 $this->assertEquals($revsexpected, $revs); 168 } 169 170 /** 171 * Negative range returns no result 172 */ 173 function test_negativennumoffset() { 174 $first = 2; 175 $num = -10; 176 $revsexpected = array(); 177 178 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 179 $revs = $pagelog->getRevisions($first, $num); 180 $this->assertEquals($revsexpected, $revs); 181 182 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 183 $revs = $pagelog->getRevisions($first, $num); 184 $this->assertEquals($revsexpected, $revs); 185 } 186 187 /** 188 * zero range returns no result 189 */ 190 function test_zeronum() { 191 $first = 5; 192 $num = 0; 193 $revsexpected = array(); 194 195 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 196 $revs = $pagelog->getRevisions($first, $num); 197 $this->assertEquals($revsexpected, $revs); 198 199 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 200 $revs = $pagelog->getRevisions($first, $num); 201 $this->assertEquals($revsexpected, $revs); 202 } 203 204 /** 205 * get oldest revisions 206 */ 207 function test_requestlargeoffset() { 208 $first = 22; 209 $num = 50; 210 $revsexpected = array_slice($this->revsexpected, $first + 1); 211 212 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 213 $revs = $pagelog->getRevisions($first, $num); 214 $this->assertEquals($revsexpected, $revs); 215 } 216 217 /** 218 * request with too large offset and range 219 */ 220 function test_requesttoolargenumberrevs() { 221 $first = 50; 222 $num = 50; 223 $revsexpected = array(); 224 225 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 226 $revs = $pagelog->getRevisions($first, $num); 227 $this->assertEquals($revsexpected, $revs); 228 } 229 230}