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