xref: /dokuwiki/_test/tests/inc/changelog_getrevisioninfo.test.php (revision 5c2eed9a193e9341fbfee63d4a973898acdc5ee5)
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 PageRevisionLog($id, $chunk_size = 8192);
37        $revs = $pagelog->getRevisionInfo($rev, $media = false);
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 PageRevisionLog($this->pageid, $chunk_size = 8192);
49        $info = $pagelog->getRevisionInfo($rev, $media = false);
50        $this->assertEquals($infoexpected, $info);
51        //returns cached value
52        $info = $pagelog->getRevisionInfo($rev, $media = false);
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 PageRevisionLog($this->pageid, $chunk_size = 512);
64        $info = $pagelog->getRevisionInfo($rev, $media = false);
65        $this->assertEquals($infoexpected, $info);
66    }
67
68    /**
69     * request current version
70     */
71    function test_requestrecentestlogline() {
72        $rev          = 1374261194;
73        $infoexpected = parseChangelogLine($this->firstlogline);
74
75        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
76        $info = $pagelog->getRevisionInfo($rev, $media = false);
77        $this->assertEquals($infoexpected, $info);
78        //returns cached value
79        $info = $pagelog->getRevisionInfo($rev, $media = false);
80        $this->assertEquals($infoexpected, $info);
81    }
82
83    /**
84     * request current version, with chuncked reading
85     */
86    function test_requestrecentestlogline_chuncked() {
87        $rev          = 1374261194;
88        $infoexpected = parseChangelogLine($this->firstlogline);
89
90        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 512);
91        $info = $pagelog->getRevisionInfo($rev, $media = false);
92        $this->assertEquals($infoexpected, $info);
93    }
94
95    /**
96     * request negative revision
97     */
98    function test_negativerev() {
99        $rev = -10;
100
101        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
102        $info = $pagelog->getRevisionInfo($rev, $media = false);
103        $this->assertEquals(false, $info);
104    }
105
106    /**
107     * request non existing revision somewhere between existing revisions
108     */
109    function test_notexistingrev() {
110        $rev = 1362525890;
111
112        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
113        $info = $pagelog->getRevisionInfo($rev, $media = false);
114        $this->assertEquals(false, $info);
115    }
116
117    /**
118     * sometimes chuncksize is set to true
119     */
120    function test_chuncksizetrue() {
121        $rev          = 1362525899;
122        $infoexpected = parseChangelogLine($this->logline);
123
124        $pagelog = new PageRevisionLog($this->pageid, true);
125        $info = $pagelog->getRevisionInfo($rev);
126        $this->assertEquals($infoexpected, $info);
127    }
128}