xref: /dokuwiki/_test/tests/inc/changelog_getrevisioninfo.test.php (revision 92682be191f82226e4ee18a010951608b19087d6)
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        $infoexpected['mode'] = 'page';
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 = ChangeLog::parseLogLine($this->logline);
62        $infoexpected['mode'] = 'page';
63
64        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
65        $info = $pagelog->getRevisionInfo($rev);
66        $this->assertEquals($infoexpected, $info);
67    }
68
69    /**
70     * request existing rev with chucked reading
71     */
72    function test_requestrev_chunckedsmallerthanlinelength() {
73        $rev = 1362525899;
74        $infoexpected = ChangeLog::parseLogLine($this->logline);
75        $infoexpected['mode'] = 'page';
76
77        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
78        $info = $pagelog->getRevisionInfo($rev);
79        $this->assertEquals($infoexpected, $info);
80    }
81
82    /**
83     * request current version
84     */
85    function test_requestrecentestlogline() {
86        $rev = 1374261194;
87        $infoexpected = ChangeLog::parseLogLine($this->firstlogline);
88        $infoexpected['mode'] = 'page';
89
90        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
91        $info = $pagelog->getRevisionInfo($rev);
92        $this->assertEquals($infoexpected, $info);
93        //returns cached value
94        $info = $pagelog->getRevisionInfo($rev);
95        $this->assertEquals($infoexpected, $info);
96    }
97
98    /**
99     * request current version, with chuncked reading
100     */
101    function test_requestrecentestlogline_chuncked() {
102        $rev = 1374261194;
103        $infoexpected = ChangeLog::parseLogLine($this->firstlogline);
104        $infoexpected['mode'] = 'page';
105
106        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
107        $info = $pagelog->getRevisionInfo($rev);
108        $this->assertEquals($infoexpected, $info);
109    }
110
111    /**
112     * request negative revision
113     */
114    function test_negativerev() {
115        $rev = -10;
116
117        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
118        $info = $pagelog->getRevisionInfo($rev);
119        $this->assertFalse($info);
120    }
121
122    /**
123     * request non existing revision somewhere between existing revisions
124     */
125    function test_notexistingrev() {
126        $rev = 1362525890;
127
128        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
129        $info = $pagelog->getRevisionInfo($rev);
130        $this->assertFalse($info);
131    }
132
133    /**
134     * sometimes chuncksize is set to true
135     */
136    function test_chuncksizetrue() {
137        $rev = 1362525899;
138        $infoexpected = ChangeLog::parseLogLine($this->logline);
139        $infoexpected['mode'] = 'page';
140
141        $pagelog = new PageChangeLog($this->pageid, true);
142        $info = $pagelog->getRevisionInfo($rev);
143        $this->assertEquals($infoexpected, $info);
144    }
145}
146