xref: /dokuwiki/_test/tests/inc/changelog_getrelativerevision.test.php (revision 0f13c836f0ee71a3188a775b9ea64025e10d38f5)
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
3655545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($id, $chunk_size = 8192);
3755545bccSGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, $dir, $media = false);
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
4955545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
5055545bccSGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, $dir, $media = false);
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() {
5955545bccSGerrit Uitslag        $rev          = 1374261194;
6055545bccSGerrit Uitslag        $dir          = 1;
6155545bccSGerrit Uitslag        $revsexpected = false;
6255545bccSGerrit Uitslag
6355545bccSGerrit Uitslag//        global $INFO;
6455545bccSGerrit Uitslag//        $INFO = pageinfo();
6555545bccSGerrit Uitslag//        var_dump($INFO);
6655545bccSGerrit Uitslag//        var_dump($INFO['meta']);
6755545bccSGerrit Uitslag//        var_dump($INFO['meta']['last_change']);
6855545bccSGerrit Uitslag//        var_dump($INFO['meta']['last_change']['date']);
6955545bccSGerrit Uitslag
7055545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
7155545bccSGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, $dir, $media = false);
7255545bccSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
7355545bccSGerrit Uitslag    }
7455545bccSGerrit Uitslag
7555545bccSGerrit Uitslag    /**
7655545bccSGerrit Uitslag     * request existing rev
7755545bccSGerrit Uitslag     */
7855545bccSGerrit Uitslag    function test_requestrev() {
7955545bccSGerrit Uitslag        $rev          = 1362525359;
8055545bccSGerrit Uitslag        $dir          = 1;
8155545bccSGerrit Uitslag        $revexpected  = 1362525899;
8255545bccSGerrit Uitslag        $infoexpected = parseChangelogLine($this->logline);
8355545bccSGerrit Uitslag
8455545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
8555545bccSGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
8655545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
8755545bccSGerrit Uitslag        //checked info returned from cache
8855545bccSGerrit Uitslag        $info = $pagelog->getRevisionInfo($revfound, $media = false);
8955545bccSGerrit Uitslag        $this->assertEquals($infoexpected, $info);
9055545bccSGerrit Uitslag    }
9155545bccSGerrit Uitslag
9255545bccSGerrit Uitslag    /**
9355545bccSGerrit Uitslag     * request existing rev with chucked reading
9455545bccSGerrit Uitslag     */
9555545bccSGerrit Uitslag    function test_requestnextrev_chuncked() {
9655545bccSGerrit Uitslag        $rev         = 1362525899;
9755545bccSGerrit Uitslag        $dir         = 1;
9855545bccSGerrit Uitslag        $revexpected = 1362525926;
9955545bccSGerrit Uitslag
10055545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 512);
10155545bccSGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
10255545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
10355545bccSGerrit Uitslag    }
10455545bccSGerrit Uitslag
10555545bccSGerrit Uitslag    /**
10655545bccSGerrit Uitslag     * request existing rev
10755545bccSGerrit Uitslag     */
10855545bccSGerrit Uitslag    function test_requestnextfifthrev() {
10955545bccSGerrit Uitslag        $rev          = 1362525899;
11055545bccSGerrit Uitslag        $dir          = 5;
11155545bccSGerrit Uitslag        $revexpected  = 1362526767;
11255545bccSGerrit Uitslag
11355545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
11455545bccSGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
11555545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
11655545bccSGerrit Uitslag    }
11755545bccSGerrit Uitslag
11855545bccSGerrit Uitslag    /**
11955545bccSGerrit Uitslag     * request existing rev with chucked reading
12055545bccSGerrit Uitslag     */
12155545bccSGerrit Uitslag    function test_requestnextfifthrev_chuncked() {
12255545bccSGerrit Uitslag        $rev         = 1362525899;
12355545bccSGerrit Uitslag        $dir         = 5;
12455545bccSGerrit Uitslag        $revexpected = 1362526767;
12555545bccSGerrit Uitslag
12655545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 512);
12755545bccSGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
12855545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
12955545bccSGerrit Uitslag    }
13055545bccSGerrit Uitslag
13155545bccSGerrit Uitslag    /**
13255545bccSGerrit Uitslag     * request existing rev
13355545bccSGerrit Uitslag     */
13455545bccSGerrit Uitslag    function test_requestprevrev() {
13555545bccSGerrit Uitslag        $rev          = 1362525899;
13655545bccSGerrit Uitslag        $dir1          = -1;
13755545bccSGerrit Uitslag        $dir5          = -5;
13855545bccSGerrit Uitslag        $revexpected1  = 1362525359;
13955545bccSGerrit Uitslag        $revexpected5  = 1360110636;
14055545bccSGerrit Uitslag
14155545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
14255545bccSGerrit Uitslag        $revfound1 = $pagelog->getRelativeRevision($rev, $dir1, $media = false);
14355545bccSGerrit Uitslag        $this->assertEquals($revexpected1, $revfound1);
14455545bccSGerrit Uitslag
14555545bccSGerrit Uitslag        $revfound5 = $pagelog->getRelativeRevision($rev, $dir5, $media = false);
14655545bccSGerrit Uitslag        $this->assertEquals($revexpected5, $revfound5);
14755545bccSGerrit Uitslag    }
14855545bccSGerrit Uitslag
14955545bccSGerrit Uitslag    /**
15055545bccSGerrit Uitslag     * request existing rev with chucked reading
15155545bccSGerrit Uitslag     */
15255545bccSGerrit Uitslag    function test_requestprevrev_chuncked() {
15355545bccSGerrit Uitslag        $rev          = 1362525899;
15455545bccSGerrit Uitslag        $dir1          = -1;
15555545bccSGerrit Uitslag        $dir5          = -5;
15655545bccSGerrit Uitslag        $revexpected1  = 1362525359;
15755545bccSGerrit Uitslag        $revexpected5  = 1360110636;
15855545bccSGerrit Uitslag
15955545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 512);
16055545bccSGerrit Uitslag        $revfound1 = $pagelog->getRelativeRevision($rev, $dir1, $media = false);
16155545bccSGerrit Uitslag        $this->assertEquals($revexpected1, $revfound1);
16255545bccSGerrit Uitslag
16355545bccSGerrit Uitslag        $revfound5 = $pagelog->getRelativeRevision($rev, $dir5, $media = false);
16455545bccSGerrit Uitslag        $this->assertEquals($revexpected5, $revfound5);
16555545bccSGerrit Uitslag    }
16655545bccSGerrit Uitslag
16755545bccSGerrit Uitslag    /**
16855545bccSGerrit Uitslag     * request after recentest version in changelog
16955545bccSGerrit Uitslag     */
17055545bccSGerrit Uitslag    function test_requestrecentestlogline_next() {
17155545bccSGerrit Uitslag        $rev          = 1374261194;
17255545bccSGerrit Uitslag        $dir          = 1;
17355545bccSGerrit Uitslag        $revexpected  = false;
17455545bccSGerrit Uitslag
17555545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
17655545bccSGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
17755545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
17855545bccSGerrit Uitslag    }
17955545bccSGerrit Uitslag
18055545bccSGerrit Uitslag    /**
18155545bccSGerrit Uitslag     * request after recentest version in changelog, with chuncked reading
18255545bccSGerrit Uitslag     */
18355545bccSGerrit Uitslag    function test_requestrecentestlogline_next_chuncked() {
18455545bccSGerrit Uitslag        $rev          = 1374261194;
18555545bccSGerrit Uitslag        $dir          = 1;
18655545bccSGerrit Uitslag        $revexpected  = false;
18755545bccSGerrit Uitslag
18855545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 512);
18955545bccSGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
19055545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
19155545bccSGerrit Uitslag    }
19255545bccSGerrit Uitslag
19355545bccSGerrit Uitslag
19455545bccSGerrit Uitslag    /**
19555545bccSGerrit Uitslag     * request before current version
19655545bccSGerrit Uitslag     */
19755545bccSGerrit Uitslag    function test_requestrecentestlogline_prev() {
19855545bccSGerrit Uitslag        $rev          = 1374261194;
19955545bccSGerrit Uitslag        $dir          = -1;
20055545bccSGerrit Uitslag        $revexpected  = 1371579614;
20155545bccSGerrit Uitslag
20255545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
20355545bccSGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
20455545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
20555545bccSGerrit Uitslag    }
20655545bccSGerrit Uitslag
20755545bccSGerrit Uitslag    /**
20855545bccSGerrit Uitslag     * request before current version, with chuncked reading
20955545bccSGerrit Uitslag     */
21055545bccSGerrit Uitslag    function test_requestrecentestlogline_prev_chuncked() {
21155545bccSGerrit Uitslag        $rev          = 1374261194;
21255545bccSGerrit Uitslag        $dir          = -1;
21355545bccSGerrit Uitslag        $revexpected  = 1371579614;
21455545bccSGerrit Uitslag
21555545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 512);
21655545bccSGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
21755545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
21855545bccSGerrit Uitslag    }
21955545bccSGerrit Uitslag
22055545bccSGerrit Uitslag    /**
22155545bccSGerrit Uitslag     * Request negative revision
22255545bccSGerrit Uitslag     * looks in positive direction, so it catches the oldest revision
22355545bccSGerrit Uitslag     */
22455545bccSGerrit Uitslag    function test_negativerev_posdir() {
22555545bccSGerrit Uitslag        $rev = -10;
22655545bccSGerrit Uitslag        $dir = 1;
22755545bccSGerrit Uitslag        $revexpected = 1360110636;
22855545bccSGerrit Uitslag
22955545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
23055545bccSGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
23155545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
23255545bccSGerrit Uitslag    }
23355545bccSGerrit Uitslag
23455545bccSGerrit Uitslag    /**
23555545bccSGerrit Uitslag     * Request negative revision
23655545bccSGerrit Uitslag     * looks in negative direction, but there is nothing
23755545bccSGerrit Uitslag     */
23855545bccSGerrit Uitslag    function test_negativerev_negdir() {
23955545bccSGerrit Uitslag        $rev = -10;
24055545bccSGerrit Uitslag        $dir = -1;
24155545bccSGerrit Uitslag        $revexpected = false;
24255545bccSGerrit Uitslag
24355545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
24455545bccSGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
24555545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
24655545bccSGerrit Uitslag    }
24755545bccSGerrit Uitslag
24855545bccSGerrit Uitslag    /**
24955545bccSGerrit Uitslag     * Start at non existing revision somewhere between existing revisions
25055545bccSGerrit Uitslag     */
25155545bccSGerrit Uitslag    function test_startatnotexistingrev_next() {
25255545bccSGerrit Uitslag        $rev = 1362525890;
25355545bccSGerrit Uitslag        $dir = 1;
25455545bccSGerrit Uitslag        $revexpected = 1362525899;
25555545bccSGerrit Uitslag
25655545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
25755545bccSGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
25855545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
25955545bccSGerrit Uitslag    }
26055545bccSGerrit Uitslag
26155545bccSGerrit Uitslag    /**
26255545bccSGerrit Uitslag     * Start at non existing revision somewhere between existing revisions
26355545bccSGerrit Uitslag     */
26455545bccSGerrit Uitslag    function test_startatnotexistingrev_prev() {
26555545bccSGerrit Uitslag        $rev = 1362525890;
26655545bccSGerrit Uitslag        $dir = -1;
26755545bccSGerrit Uitslag        $revexpected = 1362525359;
26855545bccSGerrit Uitslag
26955545bccSGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
27055545bccSGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
27155545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
27255545bccSGerrit Uitslag    }
273*0f13c836SGerrit Uitslag
274*0f13c836SGerrit Uitslag    function test_iscurrentpagerevision() {
275*0f13c836SGerrit Uitslag        $rev = 1385051947;
276*0f13c836SGerrit Uitslag        $currentexpected = true;
277*0f13c836SGerrit Uitslag
278*0f13c836SGerrit Uitslag        //set a known timestamp
279*0f13c836SGerrit Uitslag        touch(wikiFN($this->pageid), $rev);
280*0f13c836SGerrit Uitslag
281*0f13c836SGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
282*0f13c836SGerrit Uitslag
283*0f13c836SGerrit Uitslag        $current = $pagelog->isCurrentRevision($rev, $media = false);
284*0f13c836SGerrit Uitslag        $this->assertEquals($currentexpected, $current);
285*0f13c836SGerrit Uitslag    }
286*0f13c836SGerrit Uitslag
287*0f13c836SGerrit Uitslag    function test_isnotcurrentpagerevision() {
288*0f13c836SGerrit Uitslag        $rev = 1385051947;
289*0f13c836SGerrit Uitslag        $not_current_rev = $rev - 1;
290*0f13c836SGerrit Uitslag        $currentexpected = false;
291*0f13c836SGerrit Uitslag
292*0f13c836SGerrit Uitslag        //set a known timestamp
293*0f13c836SGerrit Uitslag        touch(wikiFN($this->pageid), $rev);
294*0f13c836SGerrit Uitslag
295*0f13c836SGerrit Uitslag        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
296*0f13c836SGerrit Uitslag        $current = $pagelog->isCurrentRevision($not_current_rev, $media = false);
297*0f13c836SGerrit Uitslag        $this->assertEquals($currentexpected, $current);
298*0f13c836SGerrit Uitslag    }
299*0f13c836SGerrit Uitslag
300*0f13c836SGerrit Uitslag    function test_notexistingcurrentpage() {
301*0f13c836SGerrit Uitslag        $rev = 1385051947;
302*0f13c836SGerrit Uitslag        $currentexpected = false;
303*0f13c836SGerrit Uitslag
304*0f13c836SGerrit Uitslag        $pagelog = new PageRevisionLog('nonexistingpage', $chunk_size = 8192);
305*0f13c836SGerrit Uitslag        $current = $pagelog->isCurrentRevision($rev, $media = false);
306*0f13c836SGerrit Uitslag        $this->assertEquals($currentexpected, $current);
307*0f13c836SGerrit Uitslag    }
30855545bccSGerrit Uitslag}