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 51 $pagelog = new PageChangeLog($id, $chunk_size = 8192); 52 $revs = $pagelog->getRevisions($first, $num); 53 $revsexpected = array(); 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 75 /** 76 * request first recentest revision 77 * (so skips first line which belongs to the current existing page) 78 */ 79 function test_requestonebutlastrev() { 80 $first = 1; 81 $num = 1; 82 $revsexpected = array($this->revsexpected[2]); 83 84 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 85 $revs = $pagelog->getRevisions($first, $num); 86 $this->assertEquals($revsexpected, $revs); 87 88 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 89 $revs = $pagelog->getRevisions($first, $num); 90 $this->assertEquals($revsexpected, $revs); 91 } 92 93 /** 94 * request first recentest revision 95 * (so skips first line of current existing page) 96 */ 97 function test_requestrevswithoffset() { 98 $first = 10; 99 $num = 5; 100 $revsexpected = array_slice($this->revsexpected, $first + 1, $num); 101 102 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 103 $revs = $pagelog->getRevisions($first, $num); 104 $this->assertEquals($revsexpected, $revs); 105 106 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 107 $revs = $pagelog->getRevisions($first, $num); 108 $this->assertEquals($revsexpected, $revs); 109 } 110 111 /** 112 * first = -1 requests recentest logline, without skipping 113 */ 114 function test_requestrecentestlogline() { 115 $first = -1; 116 $num = 1; 117 $revsexpected = array($this->revsexpected[0]); 118 119 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 120 $revs = $pagelog->getRevisions($first, $num); 121 $this->assertEquals($revsexpected, $revs); 122 123 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 124 $revs = $pagelog->getRevisions($first, $num); 125 $this->assertEquals($revsexpected, $revs); 126 } 127 128 /** 129 * chunck size = 0 skips chuncked loading 130 */ 131 function test_wholefile() { 132 $first = 0; 133 $num = 1000; 134 $revsexpected = array_slice($this->revsexpected, 1); 135 136 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 0); 137 $revs = $pagelog->getRevisions($first, $num); 138 $this->assertEquals($revsexpected, $revs); 139 } 140 141 /** 142 * Negative range returns no result 143 */ 144 function test_negativenum() { 145 $first = 0; 146 $num = -10; 147 $revsexpected = array(); 148 149 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 150 $revs = $pagelog->getRevisions($first, $num); 151 $this->assertEquals($revsexpected, $revs); 152 153 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 154 $revs = $pagelog->getRevisions($first, $num); 155 $this->assertEquals($revsexpected, $revs); 156 } 157 158 /** 159 * Negative range returns no result 160 */ 161 function test_negativennumoffset() { 162 $first = 2; 163 $num = -10; 164 $revsexpected = array(); 165 166 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 167 $revs = $pagelog->getRevisions($first, $num); 168 $this->assertEquals($revsexpected, $revs); 169 170 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 171 $revs = $pagelog->getRevisions($first, $num); 172 $this->assertEquals($revsexpected, $revs); 173 } 174 175 /** 176 * zero range returns no result 177 */ 178 function test_zeronum() { 179 $first = 5; 180 $num = 0; 181 $revsexpected = array(); 182 183 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 184 $revs = $pagelog->getRevisions($first, $num); 185 $this->assertEquals($revsexpected, $revs); 186 187 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 188 $revs = $pagelog->getRevisions($first, $num); 189 $this->assertEquals($revsexpected, $revs); 190 } 191 192 /** 193 * get oldest revisions 194 */ 195 function test_requestlargeoffset() { 196 $first = 22; 197 $num = 50; 198 $revsexpected = array_slice($this->revsexpected, $first + 1); 199 200 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 201 $revs = $pagelog->getRevisions($first, $num); 202 $this->assertEquals($revsexpected, $revs); 203 } 204 205 /** 206 * request with too large offset and range 207 */ 208 function test_requesttoolargenumberrevs() { 209 $first = 50; 210 $num = 50; 211 $revsexpected = array(); 212 213 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 214 $revs = $pagelog->getRevisions($first, $num); 215 $this->assertEquals($revsexpected, $revs); 216 } 217 218}