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