xref: /dokuwiki/_test/tests/inc/changelog_getrelativerevision.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_getrelativerevision_test extends DokuWikiTest {
11
12    private $logline = "1362525899	127.0.0.1	E	mailinglist	pubcie	[Data entry] 	\n";
13    private $pageid = 'mailinglist';
14
15    function setup() {
16        parent::setup();
17        global $cache_revinfo;
18        $cache =& $cache_revinfo;
19        if(isset($cache['nonexist'])) {
20            unset($cache['nonexist']);
21        }
22        if(isset($cache['mailinglist'])) {
23            unset($cache['mailinglist']);
24        }
25    }
26
27    /**
28     * no nonexist.changes meta file available
29     */
30    function test_changemetadatanotexists() {
31        $rev          = 1362525899;
32        $dir          = 1;
33        $id           = 'nonexist';
34        $revsexpected = false;
35
36        $pagelog = new PageRevisionLog($id, $chunk_size = 8192);
37        $revs = $pagelog->getRelativeRevision($rev, $dir, $media = false);
38        $this->assertEquals($revsexpected, $revs);
39    }
40
41    /**
42     * no nonexist.changes meta file available
43     */
44    function test_nodirection() {
45        $rev          = 1362525899;
46        $dir          = 0;
47        $revsexpected = false;
48
49        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
50        $revs = $pagelog->getRelativeRevision($rev, $dir, $media = false);
51        $this->assertEquals($revsexpected, $revs);
52    }
53
54    /**
55     * start at exact current revision of mailinglist page
56     *
57     */
58    function test_startatexactcurrentrev() {
59        $rev          = 1374261194;
60        $dir          = 1;
61        $revsexpected = false;
62
63//        global $INFO;
64//        $INFO = pageinfo();
65//        var_dump($INFO);
66//        var_dump($INFO['meta']);
67//        var_dump($INFO['meta']['last_change']);
68//        var_dump($INFO['meta']['last_change']['date']);
69
70        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
71        $revs = $pagelog->getRelativeRevision($rev, $dir, $media = false);
72        $this->assertEquals($revsexpected, $revs);
73    }
74
75    /**
76     * request existing rev
77     */
78    function test_requestrev() {
79        $rev          = 1362525359;
80        $dir          = 1;
81        $revexpected  = 1362525899;
82        $infoexpected = parseChangelogLine($this->logline);
83
84        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
85        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
86        $this->assertEquals($revexpected, $revfound);
87        //checked info returned from cache
88        $info = $pagelog->getRevisionInfo($revfound, $media = false);
89        $this->assertEquals($infoexpected, $info);
90    }
91
92    /**
93     * request existing rev with chucked reading
94     */
95    function test_requestnextrev_chuncked() {
96        $rev         = 1362525899;
97        $dir         = 1;
98        $revexpected = 1362525926;
99
100        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 512);
101        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
102        $this->assertEquals($revexpected, $revfound);
103    }
104
105    /**
106     * request existing rev
107     */
108    function test_requestnextfifthrev() {
109        $rev          = 1362525899;
110        $dir          = 5;
111        $revexpected  = 1362526767;
112
113        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
114        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
115        $this->assertEquals($revexpected, $revfound);
116    }
117
118    /**
119     * request existing rev with chucked reading
120     */
121    function test_requestnextfifthrev_chuncked() {
122        $rev         = 1362525899;
123        $dir         = 5;
124        $revexpected = 1362526767;
125
126        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 512);
127        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
128        $this->assertEquals($revexpected, $revfound);
129    }
130
131    /**
132     * request existing rev
133     */
134    function test_requestprevrev() {
135        $rev          = 1362525899;
136        $dir1          = -1;
137        $dir5          = -5;
138        $revexpected1  = 1362525359;
139        $revexpected5  = 1360110636;
140
141        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
142        $revfound1 = $pagelog->getRelativeRevision($rev, $dir1, $media = false);
143        $this->assertEquals($revexpected1, $revfound1);
144
145        $revfound5 = $pagelog->getRelativeRevision($rev, $dir5, $media = false);
146        $this->assertEquals($revexpected5, $revfound5);
147    }
148
149    /**
150     * request existing rev with chucked reading
151     */
152    function test_requestprevrev_chuncked() {
153        $rev          = 1362525899;
154        $dir1          = -1;
155        $dir5          = -5;
156        $revexpected1  = 1362525359;
157        $revexpected5  = 1360110636;
158
159        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 512);
160        $revfound1 = $pagelog->getRelativeRevision($rev, $dir1, $media = false);
161        $this->assertEquals($revexpected1, $revfound1);
162
163        $revfound5 = $pagelog->getRelativeRevision($rev, $dir5, $media = false);
164        $this->assertEquals($revexpected5, $revfound5);
165    }
166
167    /**
168     * request after recentest version in changelog
169     */
170    function test_requestrecentestlogline_next() {
171        $rev          = 1374261194;
172        $dir          = 1;
173        $revexpected  = false;
174
175        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
176        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
177        $this->assertEquals($revexpected, $revfound);
178    }
179
180    /**
181     * request after recentest version in changelog, with chuncked reading
182     */
183    function test_requestrecentestlogline_next_chuncked() {
184        $rev          = 1374261194;
185        $dir          = 1;
186        $revexpected  = false;
187
188        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 512);
189        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
190        $this->assertEquals($revexpected, $revfound);
191    }
192
193
194    /**
195     * request before current version
196     */
197    function test_requestrecentestlogline_prev() {
198        $rev          = 1374261194;
199        $dir          = -1;
200        $revexpected  = 1371579614;
201
202        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
203        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
204        $this->assertEquals($revexpected, $revfound);
205    }
206
207    /**
208     * request before current version, with chuncked reading
209     */
210    function test_requestrecentestlogline_prev_chuncked() {
211        $rev          = 1374261194;
212        $dir          = -1;
213        $revexpected  = 1371579614;
214
215        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 512);
216        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
217        $this->assertEquals($revexpected, $revfound);
218    }
219
220    /**
221     * Request negative revision
222     * looks in positive direction, so it catches the oldest revision
223     */
224    function test_negativerev_posdir() {
225        $rev = -10;
226        $dir = 1;
227        $revexpected = 1360110636;
228
229        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
230        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
231        $this->assertEquals($revexpected, $revfound);
232    }
233
234    /**
235     * Request negative revision
236     * looks in negative direction, but there is nothing
237     */
238    function test_negativerev_negdir() {
239        $rev = -10;
240        $dir = -1;
241        $revexpected = false;
242
243        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
244        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
245        $this->assertEquals($revexpected, $revfound);
246    }
247
248    /**
249     * Start at non existing revision somewhere between existing revisions
250     */
251    function test_startatnotexistingrev_next() {
252        $rev = 1362525890;
253        $dir = 1;
254        $revexpected = 1362525899;
255
256        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
257        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
258        $this->assertEquals($revexpected, $revfound);
259    }
260
261    /**
262     * Start at non existing revision somewhere between existing revisions
263     */
264    function test_startatnotexistingrev_prev() {
265        $rev = 1362525890;
266        $dir = -1;
267        $revexpected = 1362525359;
268
269        $pagelog = new PageRevisionLog($this->pageid, $chunk_size = 8192);
270        $revfound = $pagelog->getRelativeRevision($rev, $dir, $media = false);
271        $this->assertEquals($revexpected, $revfound);
272    }
273}