1<?php 2 3use dokuwiki\ChangeLog\ChangeLog; 4use dokuwiki\ChangeLog\PageChangeLog; 5 6/** 7 * Tests for requesting revisioninfo of a revision of a page with getRevisionInfo() 8 * 9 * This class uses the files: 10 * - data/pages/mailinglist.txt 11 * - data/meta/mailinglist.changes 12 */ 13class changelog_getrevisionsinfo_test extends DokuWikiTest { 14 15 private $logline = "1362525899 127.0.0.1 E mailinglist pubcie [Data entry] \n"; 16 private $firstlogline = "1374261194 127.0.0.1 E mailinglist pubcie \n"; 17 private $pageid = 'mailinglist'; 18 19 function setup() : void { 20 parent::setup(); 21 global $cache_revinfo; 22 $cache =& $cache_revinfo; 23 unset($cache['nonexist']); 24 unset($cache['mailinglist']); 25 } 26 27 /** 28 * no nonexist.changes meta file available 29 */ 30 function test_changemetadatanotexists() { 31 $rev = 1362525899; 32 $id = 'nonexist'; 33 $revsexpected = false; 34 35 $pagelog = new PageChangeLog($id, $chunk_size = 8192); 36 $revs = $pagelog->getRevisionInfo($rev); 37 $this->assertEquals($revsexpected, $revs); 38 } 39 40 /** 41 * request existing rev 42 */ 43 function test_requestrev() { 44 $rev = 1362525899; 45 $infoexpected = ChangeLog::parseLogLine($this->logline); 46 47 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 48 $info = $pagelog->getRevisionInfo($rev); 49 $this->assertEquals($infoexpected, $info); 50 //returns cached value 51 $info = $pagelog->getRevisionInfo($rev); 52 $this->assertEquals($infoexpected, $info); 53 } 54 55 /** 56 * request existing rev with chucked reading 57 */ 58 function test_requestrev_chuncked() { 59 $rev = 1362525899; 60 $infoexpected = ChangeLog::parseLogLine($this->logline); 61 62 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 63 $info = $pagelog->getRevisionInfo($rev); 64 $this->assertEquals($infoexpected, $info); 65 } 66 67 /** 68 * request existing rev with chucked reading 69 */ 70 function test_requestrev_chunckedsmallerthanlinelength() { 71 $rev = 1362525899; 72 $infoexpected = ChangeLog::parseLogLine($this->logline); 73 74 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20); 75 $info = $pagelog->getRevisionInfo($rev); 76 $this->assertEquals($infoexpected, $info); 77 } 78 79 /** 80 * request current version 81 */ 82 function test_requestrecentestlogline() { 83 $rev = 1374261194; 84 $infoexpected = ChangeLog::parseLogLine($this->firstlogline); 85 86 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 87 $info = $pagelog->getRevisionInfo($rev); 88 $this->assertEquals($infoexpected, $info); 89 //returns cached value 90 $info = $pagelog->getRevisionInfo($rev); 91 $this->assertEquals($infoexpected, $info); 92 } 93 94 /** 95 * request current version, with chuncked reading 96 */ 97 function test_requestrecentestlogline_chuncked() { 98 $rev = 1374261194; 99 $infoexpected = ChangeLog::parseLogLine($this->firstlogline); 100 101 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 102 $info = $pagelog->getRevisionInfo($rev); 103 $this->assertEquals($infoexpected, $info); 104 } 105 106 /** 107 * request negative revision 108 */ 109 function test_negativerev() { 110 $rev = -10; 111 112 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 113 $info = $pagelog->getRevisionInfo($rev); 114 $this->assertEquals(false, $info); 115 } 116 117 /** 118 * request non existing revision somewhere between existing revisions 119 */ 120 function test_notexistingrev() { 121 $rev = 1362525890; 122 123 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 124 $info = $pagelog->getRevisionInfo($rev); 125 $this->assertEquals(false, $info); 126 } 127 128 /** 129 * sometimes chuncksize is set to true 130 */ 131 function test_chuncksizetrue() { 132 $rev = 1362525899; 133 $infoexpected = ChangeLog::parseLogLine($this->logline); 134 135 $pagelog = new PageChangeLog($this->pageid, true); 136 $info = $pagelog->getRevisionInfo($rev); 137 $this->assertEquals($infoexpected, $info); 138 } 139} 140