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 341c33cec3SAndreas Gohr function setup() : void { 35c931f569SGerrit Uitslag parent::setup(); 36c931f569SGerrit Uitslag global $cache_revinfo; 37c931f569SGerrit Uitslag $cache =& $cache_revinfo; 38c931f569SGerrit Uitslag unset($cache['nonexist']); 39c931f569SGerrit Uitslag unset($cache['mailinglist']); 40*fb285245SSatoshi Sahara // fix filemtime of page source 41*fb285245SSatoshi Sahara touch(wikiFN($this->pageid), $this->revsexpected[0]); 42c931f569SGerrit Uitslag } 43c931f569SGerrit Uitslag 44c931f569SGerrit Uitslag /** 45c931f569SGerrit Uitslag * no nonexist.changes meta file available 46c931f569SGerrit Uitslag */ 47c931f569SGerrit Uitslag function test_changemetadatanotexists() { 48c931f569SGerrit Uitslag $rev1 = 1362526767; 49c931f569SGerrit Uitslag $rev2 = 1362527164; 50c931f569SGerrit Uitslag $max = 50; 51c931f569SGerrit Uitslag $id = 'nonexist'; 52c931f569SGerrit Uitslag $revsexpected = array(array(), array()); 53c931f569SGerrit Uitslag 54c931f569SGerrit Uitslag $pagelog = new PageChangeLog($id, $chunk_size = 8192); 55c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 56c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 57c931f569SGerrit Uitslag } 58c931f569SGerrit Uitslag 59c931f569SGerrit Uitslag /** 60c931f569SGerrit Uitslag * Surrounding revisions of rev1 and rev2 overlaps 61c931f569SGerrit Uitslag */ 62c931f569SGerrit Uitslag function test_request_overlapping() { 63c931f569SGerrit Uitslag $rev1 = 1362526767; 64c931f569SGerrit Uitslag $rev2 = 1362527164; 65c931f569SGerrit Uitslag $max = 10; 66c931f569SGerrit Uitslag $revsexpected = array( 67c931f569SGerrit Uitslag array_slice($this->revsexpected, 8, 11), 68c931f569SGerrit Uitslag array_slice($this->revsexpected, 5, 11) 69c931f569SGerrit Uitslag ); 70c931f569SGerrit Uitslag 71c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 72c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 73c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 74c931f569SGerrit Uitslag 75c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 76c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 77c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 78c931f569SGerrit Uitslag 79c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 80c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 81c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 82c931f569SGerrit Uitslag } 83c931f569SGerrit Uitslag 84c931f569SGerrit Uitslag /** 85c931f569SGerrit Uitslag * Surrounding revisions of rev1 and rev2 don't overlap. 86c931f569SGerrit Uitslag */ 87c931f569SGerrit Uitslag function test_request_non_overlapping() { 88c931f569SGerrit Uitslag $rev1 = 1362525899; 89c931f569SGerrit Uitslag $rev2 = 1368612599; 90c931f569SGerrit Uitslag $max = 10; 91c931f569SGerrit Uitslag $revsexpected = array( 92c931f569SGerrit Uitslag array_slice($this->revsexpected, 13, 11), 93c931f569SGerrit Uitslag array_slice($this->revsexpected, 0, 11) 94c931f569SGerrit Uitslag ); 95c931f569SGerrit Uitslag 96c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 97c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 98c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 99c931f569SGerrit Uitslag 100c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 101c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 102c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 103c931f569SGerrit Uitslag 104c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 105c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 106c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 107c931f569SGerrit Uitslag } 108c931f569SGerrit Uitslag 109c931f569SGerrit Uitslag /** 110c931f569SGerrit Uitslag * rev1 and rev2 are at start and end of the changelog. 111c931f569SGerrit Uitslag * Should return still a number of revisions equal to max 112c931f569SGerrit Uitslag */ 113c931f569SGerrit Uitslag function test_request_first_last() { 114c931f569SGerrit Uitslag $rev1 = 1360110636; 115c931f569SGerrit Uitslag $rev2 = 1374261194; 116c931f569SGerrit Uitslag $max = 10; 117c931f569SGerrit Uitslag $revsexpected = array( 118c931f569SGerrit Uitslag array_slice($this->revsexpected, 13, 11), 119c931f569SGerrit Uitslag array_slice($this->revsexpected, 0, 11) 120c931f569SGerrit Uitslag ); 121c931f569SGerrit Uitslag 122c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 123c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 124c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 125c931f569SGerrit Uitslag 126c931f569SGerrit Uitslag //todo: number of revisions on the left side is not (yet) completed until max number 127c931f569SGerrit Uitslag $revsexpected = array( 128c931f569SGerrit Uitslag array_slice($this->revsexpected, 18, 6), 129c931f569SGerrit Uitslag array_slice($this->revsexpected, 0, 11) 130c931f569SGerrit Uitslag ); 131c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 132c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 133c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 134c931f569SGerrit Uitslag 135c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 136c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 137c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 138c931f569SGerrit Uitslag } 139c931f569SGerrit Uitslag 140c931f569SGerrit Uitslag 141c931f569SGerrit Uitslag /** 142c931f569SGerrit Uitslag * Number of requested revisions is larger than available revisions, 143c931f569SGerrit Uitslag * so returns whole log 144c931f569SGerrit Uitslag */ 145c931f569SGerrit Uitslag function test_request_wholelog() { 146c931f569SGerrit Uitslag $rev1 = 1362525899; 147c931f569SGerrit Uitslag $rev2 = 1368612599; 148c931f569SGerrit Uitslag $max = 50; 149c931f569SGerrit Uitslag $revsexpected = array($this->revsexpected, $this->revsexpected); 150c931f569SGerrit Uitslag 151c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 152c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 153c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 154c931f569SGerrit Uitslag 155c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 156c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 157c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 158c931f569SGerrit Uitslag 159c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 160c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 161c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 162c931f569SGerrit Uitslag } 163c931f569SGerrit Uitslag 164c931f569SGerrit Uitslag /** 165c931f569SGerrit Uitslag * When rev1 > rev2, their order is changed 166c931f569SGerrit Uitslag */ 167c931f569SGerrit Uitslag function test_request_wrong_order_revs() { 168c931f569SGerrit Uitslag $rev1 = 1362527164; 169c931f569SGerrit Uitslag $rev2 = 1362526767; 170c931f569SGerrit Uitslag $max = 10; 171c931f569SGerrit Uitslag $revsexpected = array( 172c931f569SGerrit Uitslag array_slice($this->revsexpected, 8, 11), 173c931f569SGerrit Uitslag array_slice($this->revsexpected, 5, 11) 174c931f569SGerrit Uitslag ); 175c931f569SGerrit Uitslag 176c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 177c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 178c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 179c931f569SGerrit Uitslag 180c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 181c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 182c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 183c931f569SGerrit Uitslag 184c931f569SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 185c931f569SGerrit Uitslag $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max); 186c931f569SGerrit Uitslag $this->assertEquals($revsexpected, $revs); 187c931f569SGerrit Uitslag } 188c931f569SGerrit Uitslag 189c931f569SGerrit Uitslag} 190