xref: /dokuwiki/_test/tests/inc/changelog_getrevisioninfo.test.php (revision 719518410a1283d17edc7698f3ec52660c245adf)
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