xref: /dokuwiki/_test/tests/inc/changelog_getrevisions.test.php (revision b21beefdfa477fe0e5810051462f134b3f0e99a9)
1<?php
2/**
3 * Tests for requesting revisions of a page with getRevisions()
4 *
5 * This class uses the files:
6 * - data/pages/mailinglist.txt
7 * - data/meta/mailinglist.changes
8 */
9class changelog_getrevisions_test extends DokuWikiTest {
10
11    /**
12     * $first counts inclusive zero, after the current page
13     */
14    private $revsexpected = array(
15        1374261194, //current page
16        1371579614, 1368622240, // revisions, corresponds to respectively $first = 0 and 1
17        1368622195, 1368622152,
18        1368612599, 1368612506,
19        1368609772, 1368575634,
20        1363436892, 1362527164,
21        1362527046, 1362526861, //10 and 11
22        1362526767, 1362526167,
23        1362526119, 1362526039,
24        1362525926, 1362525899,
25        1362525359, 1362525145,
26        1362524799, 1361901536, //20 and 21
27        1360110636
28    );
29    private $pageid = 'mailinglist';
30
31    function setup() {
32        parent::setup();
33        global $cache_revinfo;
34        $cache =& $cache_revinfo;
35        if(isset($cache['nonexist'])) {
36            unset($cache['nonexist']);
37        }
38        if(isset($cache['mailinglist'])) {
39            unset($cache['nonexist']);
40        }
41    }
42
43    /**
44     * no nonexist.changes meta file available
45     */
46    function test_changemetadatanotexists() {
47        $first = 0;
48        $num   = 1;
49        $id    = 'nonexist';
50
51        $revs         = getRevisions($id, $first, $num, $chunk_size = 8192, $media = false);
52        $revsexpected = array();
53        $this->assertEquals($revsexpected, $revs);
54    }
55
56    /**
57     * request first recentest revision
58     * (so skips first line which belongs to the current existing page)
59     */
60    function test_requestlastrev() {
61        $first        = 0;
62        $num          = 1;
63        $revsexpected = array($this->revsexpected[1]);
64
65        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 8192, $media = false);
66        $this->assertEquals($revsexpected, $revs);
67
68        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 512, $media = false);
69        $this->assertEquals($revsexpected, $revs);
70    }
71
72    /**
73     * request first recentest revision
74     * (so skips first line which belongs to the current existing page)
75     */
76    function test_requestonebutlastrev() {
77        $first        = 1;
78        $num          = 1;
79        $revsexpected = array($this->revsexpected[2]);
80
81        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 8192, $media = false);
82        $this->assertEquals($revsexpected, $revs);
83
84        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 512, $media = false);
85        $this->assertEquals($revsexpected, $revs);
86    }
87
88    /**
89     * request first recentest revision
90     * (so skips first line of current existing page)
91     */
92    function test_requestrevswithoffset() {
93        $first        = 10;
94        $num          = 5;
95        $revsexpected = array_slice($this->revsexpected, $first + 1, $num);
96
97        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 8192, $media = false);
98        $this->assertEquals($revsexpected, $revs);
99
100        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 512, $media = false);
101        $this->assertEquals($revsexpected, $revs);
102    }
103
104    /**
105     * first = -1 requests recentest logline, without skipping
106     */
107    function test_requestrecentestlogline() {
108        $first        = -1;
109        $num          = 1;
110        $revsexpected = array($this->revsexpected[0]);
111
112        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 8192, $media = false);
113        $this->assertEquals($revsexpected, $revs);
114
115        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 512, $media = false);
116        $this->assertEquals($revsexpected, $revs);
117    }
118
119    /**
120     * chunck size = 0 skips chuncked loading
121     */
122    function test_wholefile() {
123        $first        = 0;
124        $num          = 1000;
125        $revsexpected = array_slice($this->revsexpected, 1);
126
127        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 0, $media = false);
128        $this->assertEquals($revsexpected, $revs);
129    }
130
131    /**
132     * Negative range returns no result
133     */
134    function test_negativenum() {
135        $first        = 0;
136        $num          = -10;
137        $revsexpected = array();
138
139        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 8192, $media = false);
140        $this->assertEquals($revsexpected, $revs);
141
142        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 512, $media = false);
143        $this->assertEquals($revsexpected, $revs);
144    }
145
146    /**
147     * Negative range returns no result
148     */
149    function test_negativennumoffset() {
150        $first        = 2;
151        $num          = -10;
152        $revsexpected = array();
153
154        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 8192, $media = false);
155        $this->assertEquals($revsexpected, $revs);
156
157        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 512, $media = false);
158        $this->assertEquals($revsexpected, $revs);
159    }
160
161    /**
162     * zero range returns no result
163     */
164    function test_zeronum() {
165        $first        = 5;
166        $num          = 0;
167        $revsexpected = array();
168
169        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 8192, $media = false);
170        $this->assertEquals($revsexpected, $revs);
171
172        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 512, $media = false);
173        $this->assertEquals($revsexpected, $revs);
174    }
175
176    /**
177     * get oldest revisions
178     */
179    function test_requestlargeoffset() {
180        $first        = 22;
181        $num          = 50;
182        $revsexpected = array_slice($this->revsexpected, $first + 1);
183
184        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 8192, $media = false);
185        $this->assertEquals($revsexpected, $revs);
186    }
187
188    /**
189     * request with too large offset and range
190     */
191    function test_requesttoolargenumberrevs() {
192        $first        = 50;
193        $num          = 50;
194        $revsexpected = array();
195
196        $revs = getRevisions($this->pageid, $first, $num, $chunk_size = 8192, $media = false);
197        $this->assertEquals($revsexpected, $revs);
198    }
199
200}