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