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