xref: /dokuwiki/_test/tests/inc/changelog_getrelativerevision.test.php (revision 332817fccb0577125da59b71f437e72ae823a7c8)
155545bccSGerrit Uitslag<?php
255545bccSGerrit Uitslag
355545bccSGerrit Uitslag/**
455545bccSGerrit Uitslag * Tests for requesting revisioninfo of a revision of a page with getRevisionInfo()
555545bccSGerrit Uitslag *
655545bccSGerrit Uitslag * This class uses the files:
755545bccSGerrit Uitslag * - data/pages/mailinglist.txt
855545bccSGerrit Uitslag * - data/meta/mailinglist.changes
955545bccSGerrit Uitslag */
1055545bccSGerrit Uitslagclass changelog_getrelativerevision_test extends DokuWikiTest {
1155545bccSGerrit Uitslag
1255545bccSGerrit Uitslag    private $logline = "1362525899	127.0.0.1	E	mailinglist	pubcie	[Data entry] 	\n";
1355545bccSGerrit Uitslag    private $pageid = 'mailinglist';
1455545bccSGerrit Uitslag
1555545bccSGerrit Uitslag    function setup() {
1655545bccSGerrit Uitslag        parent::setup();
1755545bccSGerrit Uitslag        global $cache_revinfo;
1855545bccSGerrit Uitslag        $cache =& $cache_revinfo;
1955545bccSGerrit Uitslag        if(isset($cache['nonexist'])) {
2055545bccSGerrit Uitslag            unset($cache['nonexist']);
2155545bccSGerrit Uitslag        }
2255545bccSGerrit Uitslag        if(isset($cache['mailinglist'])) {
2355545bccSGerrit Uitslag            unset($cache['mailinglist']);
2455545bccSGerrit Uitslag        }
2555545bccSGerrit Uitslag    }
2655545bccSGerrit Uitslag
2755545bccSGerrit Uitslag    /**
2855545bccSGerrit Uitslag     * no nonexist.changes meta file available
2955545bccSGerrit Uitslag     */
3055545bccSGerrit Uitslag    function test_changemetadatanotexists() {
3155545bccSGerrit Uitslag        $rev = 1362525899;
3255545bccSGerrit Uitslag        $dir = 1;
3355545bccSGerrit Uitslag        $id = 'nonexist';
3455545bccSGerrit Uitslag        $revsexpected = false;
3555545bccSGerrit Uitslag
36047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($id, $chunk_size = 8192);
37047bad06SGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, $dir);
3855545bccSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
3955545bccSGerrit Uitslag    }
4055545bccSGerrit Uitslag
4155545bccSGerrit Uitslag    /**
4255545bccSGerrit Uitslag     * no nonexist.changes meta file available
4355545bccSGerrit Uitslag     */
4455545bccSGerrit Uitslag    function test_nodirection() {
4555545bccSGerrit Uitslag        $rev = 1362525899;
4655545bccSGerrit Uitslag        $dir = 0;
4755545bccSGerrit Uitslag        $revsexpected = false;
4855545bccSGerrit Uitslag
49047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
50047bad06SGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, $dir);
5155545bccSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
5255545bccSGerrit Uitslag    }
5355545bccSGerrit Uitslag
5455545bccSGerrit Uitslag    /**
5555545bccSGerrit Uitslag     * start at exact current revision of mailinglist page
5655545bccSGerrit Uitslag     *
5755545bccSGerrit Uitslag     */
5855545bccSGerrit Uitslag    function test_startatexactcurrentrev() {
59*332817fcSGerrit Uitslag        $rev = 1385051947;
6055545bccSGerrit Uitslag        $dir = 1;
61*332817fcSGerrit Uitslag        $revsexpectedpos = false;
62*332817fcSGerrit Uitslag        $revsexpectedneg = 1374261194;
6355545bccSGerrit Uitslag
64*332817fcSGerrit Uitslag        //set a known timestamp
65*332817fcSGerrit Uitslag        touch(wikiFN($this->pageid), $rev);
6655545bccSGerrit Uitslag
67047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
68047bad06SGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, $dir);
69*332817fcSGerrit Uitslag        $this->assertEquals($revsexpectedpos, $revs);
70*332817fcSGerrit Uitslag
71*332817fcSGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, -$dir);
72*332817fcSGerrit Uitslag        $this->assertEquals($revsexpectedneg, $revs);
73*332817fcSGerrit Uitslag    }
74*332817fcSGerrit Uitslag
75*332817fcSGerrit Uitslag    /**
76*332817fcSGerrit Uitslag     * start at exact last revision of mailinglist page
77*332817fcSGerrit Uitslag     *
78*332817fcSGerrit Uitslag     */
79*332817fcSGerrit Uitslag    function test_startatexactlastrev() {
80*332817fcSGerrit Uitslag        $rev = 1360110636;
81*332817fcSGerrit Uitslag        $dir = 1;
82*332817fcSGerrit Uitslag        $revsexpectedpos = 1361901536;
83*332817fcSGerrit Uitslag        $revsexpectedneg = false;
84*332817fcSGerrit Uitslag
85*332817fcSGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
86*332817fcSGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, $dir);
87*332817fcSGerrit Uitslag        $this->assertEquals($revsexpectedpos, $revs);
88*332817fcSGerrit Uitslag
89*332817fcSGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, -$dir);
90*332817fcSGerrit Uitslag        $this->assertEquals($revsexpectedneg, $revs);
91*332817fcSGerrit Uitslag    }
92*332817fcSGerrit Uitslag
93*332817fcSGerrit Uitslag    /**
94*332817fcSGerrit Uitslag     * start at exact one before last revision of mailinglist page
95*332817fcSGerrit Uitslag     *
96*332817fcSGerrit Uitslag     */
97*332817fcSGerrit Uitslag    function test_requestlastrevisions() {
98*332817fcSGerrit Uitslag        $rev = 1361901536;
99*332817fcSGerrit Uitslag        $dir = -1;
100*332817fcSGerrit Uitslag        $revsexpectedlast = 1360110636;
101*332817fcSGerrit Uitslag        $revsexpectedbeforelast = false;
102*332817fcSGerrit Uitslag
103*332817fcSGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
104*332817fcSGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, $dir);
105*332817fcSGerrit Uitslag        $this->assertEquals($revsexpectedlast, $revs);
106*332817fcSGerrit Uitslag
107*332817fcSGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, 2 * $dir);
108*332817fcSGerrit Uitslag        $this->assertEquals($revsexpectedbeforelast, $revs);
10955545bccSGerrit Uitslag    }
11055545bccSGerrit Uitslag
11155545bccSGerrit Uitslag    /**
11255545bccSGerrit Uitslag     * request existing rev
11355545bccSGerrit Uitslag     */
11455545bccSGerrit Uitslag    function test_requestrev() {
11555545bccSGerrit Uitslag        $rev = 1362525359;
11655545bccSGerrit Uitslag        $dir = 1;
11755545bccSGerrit Uitslag        $revexpected = 1362525899;
11855545bccSGerrit Uitslag        $infoexpected = parseChangelogLine($this->logline);
11955545bccSGerrit Uitslag
120047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
121047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
12255545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
12355545bccSGerrit Uitslag        //checked info returned from cache
124047bad06SGerrit Uitslag        $info = $pagelog->getRevisionInfo($revfound);
12555545bccSGerrit Uitslag        $this->assertEquals($infoexpected, $info);
12655545bccSGerrit Uitslag    }
12755545bccSGerrit Uitslag
12855545bccSGerrit Uitslag    /**
12955545bccSGerrit Uitslag     * request existing rev with chucked reading
13055545bccSGerrit Uitslag     */
13155545bccSGerrit Uitslag    function test_requestnextrev_chuncked() {
13255545bccSGerrit Uitslag        $rev = 1362525899;
13355545bccSGerrit Uitslag        $dir = 1;
13455545bccSGerrit Uitslag        $revexpected = 1362525926;
13555545bccSGerrit Uitslag
136047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
137047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
13855545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
13955545bccSGerrit Uitslag    }
14055545bccSGerrit Uitslag
14155545bccSGerrit Uitslag    /**
14255545bccSGerrit Uitslag     * request existing rev
14355545bccSGerrit Uitslag     */
14455545bccSGerrit Uitslag    function test_requestnextfifthrev() {
14555545bccSGerrit Uitslag        $rev = 1362525899;
14655545bccSGerrit Uitslag        $dir = 5;
14755545bccSGerrit Uitslag        $revexpected = 1362526767;
14855545bccSGerrit Uitslag
149047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
150047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
15155545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
15255545bccSGerrit Uitslag    }
15355545bccSGerrit Uitslag
15455545bccSGerrit Uitslag    /**
15555545bccSGerrit Uitslag     * request existing rev with chucked reading
15655545bccSGerrit Uitslag     */
15755545bccSGerrit Uitslag    function test_requestnextfifthrev_chuncked() {
15855545bccSGerrit Uitslag        $rev = 1362525899;
15955545bccSGerrit Uitslag        $dir = 5;
16055545bccSGerrit Uitslag        $revexpected = 1362526767;
16155545bccSGerrit Uitslag
162047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
163047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
16455545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
16555545bccSGerrit Uitslag    }
16655545bccSGerrit Uitslag
16755545bccSGerrit Uitslag    /**
16855545bccSGerrit Uitslag     * request existing rev
16955545bccSGerrit Uitslag     */
17055545bccSGerrit Uitslag    function test_requestprevrev() {
17155545bccSGerrit Uitslag        $rev = 1362525899;
17255545bccSGerrit Uitslag        $dir1 = -1;
17355545bccSGerrit Uitslag        $dir5 = -5;
17455545bccSGerrit Uitslag        $revexpected1 = 1362525359;
17555545bccSGerrit Uitslag        $revexpected5 = 1360110636;
17655545bccSGerrit Uitslag
177047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
178047bad06SGerrit Uitslag        $revfound1 = $pagelog->getRelativeRevision($rev, $dir1);
17955545bccSGerrit Uitslag        $this->assertEquals($revexpected1, $revfound1);
18055545bccSGerrit Uitslag
181047bad06SGerrit Uitslag        $revfound5 = $pagelog->getRelativeRevision($rev, $dir5);
18255545bccSGerrit Uitslag        $this->assertEquals($revexpected5, $revfound5);
18355545bccSGerrit Uitslag    }
18455545bccSGerrit Uitslag
18555545bccSGerrit Uitslag    /**
18655545bccSGerrit Uitslag     * request existing rev with chucked reading
18755545bccSGerrit Uitslag     */
18855545bccSGerrit Uitslag    function test_requestprevrev_chuncked() {
18955545bccSGerrit Uitslag        $rev = 1362525899;
19055545bccSGerrit Uitslag        $dir1 = -1;
19155545bccSGerrit Uitslag        $dir5 = -5;
19255545bccSGerrit Uitslag        $revexpected1 = 1362525359;
19355545bccSGerrit Uitslag        $revexpected5 = 1360110636;
19455545bccSGerrit Uitslag
195047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
196047bad06SGerrit Uitslag        $revfound1 = $pagelog->getRelativeRevision($rev, $dir1);
19755545bccSGerrit Uitslag        $this->assertEquals($revexpected1, $revfound1);
19855545bccSGerrit Uitslag
199047bad06SGerrit Uitslag        $revfound5 = $pagelog->getRelativeRevision($rev, $dir5);
20055545bccSGerrit Uitslag        $this->assertEquals($revexpected5, $revfound5);
20155545bccSGerrit Uitslag    }
20255545bccSGerrit Uitslag
20355545bccSGerrit Uitslag    /**
20455545bccSGerrit Uitslag     * request after recentest version in changelog
20555545bccSGerrit Uitslag     */
20655545bccSGerrit Uitslag    function test_requestrecentestlogline_next() {
20755545bccSGerrit Uitslag        $rev = 1374261194;
20855545bccSGerrit Uitslag        $dir = 1;
20955545bccSGerrit Uitslag        $revexpected = false;
21055545bccSGerrit Uitslag
211047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
212047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
21355545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
21455545bccSGerrit Uitslag    }
21555545bccSGerrit Uitslag
21655545bccSGerrit Uitslag    /**
21755545bccSGerrit Uitslag     * request after recentest version in changelog, with chuncked reading
21855545bccSGerrit Uitslag     */
21955545bccSGerrit Uitslag    function test_requestrecentestlogline_next_chuncked() {
22055545bccSGerrit Uitslag        $rev = 1374261194;
22155545bccSGerrit Uitslag        $dir = 1;
22255545bccSGerrit Uitslag        $revexpected = false;
22355545bccSGerrit Uitslag
224047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
225047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
22655545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
22755545bccSGerrit Uitslag    }
22855545bccSGerrit Uitslag
22955545bccSGerrit Uitslag    /**
23055545bccSGerrit Uitslag     * request before current version
23155545bccSGerrit Uitslag     */
23255545bccSGerrit Uitslag    function test_requestrecentestlogline_prev() {
23355545bccSGerrit Uitslag        $rev = 1374261194;
23455545bccSGerrit Uitslag        $dir = -1;
23555545bccSGerrit Uitslag        $revexpected = 1371579614;
23655545bccSGerrit Uitslag
237047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
238047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
23955545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
24055545bccSGerrit Uitslag    }
24155545bccSGerrit Uitslag
24255545bccSGerrit Uitslag    /**
24355545bccSGerrit Uitslag     * request before current version, with chuncked reading
24455545bccSGerrit Uitslag     */
24555545bccSGerrit Uitslag    function test_requestrecentestlogline_prev_chuncked() {
24655545bccSGerrit Uitslag        $rev = 1374261194;
24755545bccSGerrit Uitslag        $dir = -1;
24855545bccSGerrit Uitslag        $revexpected = 1371579614;
24955545bccSGerrit Uitslag
250047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
251047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
25255545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
25355545bccSGerrit Uitslag    }
25455545bccSGerrit Uitslag
25555545bccSGerrit Uitslag    /**
25655545bccSGerrit Uitslag     * Request negative revision
25755545bccSGerrit Uitslag     * looks in positive direction, so it catches the oldest revision
25855545bccSGerrit Uitslag     */
25955545bccSGerrit Uitslag    function test_negativerev_posdir() {
26055545bccSGerrit Uitslag        $rev = -10;
26155545bccSGerrit Uitslag        $dir = 1;
26255545bccSGerrit Uitslag        $revexpected = 1360110636;
26355545bccSGerrit Uitslag
264047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
265047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
26655545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
26755545bccSGerrit Uitslag    }
26855545bccSGerrit Uitslag
26955545bccSGerrit Uitslag    /**
27055545bccSGerrit Uitslag     * Request negative revision
27155545bccSGerrit Uitslag     * looks in negative direction, but there is nothing
27255545bccSGerrit Uitslag     */
27355545bccSGerrit Uitslag    function test_negativerev_negdir() {
27455545bccSGerrit Uitslag        $rev = -10;
27555545bccSGerrit Uitslag        $dir = -1;
27655545bccSGerrit Uitslag        $revexpected = false;
27755545bccSGerrit Uitslag
278047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
279047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
28055545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
28155545bccSGerrit Uitslag    }
28255545bccSGerrit Uitslag
28355545bccSGerrit Uitslag    /**
28455545bccSGerrit Uitslag     * Start at non existing revision somewhere between existing revisions
28555545bccSGerrit Uitslag     */
28655545bccSGerrit Uitslag    function test_startatnotexistingrev_next() {
28755545bccSGerrit Uitslag        $rev = 1362525890;
28855545bccSGerrit Uitslag        $dir = 1;
28955545bccSGerrit Uitslag        $revexpected = 1362525899;
29055545bccSGerrit Uitslag
291047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
292047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
29355545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
29455545bccSGerrit Uitslag    }
29555545bccSGerrit Uitslag
29655545bccSGerrit Uitslag    /**
29755545bccSGerrit Uitslag     * Start at non existing revision somewhere between existing revisions
29855545bccSGerrit Uitslag     */
29955545bccSGerrit Uitslag    function test_startatnotexistingrev_prev() {
30055545bccSGerrit Uitslag        $rev = 1362525890;
30155545bccSGerrit Uitslag        $dir = -1;
30255545bccSGerrit Uitslag        $revexpected = 1362525359;
30355545bccSGerrit Uitslag
304047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
305047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
30655545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
30755545bccSGerrit Uitslag    }
3080f13c836SGerrit Uitslag
3090f13c836SGerrit Uitslag    function test_iscurrentpagerevision() {
3100f13c836SGerrit Uitslag        $rev = 1385051947;
3110f13c836SGerrit Uitslag        $currentexpected = true;
3120f13c836SGerrit Uitslag
3130f13c836SGerrit Uitslag        //set a known timestamp
3140f13c836SGerrit Uitslag        touch(wikiFN($this->pageid), $rev);
3150f13c836SGerrit Uitslag
316047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
317047bad06SGerrit Uitslag        $current = $pagelog->isCurrentRevision($rev);
3180f13c836SGerrit Uitslag        $this->assertEquals($currentexpected, $current);
3190f13c836SGerrit Uitslag    }
3200f13c836SGerrit Uitslag
3210f13c836SGerrit Uitslag    function test_isnotcurrentpagerevision() {
3220f13c836SGerrit Uitslag        $rev = 1385051947;
3230f13c836SGerrit Uitslag        $not_current_rev = $rev - 1;
3240f13c836SGerrit Uitslag        $currentexpected = false;
3250f13c836SGerrit Uitslag
3260f13c836SGerrit Uitslag        //set a known timestamp
3270f13c836SGerrit Uitslag        touch(wikiFN($this->pageid), $rev);
3280f13c836SGerrit Uitslag
329047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
330047bad06SGerrit Uitslag        $current = $pagelog->isCurrentRevision($not_current_rev);
3310f13c836SGerrit Uitslag        $this->assertEquals($currentexpected, $current);
3320f13c836SGerrit Uitslag    }
3330f13c836SGerrit Uitslag
3340f13c836SGerrit Uitslag    function test_notexistingcurrentpage() {
3350f13c836SGerrit Uitslag        $rev = 1385051947;
3360f13c836SGerrit Uitslag        $currentexpected = false;
3370f13c836SGerrit Uitslag
338047bad06SGerrit Uitslag        $pagelog = new PageChangeLog('nonexistingpage', $chunk_size = 8192);
339047bad06SGerrit Uitslag        $current = $pagelog->isCurrentRevision($rev);
3400f13c836SGerrit Uitslag        $this->assertEquals($currentexpected, $current);
3410f13c836SGerrit Uitslag    }
34255545bccSGerrit Uitslag}