xref: /dokuwiki/_test/tests/inc/changelog_getRevisionsAround.test.php (revision c931f569620802229ca2b48a0aafff77d5072979)
1*c931f569SGerrit Uitslag<?php
2*c931f569SGerrit Uitslag/**
3*c931f569SGerrit Uitslag * Tests for requesting revisions of a page with getRevisions()
4*c931f569SGerrit Uitslag *
5*c931f569SGerrit Uitslag * This class uses the files:
6*c931f569SGerrit Uitslag * - data/pages/mailinglist.txt
7*c931f569SGerrit Uitslag * - data/meta/mailinglist.changes
8*c931f569SGerrit Uitslag */
9*c931f569SGerrit Uitslagclass changelog_getrevisionsaround_test extends DokuWikiTest {
10*c931f569SGerrit Uitslag
11*c931f569SGerrit Uitslag    /**
12*c931f569SGerrit Uitslag     * list of revisions in mailinglist.changes
13*c931f569SGerrit Uitslag     */
14*c931f569SGerrit Uitslag    private $revsexpected = array(
15*c931f569SGerrit Uitslag        1374261194, //current page
16*c931f569SGerrit Uitslag        1371579614, 1368622240,
17*c931f569SGerrit Uitslag        1368622195, 1368622152,
18*c931f569SGerrit Uitslag        1368612599, 1368612506,
19*c931f569SGerrit Uitslag        1368609772, 1368575634,
20*c931f569SGerrit Uitslag        1363436892, 1362527164,
21*c931f569SGerrit Uitslag        1362527046, 1362526861,
22*c931f569SGerrit Uitslag        1362526767, 1362526167,
23*c931f569SGerrit Uitslag        1362526119, 1362526039,
24*c931f569SGerrit Uitslag        1362525926, 1362525899,
25*c931f569SGerrit Uitslag        1362525359, 1362525145,
26*c931f569SGerrit Uitslag        1362524799, 1361901536,
27*c931f569SGerrit Uitslag        1360110636
28*c931f569SGerrit Uitslag    );
29*c931f569SGerrit Uitslag    private $pageid = 'mailinglist';
30*c931f569SGerrit Uitslag
31*c931f569SGerrit Uitslag    function setup() {
32*c931f569SGerrit Uitslag        parent::setup();
33*c931f569SGerrit Uitslag        global $cache_revinfo;
34*c931f569SGerrit Uitslag        $cache =& $cache_revinfo;
35*c931f569SGerrit Uitslag        if(isset($cache['nonexist'])) {
36*c931f569SGerrit Uitslag            unset($cache['nonexist']);
37*c931f569SGerrit Uitslag        }
38*c931f569SGerrit Uitslag        if(isset($cache['mailinglist'])) {
39*c931f569SGerrit Uitslag            unset($cache['mailinglist']);
40*c931f569SGerrit Uitslag        }
41*c931f569SGerrit Uitslag    }
42*c931f569SGerrit Uitslag
43*c931f569SGerrit Uitslag    /**
44*c931f569SGerrit Uitslag     * no nonexist.changes meta file available
45*c931f569SGerrit Uitslag     */
46*c931f569SGerrit Uitslag    function test_changemetadatanotexists() {
47*c931f569SGerrit Uitslag        $rev1 = 1362526767;
48*c931f569SGerrit Uitslag        $rev2 = 1362527164;
49*c931f569SGerrit Uitslag        $max = 50;
50*c931f569SGerrit Uitslag        $id = 'nonexist';
51*c931f569SGerrit Uitslag        $revsexpected = array(array(), array());
52*c931f569SGerrit Uitslag
53*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($id, $chunk_size = 8192);
54*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
55*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
56*c931f569SGerrit Uitslag    }
57*c931f569SGerrit Uitslag
58*c931f569SGerrit Uitslag    /**
59*c931f569SGerrit Uitslag     * Surrounding revisions of rev1 and rev2 overlaps
60*c931f569SGerrit Uitslag     */
61*c931f569SGerrit Uitslag    function test_request_overlapping() {
62*c931f569SGerrit Uitslag        $rev1 = 1362526767;
63*c931f569SGerrit Uitslag        $rev2 = 1362527164;
64*c931f569SGerrit Uitslag        $max = 10;
65*c931f569SGerrit Uitslag        $revsexpected = array(
66*c931f569SGerrit Uitslag            array_slice($this->revsexpected, 8, 11),
67*c931f569SGerrit Uitslag            array_slice($this->revsexpected, 5, 11)
68*c931f569SGerrit Uitslag        );
69*c931f569SGerrit Uitslag
70*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
71*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
72*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
73*c931f569SGerrit Uitslag
74*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
75*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
76*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
77*c931f569SGerrit Uitslag
78*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
79*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
80*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
81*c931f569SGerrit Uitslag    }
82*c931f569SGerrit Uitslag
83*c931f569SGerrit Uitslag    /**
84*c931f569SGerrit Uitslag     * Surrounding revisions of rev1 and rev2 don't overlap.
85*c931f569SGerrit Uitslag     */
86*c931f569SGerrit Uitslag    function test_request_non_overlapping() {
87*c931f569SGerrit Uitslag        $rev1 = 1362525899;
88*c931f569SGerrit Uitslag        $rev2 = 1368612599;
89*c931f569SGerrit Uitslag        $max = 10;
90*c931f569SGerrit Uitslag        $revsexpected = array(
91*c931f569SGerrit Uitslag            array_slice($this->revsexpected, 13, 11),
92*c931f569SGerrit Uitslag            array_slice($this->revsexpected, 0, 11)
93*c931f569SGerrit Uitslag        );
94*c931f569SGerrit Uitslag
95*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
96*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
97*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
98*c931f569SGerrit Uitslag
99*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
100*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
101*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
102*c931f569SGerrit Uitslag
103*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
104*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
105*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
106*c931f569SGerrit Uitslag    }
107*c931f569SGerrit Uitslag
108*c931f569SGerrit Uitslag    /**
109*c931f569SGerrit Uitslag     * rev1 and rev2 are at start and end of the changelog.
110*c931f569SGerrit Uitslag     * Should return still a number of revisions equal to max
111*c931f569SGerrit Uitslag     */
112*c931f569SGerrit Uitslag    function test_request_first_last() {
113*c931f569SGerrit Uitslag        $rev1 = 1360110636;
114*c931f569SGerrit Uitslag        $rev2 = 1374261194;
115*c931f569SGerrit Uitslag        $max = 10;
116*c931f569SGerrit Uitslag        $revsexpected = array(
117*c931f569SGerrit Uitslag            array_slice($this->revsexpected, 13, 11),
118*c931f569SGerrit Uitslag            array_slice($this->revsexpected, 0, 11)
119*c931f569SGerrit Uitslag        );
120*c931f569SGerrit Uitslag
121*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
122*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
123*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
124*c931f569SGerrit Uitslag
125*c931f569SGerrit Uitslag        //todo: number of revisions on the left side is not (yet) completed until max number
126*c931f569SGerrit Uitslag        $revsexpected = array(
127*c931f569SGerrit Uitslag            array_slice($this->revsexpected, 18, 6),
128*c931f569SGerrit Uitslag            array_slice($this->revsexpected, 0, 11)
129*c931f569SGerrit Uitslag        );
130*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
131*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
132*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
133*c931f569SGerrit Uitslag
134*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
135*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
136*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
137*c931f569SGerrit Uitslag    }
138*c931f569SGerrit Uitslag
139*c931f569SGerrit Uitslag
140*c931f569SGerrit Uitslag    /**
141*c931f569SGerrit Uitslag     * Number of requested revisions is larger than available revisions,
142*c931f569SGerrit Uitslag     * so returns whole log
143*c931f569SGerrit Uitslag     */
144*c931f569SGerrit Uitslag    function test_request_wholelog() {
145*c931f569SGerrit Uitslag        $rev1 = 1362525899;
146*c931f569SGerrit Uitslag        $rev2 = 1368612599;
147*c931f569SGerrit Uitslag        $max = 50;
148*c931f569SGerrit Uitslag        $revsexpected = array($this->revsexpected, $this->revsexpected);
149*c931f569SGerrit Uitslag
150*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
151*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
152*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
153*c931f569SGerrit Uitslag
154*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
155*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
156*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
157*c931f569SGerrit Uitslag
158*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
159*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
160*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
161*c931f569SGerrit Uitslag    }
162*c931f569SGerrit Uitslag
163*c931f569SGerrit Uitslag    /**
164*c931f569SGerrit Uitslag     * When rev1 > rev2, their order is changed
165*c931f569SGerrit Uitslag     */
166*c931f569SGerrit Uitslag    function test_request_wrong_order_revs() {
167*c931f569SGerrit Uitslag        $rev1 = 1362527164;
168*c931f569SGerrit Uitslag        $rev2 = 1362526767;
169*c931f569SGerrit Uitslag        $max = 10;
170*c931f569SGerrit Uitslag        $revsexpected = array(
171*c931f569SGerrit Uitslag            array_slice($this->revsexpected, 8, 11),
172*c931f569SGerrit Uitslag            array_slice($this->revsexpected, 5, 11)
173*c931f569SGerrit Uitslag        );
174*c931f569SGerrit Uitslag
175*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
176*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
177*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
178*c931f569SGerrit Uitslag
179*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
180*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
181*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
182*c931f569SGerrit Uitslag
183*c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
184*c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
185*c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
186*c931f569SGerrit Uitslag    }
187*c931f569SGerrit Uitslag
188*c931f569SGerrit Uitslag}