xref: /dokuwiki/_test/tests/inc/changelog_getrevisions.test.php (revision 7d1e323e214bc52984e7df38732878be392adc5f)
151bd6f03SKlap-in<?php
251bd6f03SKlap-in/**
351bd6f03SKlap-in * Tests for requesting revisions of a page with getRevisions()
451bd6f03SKlap-in *
551bd6f03SKlap-in * This class uses the files:
651bd6f03SKlap-in * - data/pages/mailinglist.txt
751bd6f03SKlap-in * - data/meta/mailinglist.changes
851bd6f03SKlap-in */
951bd6f03SKlap-inclass changelog_getrevisions_test extends DokuWikiTest {
1051bd6f03SKlap-in
1151bd6f03SKlap-in    /**
1251bd6f03SKlap-in     * $first counts inclusive zero, after the current page
1351bd6f03SKlap-in     */
1451bd6f03SKlap-in    private $revsexpected = array(
1551bd6f03SKlap-in        1374261194, //current page
1651bd6f03SKlap-in        1371579614, 1368622240, // revisions, corresponds to respectively $first = 0 and 1
1751bd6f03SKlap-in        1368622195, 1368622152,
1851bd6f03SKlap-in        1368612599, 1368612506,
1951bd6f03SKlap-in        1368609772, 1368575634,
2051bd6f03SKlap-in        1363436892, 1362527164,
2151bd6f03SKlap-in        1362527046, 1362526861, //10 and 11
2251bd6f03SKlap-in        1362526767, 1362526167,
2351bd6f03SKlap-in        1362526119, 1362526039,
2451bd6f03SKlap-in        1362525926, 1362525899,
2551bd6f03SKlap-in        1362525359, 1362525145,
2651bd6f03SKlap-in        1362524799, 1361901536, //20 and 21
2751bd6f03SKlap-in        1360110636
2851bd6f03SKlap-in    );
2951bd6f03SKlap-in    private $pageid = 'mailinglist';
3051bd6f03SKlap-in
3151bd6f03SKlap-in    function setup() {
3251bd6f03SKlap-in        parent::setup();
3351bd6f03SKlap-in        global $cache_revinfo;
3451bd6f03SKlap-in        $cache =& $cache_revinfo;
3551bd6f03SKlap-in        if(isset($cache['nonexist'])) {
3651bd6f03SKlap-in            unset($cache['nonexist']);
3751bd6f03SKlap-in        }
3851bd6f03SKlap-in        if(isset($cache['mailinglist'])) {
396556cf69SGerrit Uitslag            unset($cache['mailinglist']);
4051bd6f03SKlap-in        }
4151bd6f03SKlap-in    }
4251bd6f03SKlap-in
4351bd6f03SKlap-in    /**
4451bd6f03SKlap-in     * no nonexist.changes meta file available
4551bd6f03SKlap-in     */
4651bd6f03SKlap-in    function test_changemetadatanotexists() {
4751bd6f03SKlap-in        $first = 0;
4851bd6f03SKlap-in        $num = 1;
4951bd6f03SKlap-in        $id = 'nonexist';
50*7d1e323eSGerrit Uitslag        $revsexpected = array();
5151bd6f03SKlap-in
52047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($id, $chunk_size = 8192);
53047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
5451bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
5551bd6f03SKlap-in    }
5651bd6f03SKlap-in
5751bd6f03SKlap-in    /**
5851bd6f03SKlap-in     * request first recentest revision
5951bd6f03SKlap-in     * (so skips first line which belongs to the current existing page)
6051bd6f03SKlap-in     */
6151bd6f03SKlap-in    function test_requestlastrev() {
6251bd6f03SKlap-in        $first = 0;
6351bd6f03SKlap-in        $num = 1;
6451bd6f03SKlap-in        $revsexpected = array($this->revsexpected[1]);
6551bd6f03SKlap-in
66047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
67047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
6851bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
6951bd6f03SKlap-in
70047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
71047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
7251bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
73*7d1e323eSGerrit Uitslag
74*7d1e323eSGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
75*7d1e323eSGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
76*7d1e323eSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
7751bd6f03SKlap-in    }
7851bd6f03SKlap-in
7951bd6f03SKlap-in    /**
8051bd6f03SKlap-in     * request first recentest revision
8151bd6f03SKlap-in     * (so skips first line which belongs to the current existing page)
8251bd6f03SKlap-in     */
8351bd6f03SKlap-in    function test_requestonebutlastrev() {
8451bd6f03SKlap-in        $first = 1;
8551bd6f03SKlap-in        $num = 1;
8651bd6f03SKlap-in        $revsexpected = array($this->revsexpected[2]);
8751bd6f03SKlap-in
88047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
89047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
9051bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
9151bd6f03SKlap-in
92047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
93047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
9451bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
95*7d1e323eSGerrit Uitslag
96*7d1e323eSGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
97*7d1e323eSGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
98*7d1e323eSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
9951bd6f03SKlap-in    }
10051bd6f03SKlap-in
10151bd6f03SKlap-in    /**
10251bd6f03SKlap-in     * request first recentest revision
10351bd6f03SKlap-in     * (so skips first line of current existing page)
10451bd6f03SKlap-in     */
10551bd6f03SKlap-in    function test_requestrevswithoffset() {
10651bd6f03SKlap-in        $first = 10;
10751bd6f03SKlap-in        $num = 5;
10851bd6f03SKlap-in        $revsexpected = array_slice($this->revsexpected, $first + 1, $num);
10951bd6f03SKlap-in
110047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
111047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
11251bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
11351bd6f03SKlap-in
114047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
115047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
11651bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
117*7d1e323eSGerrit Uitslag
118*7d1e323eSGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
119*7d1e323eSGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
120*7d1e323eSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
12151bd6f03SKlap-in    }
12251bd6f03SKlap-in
12351bd6f03SKlap-in    /**
12451bd6f03SKlap-in     * first = -1 requests recentest logline, without skipping
12551bd6f03SKlap-in     */
12651bd6f03SKlap-in    function test_requestrecentestlogline() {
12751bd6f03SKlap-in        $first = -1;
12851bd6f03SKlap-in        $num = 1;
12951bd6f03SKlap-in        $revsexpected = array($this->revsexpected[0]);
13051bd6f03SKlap-in
131047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
132047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
13351bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
13451bd6f03SKlap-in
135047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
136047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
13751bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
13851bd6f03SKlap-in    }
13951bd6f03SKlap-in
14051bd6f03SKlap-in    /**
14151bd6f03SKlap-in     * chunck size = 0 skips chuncked loading
14251bd6f03SKlap-in     */
14351bd6f03SKlap-in    function test_wholefile() {
14451bd6f03SKlap-in        $first = 0;
14551bd6f03SKlap-in        $num = 1000;
14651bd6f03SKlap-in        $revsexpected = array_slice($this->revsexpected, 1);
14751bd6f03SKlap-in
148047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 0);
149047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
15051bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
15151bd6f03SKlap-in    }
15251bd6f03SKlap-in
15351bd6f03SKlap-in    /**
15451bd6f03SKlap-in     * Negative range returns no result
15551bd6f03SKlap-in     */
15651bd6f03SKlap-in    function test_negativenum() {
15751bd6f03SKlap-in        $first = 0;
15851bd6f03SKlap-in        $num = -10;
15951bd6f03SKlap-in        $revsexpected = array();
16051bd6f03SKlap-in
161047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
162047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
16351bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
16451bd6f03SKlap-in
165047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
166047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
16751bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
16851bd6f03SKlap-in    }
16951bd6f03SKlap-in
17051bd6f03SKlap-in    /**
17151bd6f03SKlap-in     * Negative range returns no result
17251bd6f03SKlap-in     */
17351bd6f03SKlap-in    function test_negativennumoffset() {
17451bd6f03SKlap-in        $first = 2;
17551bd6f03SKlap-in        $num = -10;
17651bd6f03SKlap-in        $revsexpected = array();
17751bd6f03SKlap-in
178047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
1794f6e20c7SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
18051bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
18151bd6f03SKlap-in
182047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
183047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
18451bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
18551bd6f03SKlap-in    }
18651bd6f03SKlap-in
18751bd6f03SKlap-in    /**
18851bd6f03SKlap-in     * zero range returns no result
18951bd6f03SKlap-in     */
19051bd6f03SKlap-in    function test_zeronum() {
19151bd6f03SKlap-in        $first = 5;
19251bd6f03SKlap-in        $num = 0;
19351bd6f03SKlap-in        $revsexpected = array();
19451bd6f03SKlap-in
195047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
196047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
19751bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
19851bd6f03SKlap-in
199047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
200047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
20151bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
20251bd6f03SKlap-in    }
20351bd6f03SKlap-in
20451bd6f03SKlap-in    /**
20551bd6f03SKlap-in     * get oldest revisions
20651bd6f03SKlap-in     */
20751bd6f03SKlap-in    function test_requestlargeoffset() {
20851bd6f03SKlap-in        $first = 22;
20951bd6f03SKlap-in        $num = 50;
21051bd6f03SKlap-in        $revsexpected = array_slice($this->revsexpected, $first + 1);
21151bd6f03SKlap-in
212047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
213047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
21451bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
21551bd6f03SKlap-in    }
21651bd6f03SKlap-in
21751bd6f03SKlap-in    /**
21851bd6f03SKlap-in     * request with too large offset and range
21951bd6f03SKlap-in     */
22051bd6f03SKlap-in    function test_requesttoolargenumberrevs() {
22151bd6f03SKlap-in        $first = 50;
22251bd6f03SKlap-in        $num = 50;
22351bd6f03SKlap-in        $revsexpected = array();
22451bd6f03SKlap-in
225047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
226047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
22751bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
22851bd6f03SKlap-in    }
22951bd6f03SKlap-in
23051bd6f03SKlap-in}