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