xref: /dokuwiki/_test/tests/inc/changelog_getlastrevisionat.test.php (revision 9d7d72dc83bc9b2cb23ec14fdc83c0c665e8039d)
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_getlastrevisionat_test extends DokuWikiTest {
11
12    private $pageid = 'mailinglist';
13
14    function setup() {
15        parent::setup();
16        global $cache_revinfo;
17        $cache =& $cache_revinfo;
18        if(isset($cache['nonexist'])) {
19            unset($cache['nonexist']);
20        }
21        if(isset($cache['mailinglist'])) {
22            unset($cache['mailinglist']);
23        }
24    }
25
26
27    /**
28     * no nonexist.changes meta file available
29     */
30    function test_changemetadatanotexists() {
31        $rev = 1362525899;
32        $id = 'nonexist';
33        $revsexpected = false;
34
35        $pagelog = new PageChangeLog($id, $chunk_size = 8192);
36        $revs = $pagelog->getLastRevisionAt($rev);
37        $this->assertEquals($revsexpected, $revs);
38    }
39
40    /**
41     * start at exact current revision of mailinglist page
42     *
43     */
44    function test_startatexactcurrentrev() {
45        $rev = 1385051947;
46        $revsexpected = '';
47
48        //set a known timestamp
49        touch(wikiFN($this->pageid), $rev);
50
51        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
52        $revs = $pagelog->getLastRevisionAt($rev);
53        $this->assertEquals($revsexpected, $revs);
54
55    }
56
57    /**
58     * test a future revision
59     *
60     */
61    function test_futurerev() {
62        $rev = 1385051947;
63        $revsexpected = '';
64
65        //set a known timestamp
66        touch(wikiFN($this->pageid), $rev);
67
68        $rev +=1;
69
70        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
71        $revs = $pagelog->getLastRevisionAt($rev);
72        $this->assertEquals($revsexpected, $revs);
73
74    }
75
76    /**
77     * start at exact last revision of mailinglist page
78     *
79     */
80    function test_exactlastrev() {
81        $rev = 1360110636;
82        $revsexpected = 1360110636;
83
84        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
85        $revs = $pagelog->getLastRevisionAt($rev);
86        $this->assertEquals($revsexpected, $revs);
87    }
88
89
90    /**
91     * Request not existing revision
92     *
93     */
94    function test_olderrev() {
95        $rev = 1;
96        $revexpected = false;
97
98        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
99        $revfound = $pagelog->getLastRevisionAt($rev);
100        $this->assertEquals($revexpected, $revfound);
101    }
102
103    /**
104     * Start at non existing revision somewhere between existing revisions
105     */
106    function test_notexistingrev() {
107        $rev = 1362525890;
108        $revexpected = 1362525359;
109
110        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
111        $revfound = $pagelog->getLastRevisionAt($rev);
112        $this->assertEquals($revexpected, $revfound);
113    }
114
115    /**
116     * request nonexisting page
117     *
118     */
119    function test_notexistingpage() {
120        $rev = 1385051947;
121        $currentexpected = false;
122
123        $pagelog = new PageChangeLog('nonexistingpage', $chunk_size = 8192);
124        $current = $pagelog->getLastRevisionAt($rev);
125        $this->assertEquals($currentexpected, $current);
126    }
127}