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