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