xref: /dokuwiki/_test/tests/inc/changelog_getrevisions.test.php (revision fb285245a7e0188369a3e6cc179ed20795bd3799)
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
341c33cec3SAndreas Gohr    function setup() : void {
3551bd6f03SKlap-in        parent::setup();
3651bd6f03SKlap-in        global $cache_revinfo;
3751bd6f03SKlap-in        $cache =& $cache_revinfo;
3851bd6f03SKlap-in        unset($cache['nonexist']);
396556cf69SGerrit Uitslag        unset($cache['mailinglist']);
40*fb285245SSatoshi Sahara        // fix filemtime of page source
41*fb285245SSatoshi Sahara        touch(wikiFN($this->pageid), $this->revsexpected[0]);
4251bd6f03SKlap-in    }
4351bd6f03SKlap-in
4451bd6f03SKlap-in    /**
4551bd6f03SKlap-in     * no nonexist.changes meta file available
4651bd6f03SKlap-in     */
4751bd6f03SKlap-in    function test_changemetadatanotexists() {
4851bd6f03SKlap-in        $first = 0;
4951bd6f03SKlap-in        $num = 1;
5051bd6f03SKlap-in        $id = 'nonexist';
517d1e323eSGerrit Uitslag        $revsexpected = array();
5251bd6f03SKlap-in
53047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($id, $chunk_size = 8192);
54047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
5551bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
5651bd6f03SKlap-in    }
5751bd6f03SKlap-in
5851bd6f03SKlap-in    /**
5951bd6f03SKlap-in     * request first recentest revision
6051bd6f03SKlap-in     * (so skips first line which belongs to the current existing page)
6151bd6f03SKlap-in     */
6251bd6f03SKlap-in    function test_requestlastrev() {
6351bd6f03SKlap-in        $first = 0;
6451bd6f03SKlap-in        $num = 1;
6551bd6f03SKlap-in        $revsexpected = array($this->revsexpected[1]);
6651bd6f03SKlap-in
67047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
68047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
6951bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
7051bd6f03SKlap-in
71047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
72047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
7351bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
747d1e323eSGerrit Uitslag
757d1e323eSGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
767d1e323eSGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
777d1e323eSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
7851bd6f03SKlap-in    }
7951bd6f03SKlap-in
8051bd6f03SKlap-in    /**
8151bd6f03SKlap-in     * request first recentest revision
8251bd6f03SKlap-in     * (so skips first line which belongs to the current existing page)
8351bd6f03SKlap-in     */
8451bd6f03SKlap-in    function test_requestonebutlastrev() {
8551bd6f03SKlap-in        $first = 1;
8651bd6f03SKlap-in        $num = 1;
8751bd6f03SKlap-in        $revsexpected = array($this->revsexpected[2]);
8851bd6f03SKlap-in
89047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
90047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
9151bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
9251bd6f03SKlap-in
93047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
94047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
9551bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
967d1e323eSGerrit Uitslag
977d1e323eSGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
987d1e323eSGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
997d1e323eSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
10051bd6f03SKlap-in    }
10151bd6f03SKlap-in
10251bd6f03SKlap-in    /**
10351bd6f03SKlap-in     * request first recentest revision
10451bd6f03SKlap-in     * (so skips first line of current existing page)
10551bd6f03SKlap-in     */
10651bd6f03SKlap-in    function test_requestrevswithoffset() {
10751bd6f03SKlap-in        $first = 10;
10851bd6f03SKlap-in        $num = 5;
10951bd6f03SKlap-in        $revsexpected = array_slice($this->revsexpected, $first + 1, $num);
11051bd6f03SKlap-in
111047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
112047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
11351bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
11451bd6f03SKlap-in
115047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
116047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
11751bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
1187d1e323eSGerrit Uitslag
1197d1e323eSGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
1207d1e323eSGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
1217d1e323eSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
12251bd6f03SKlap-in    }
12351bd6f03SKlap-in
12451bd6f03SKlap-in    /**
12551bd6f03SKlap-in     * first = -1 requests recentest logline, without skipping
12651bd6f03SKlap-in     */
12751bd6f03SKlap-in    function test_requestrecentestlogline() {
12851bd6f03SKlap-in        $first = -1;
12951bd6f03SKlap-in        $num = 1;
13051bd6f03SKlap-in        $revsexpected = array($this->revsexpected[0]);
13151bd6f03SKlap-in
132047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
133047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
13451bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
13551bd6f03SKlap-in
136047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
137047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
13851bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
13951bd6f03SKlap-in    }
14051bd6f03SKlap-in
14151bd6f03SKlap-in    /**
14251bd6f03SKlap-in     * chunck size = 0 skips chuncked loading
14351bd6f03SKlap-in     */
14451bd6f03SKlap-in    function test_wholefile() {
14551bd6f03SKlap-in        $first = 0;
14651bd6f03SKlap-in        $num = 1000;
14751bd6f03SKlap-in        $revsexpected = array_slice($this->revsexpected, 1);
14851bd6f03SKlap-in
149047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 0);
150047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
15151bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
15251bd6f03SKlap-in    }
15351bd6f03SKlap-in
15451bd6f03SKlap-in    /**
15551bd6f03SKlap-in     * Negative range returns no result
15651bd6f03SKlap-in     */
15751bd6f03SKlap-in    function test_negativenum() {
15851bd6f03SKlap-in        $first = 0;
15951bd6f03SKlap-in        $num = -10;
16051bd6f03SKlap-in        $revsexpected = array();
16151bd6f03SKlap-in
162047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
163047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
16451bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
16551bd6f03SKlap-in
166047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
167047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
16851bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
16951bd6f03SKlap-in    }
17051bd6f03SKlap-in
17151bd6f03SKlap-in    /**
17251bd6f03SKlap-in     * Negative range returns no result
17351bd6f03SKlap-in     */
17451bd6f03SKlap-in    function test_negativennumoffset() {
17551bd6f03SKlap-in        $first = 2;
17651bd6f03SKlap-in        $num = -10;
17751bd6f03SKlap-in        $revsexpected = array();
17851bd6f03SKlap-in
179047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
1804f6e20c7SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
18151bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
18251bd6f03SKlap-in
183047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
184047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
18551bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
18651bd6f03SKlap-in    }
18751bd6f03SKlap-in
18851bd6f03SKlap-in    /**
18951bd6f03SKlap-in     * zero range returns no result
19051bd6f03SKlap-in     */
19151bd6f03SKlap-in    function test_zeronum() {
19251bd6f03SKlap-in        $first = 5;
19351bd6f03SKlap-in        $num = 0;
19451bd6f03SKlap-in        $revsexpected = array();
19551bd6f03SKlap-in
196047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
197047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
19851bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
19951bd6f03SKlap-in
200047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
201047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
20251bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
20351bd6f03SKlap-in    }
20451bd6f03SKlap-in
20551bd6f03SKlap-in    /**
20651bd6f03SKlap-in     * get oldest revisions
20751bd6f03SKlap-in     */
20851bd6f03SKlap-in    function test_requestlargeoffset() {
20951bd6f03SKlap-in        $first = 22;
21051bd6f03SKlap-in        $num = 50;
21151bd6f03SKlap-in        $revsexpected = array_slice($this->revsexpected, $first + 1);
21251bd6f03SKlap-in
213047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
214047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
21551bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
21651bd6f03SKlap-in    }
21751bd6f03SKlap-in
21851bd6f03SKlap-in    /**
21951bd6f03SKlap-in     * request with too large offset and range
22051bd6f03SKlap-in     */
22151bd6f03SKlap-in    function test_requesttoolargenumberrevs() {
22251bd6f03SKlap-in        $first = 50;
22351bd6f03SKlap-in        $num = 50;
22451bd6f03SKlap-in        $revsexpected = array();
22551bd6f03SKlap-in
226047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
227047bad06SGerrit Uitslag        $revs = $pagelog->getRevisions($first, $num);
22851bd6f03SKlap-in        $this->assertEquals($revsexpected, $revs);
22951bd6f03SKlap-in    }
23051bd6f03SKlap-in
23151bd6f03SKlap-in}
232