xref: /dokuwiki/_test/tests/inc/changelog_getrevisions.test.php (revision 1c33cec37215d0c964cf961bdbc49ae7db3657e6)
151bd6f03SKlap-in<?php
20c3a5702SAndreas Gohr
30c3a5702SAndreas Gohruse dokuwiki\ChangeLog\PageChangeLog;
40c3a5702SAndreas Gohr
551bd6f03SKlap-in/**
651bd6f03SKlap-in * Tests for requesting revisions of a page with getRevisions()
751bd6f03SKlap-in *
851bd6f03SKlap-in * This class uses the files:
951bd6f03SKlap-in * - data/pages/mailinglist.txt
1051bd6f03SKlap-in * - data/meta/mailinglist.changes
1151bd6f03SKlap-in */
1251bd6f03SKlap-inclass changelog_getrevisions_test extends DokuWikiTest {
1351bd6f03SKlap-in
1451bd6f03SKlap-in    /**
1551bd6f03SKlap-in     * $first counts inclusive zero, after the current page
1651bd6f03SKlap-in     */
1751bd6f03SKlap-in    private $revsexpected = array(
1851bd6f03SKlap-in        1374261194, //current page
1951bd6f03SKlap-in        1371579614, 1368622240, // revisions, corresponds to respectively $first = 0 and 1
2051bd6f03SKlap-in        1368622195, 1368622152,
2151bd6f03SKlap-in        1368612599, 1368612506,
2251bd6f03SKlap-in        1368609772, 1368575634,
2351bd6f03SKlap-in        1363436892, 1362527164,
2451bd6f03SKlap-in        1362527046, 1362526861, //10 and 11
2551bd6f03SKlap-in        1362526767, 1362526167,
2651bd6f03SKlap-in        1362526119, 1362526039,
2751bd6f03SKlap-in        1362525926, 1362525899,
2851bd6f03SKlap-in        1362525359, 1362525145,
2951bd6f03SKlap-in        1362524799, 1361901536, //20 and 21
3051bd6f03SKlap-in        1360110636
3151bd6f03SKlap-in    );
3251bd6f03SKlap-in    private $pageid = 'mailinglist';
3351bd6f03SKlap-in
34*1c33cec3SAndreas Gohr    function setup() : void {
3551bd6f03SKlap-in        parent::setup();
3651bd6f03SKlap-in        global $cache_revinfo;
3751bd6f03SKlap-in        $cache =& $cache_revinfo;
3851bd6f03SKlap-in        if(isset($cache['nonexist'])) {
3951bd6f03SKlap-in            unset($cache['nonexist']);
4051bd6f03SKlap-in        }
4151bd6f03SKlap-in        if(isset($cache['mailinglist'])) {
426556cf69SGerrit Uitslag            unset($cache['mailinglist']);
4351bd6f03SKlap-in        }
4451bd6f03SKlap-in    }
4551bd6f03SKlap-in
4651bd6f03SKlap-in    /**
4751bd6f03SKlap-in     * no nonexist.changes meta file available
4851bd6f03SKlap-in     */
4951bd6f03SKlap-in    function test_changemetadatanotexists() {
5051bd6f03SKlap-in        $first = 0;
5151bd6f03SKlap-in        $num = 1;
5251bd6f03SKlap-in        $id = 'nonexist';
537d1e323eSGerrit Uitslag        $revsexpected = array();
5451bd6f03SKlap-in
55047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($id, $chunk_size = 8192);
56047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
5751bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
5851bd6f03SKlap-in    }
5951bd6f03SKlap-in
6051bd6f03SKlap-in    /**
6151bd6f03SKlap-in     * request first recentest revision
6251bd6f03SKlap-in     * (so skips first line which belongs to the current existing page)
6351bd6f03SKlap-in     */
6451bd6f03SKlap-in    function test_requestlastrev() {
6551bd6f03SKlap-in        $first = 0;
6651bd6f03SKlap-in        $num = 1;
6751bd6f03SKlap-in        $revsexpected = array($this->revsexpected[1]);
6851bd6f03SKlap-in
69047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
70047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
7151bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
7251bd6f03SKlap-in
73047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
74047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
7551bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
767d1e323eSGerrit Uitslag
777d1e323eSGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
787d1e323eSGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
797d1e323eSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
8051bd6f03SKlap-in    }
8151bd6f03SKlap-in
8251bd6f03SKlap-in    /**
8351bd6f03SKlap-in     * request first recentest revision
8451bd6f03SKlap-in     * (so skips first line which belongs to the current existing page)
8551bd6f03SKlap-in     */
8651bd6f03SKlap-in    function test_requestonebutlastrev() {
8751bd6f03SKlap-in        $first = 1;
8851bd6f03SKlap-in        $num = 1;
8951bd6f03SKlap-in        $revsexpected = array($this->revsexpected[2]);
9051bd6f03SKlap-in
91047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
92047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
9351bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
9451bd6f03SKlap-in
95047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
96047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
9751bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
987d1e323eSGerrit Uitslag
997d1e323eSGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
1007d1e323eSGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
1017d1e323eSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
10251bd6f03SKlap-in    }
10351bd6f03SKlap-in
10451bd6f03SKlap-in    /**
10551bd6f03SKlap-in     * request first recentest revision
10651bd6f03SKlap-in     * (so skips first line of current existing page)
10751bd6f03SKlap-in     */
10851bd6f03SKlap-in    function test_requestrevswithoffset() {
10951bd6f03SKlap-in        $first = 10;
11051bd6f03SKlap-in        $num = 5;
11151bd6f03SKlap-in        $revsexpected = array_slice($this->revsexpected, $first + 1, $num);
11251bd6f03SKlap-in
113047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
114047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
11551bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
11651bd6f03SKlap-in
117047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
118047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
11951bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
1207d1e323eSGerrit Uitslag
1217d1e323eSGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
1227d1e323eSGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
1237d1e323eSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
12451bd6f03SKlap-in    }
12551bd6f03SKlap-in
12651bd6f03SKlap-in    /**
12751bd6f03SKlap-in     * first = -1 requests recentest logline, without skipping
12851bd6f03SKlap-in     */
12951bd6f03SKlap-in    function test_requestrecentestlogline() {
13051bd6f03SKlap-in        $first = -1;
13151bd6f03SKlap-in        $num = 1;
13251bd6f03SKlap-in        $revsexpected = array($this->revsexpected[0]);
13351bd6f03SKlap-in
134047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
135047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
13651bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
13751bd6f03SKlap-in
138047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
139047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
14051bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
14151bd6f03SKlap-in    }
14251bd6f03SKlap-in
14351bd6f03SKlap-in    /**
14451bd6f03SKlap-in     * chunck size = 0 skips chuncked loading
14551bd6f03SKlap-in     */
14651bd6f03SKlap-in    function test_wholefile() {
14751bd6f03SKlap-in        $first = 0;
14851bd6f03SKlap-in        $num = 1000;
14951bd6f03SKlap-in        $revsexpected = array_slice($this->revsexpected, 1);
15051bd6f03SKlap-in
151047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 0);
152047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
15351bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
15451bd6f03SKlap-in    }
15551bd6f03SKlap-in
15651bd6f03SKlap-in    /**
15751bd6f03SKlap-in     * Negative range returns no result
15851bd6f03SKlap-in     */
15951bd6f03SKlap-in    function test_negativenum() {
16051bd6f03SKlap-in        $first = 0;
16151bd6f03SKlap-in        $num = -10;
16251bd6f03SKlap-in        $revsexpected = array();
16351bd6f03SKlap-in
164047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
165047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
16651bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
16751bd6f03SKlap-in
168047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
169047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
17051bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
17151bd6f03SKlap-in    }
17251bd6f03SKlap-in
17351bd6f03SKlap-in    /**
17451bd6f03SKlap-in     * Negative range returns no result
17551bd6f03SKlap-in     */
17651bd6f03SKlap-in    function test_negativennumoffset() {
17751bd6f03SKlap-in        $first = 2;
17851bd6f03SKlap-in        $num = -10;
17951bd6f03SKlap-in        $revsexpected = array();
18051bd6f03SKlap-in
181047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
1824f6e20c7SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
18351bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
18451bd6f03SKlap-in
185047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
186047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
18751bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
18851bd6f03SKlap-in    }
18951bd6f03SKlap-in
19051bd6f03SKlap-in    /**
19151bd6f03SKlap-in     * zero range returns no result
19251bd6f03SKlap-in     */
19351bd6f03SKlap-in    function test_zeronum() {
19451bd6f03SKlap-in        $first = 5;
19551bd6f03SKlap-in        $num = 0;
19651bd6f03SKlap-in        $revsexpected = array();
19751bd6f03SKlap-in
198047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
199047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
20051bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
20151bd6f03SKlap-in
202047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
203047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
20451bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
20551bd6f03SKlap-in    }
20651bd6f03SKlap-in
20751bd6f03SKlap-in    /**
20851bd6f03SKlap-in     * get oldest revisions
20951bd6f03SKlap-in     */
21051bd6f03SKlap-in    function test_requestlargeoffset() {
21151bd6f03SKlap-in        $first = 22;
21251bd6f03SKlap-in        $num = 50;
21351bd6f03SKlap-in        $revsexpected = array_slice($this->revsexpected, $first + 1);
21451bd6f03SKlap-in
215047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
216047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
21751bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
21851bd6f03SKlap-in    }
21951bd6f03SKlap-in
22051bd6f03SKlap-in    /**
22151bd6f03SKlap-in     * request with too large offset and range
22251bd6f03SKlap-in     */
22351bd6f03SKlap-in    function test_requesttoolargenumberrevs() {
22451bd6f03SKlap-in        $first = 50;
22551bd6f03SKlap-in        $num = 50;
22651bd6f03SKlap-in        $revsexpected = array();
22751bd6f03SKlap-in
228047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
229047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
23051bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
23151bd6f03SKlap-in    }
23251bd6f03SKlap-in
23351bd6f03SKlap-in}
234