xref: /dokuwiki/_test/tests/inc/changelog_getRevisionsAround.test.php (revision fb285245a7e0188369a3e6cc179ed20795bd3799)
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
341c33cec3SAndreas Gohr    function setup() : void {
35c931f569SGerrit Uitslag        parent::setup();
36c931f569SGerrit Uitslag        global $cache_revinfo;
37c931f569SGerrit Uitslag        $cache =& $cache_revinfo;
38c931f569SGerrit Uitslag        unset($cache['nonexist']);
39c931f569SGerrit Uitslag        unset($cache['mailinglist']);
40*fb285245SSatoshi Sahara        // fix filemtime of page source
41*fb285245SSatoshi Sahara        touch(wikiFN($this->pageid), $this->revsexpected[0]);
42c931f569SGerrit Uitslag    }
43c931f569SGerrit Uitslag
44c931f569SGerrit Uitslag    /**
45c931f569SGerrit Uitslag     * no nonexist.changes meta file available
46c931f569SGerrit Uitslag     */
47c931f569SGerrit Uitslag    function test_changemetadatanotexists() {
48c931f569SGerrit Uitslag        $rev1 = 1362526767;
49c931f569SGerrit Uitslag        $rev2 = 1362527164;
50c931f569SGerrit Uitslag        $max = 50;
51c931f569SGerrit Uitslag        $id = 'nonexist';
52c931f569SGerrit Uitslag        $revsexpected = array(array(), array());
53c931f569SGerrit Uitslag
54c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($id, $chunk_size = 8192);
55c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
56c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
57c931f569SGerrit Uitslag    }
58c931f569SGerrit Uitslag
59c931f569SGerrit Uitslag    /**
60c931f569SGerrit Uitslag     * Surrounding revisions of rev1 and rev2 overlaps
61c931f569SGerrit Uitslag     */
62c931f569SGerrit Uitslag    function test_request_overlapping() {
63c931f569SGerrit Uitslag        $rev1 = 1362526767;
64c931f569SGerrit Uitslag        $rev2 = 1362527164;
65c931f569SGerrit Uitslag        $max = 10;
66c931f569SGerrit Uitslag        $revsexpected = array(
67c931f569SGerrit Uitslag            array_slice($this->revsexpected, 8, 11),
68c931f569SGerrit Uitslag            array_slice($this->revsexpected, 5, 11)
69c931f569SGerrit Uitslag        );
70c931f569SGerrit Uitslag
71c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
72c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
73c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
74c931f569SGerrit Uitslag
75c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
76c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
77c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
78c931f569SGerrit Uitslag
79c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
80c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
81c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
82c931f569SGerrit Uitslag    }
83c931f569SGerrit Uitslag
84c931f569SGerrit Uitslag    /**
85c931f569SGerrit Uitslag     * Surrounding revisions of rev1 and rev2 don't overlap.
86c931f569SGerrit Uitslag     */
87c931f569SGerrit Uitslag    function test_request_non_overlapping() {
88c931f569SGerrit Uitslag        $rev1 = 1362525899;
89c931f569SGerrit Uitslag        $rev2 = 1368612599;
90c931f569SGerrit Uitslag        $max = 10;
91c931f569SGerrit Uitslag        $revsexpected = array(
92c931f569SGerrit Uitslag            array_slice($this->revsexpected, 13, 11),
93c931f569SGerrit Uitslag            array_slice($this->revsexpected, 0, 11)
94c931f569SGerrit Uitslag        );
95c931f569SGerrit Uitslag
96c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
97c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
98c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
99c931f569SGerrit Uitslag
100c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
101c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
102c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
103c931f569SGerrit Uitslag
104c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
105c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
106c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
107c931f569SGerrit Uitslag    }
108c931f569SGerrit Uitslag
109c931f569SGerrit Uitslag    /**
110c931f569SGerrit Uitslag     * rev1 and rev2 are at start and end of the changelog.
111c931f569SGerrit Uitslag     * Should return still a number of revisions equal to max
112c931f569SGerrit Uitslag     */
113c931f569SGerrit Uitslag    function test_request_first_last() {
114c931f569SGerrit Uitslag        $rev1 = 1360110636;
115c931f569SGerrit Uitslag        $rev2 = 1374261194;
116c931f569SGerrit Uitslag        $max = 10;
117c931f569SGerrit Uitslag        $revsexpected = array(
118c931f569SGerrit Uitslag            array_slice($this->revsexpected, 13, 11),
119c931f569SGerrit Uitslag            array_slice($this->revsexpected, 0, 11)
120c931f569SGerrit Uitslag        );
121c931f569SGerrit Uitslag
122c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
123c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
124c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
125c931f569SGerrit Uitslag
126c931f569SGerrit Uitslag        //todo: number of revisions on the left side is not (yet) completed until max number
127c931f569SGerrit Uitslag        $revsexpected = array(
128c931f569SGerrit Uitslag            array_slice($this->revsexpected, 18, 6),
129c931f569SGerrit Uitslag            array_slice($this->revsexpected, 0, 11)
130c931f569SGerrit Uitslag        );
131c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
132c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
133c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
134c931f569SGerrit Uitslag
135c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
136c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
137c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
138c931f569SGerrit Uitslag    }
139c931f569SGerrit Uitslag
140c931f569SGerrit Uitslag
141c931f569SGerrit Uitslag    /**
142c931f569SGerrit Uitslag     * Number of requested revisions is larger than available revisions,
143c931f569SGerrit Uitslag     * so returns whole log
144c931f569SGerrit Uitslag     */
145c931f569SGerrit Uitslag    function test_request_wholelog() {
146c931f569SGerrit Uitslag        $rev1 = 1362525899;
147c931f569SGerrit Uitslag        $rev2 = 1368612599;
148c931f569SGerrit Uitslag        $max = 50;
149c931f569SGerrit Uitslag        $revsexpected = array($this->revsexpected, $this->revsexpected);
150c931f569SGerrit Uitslag
151c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
152c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
153c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
154c931f569SGerrit Uitslag
155c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
156c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
157c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
158c931f569SGerrit Uitslag
159c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
160c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
161c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
162c931f569SGerrit Uitslag    }
163c931f569SGerrit Uitslag
164c931f569SGerrit Uitslag    /**
165c931f569SGerrit Uitslag     * When rev1 > rev2, their order is changed
166c931f569SGerrit Uitslag     */
167c931f569SGerrit Uitslag    function test_request_wrong_order_revs() {
168c931f569SGerrit Uitslag        $rev1 = 1362527164;
169c931f569SGerrit Uitslag        $rev2 = 1362526767;
170c931f569SGerrit Uitslag        $max = 10;
171c931f569SGerrit Uitslag        $revsexpected = array(
172c931f569SGerrit Uitslag            array_slice($this->revsexpected, 8, 11),
173c931f569SGerrit Uitslag            array_slice($this->revsexpected, 5, 11)
174c931f569SGerrit Uitslag        );
175c931f569SGerrit Uitslag
176c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
177c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
178c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
179c931f569SGerrit Uitslag
180c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
181c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
182c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
183c931f569SGerrit Uitslag
184c931f569SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
185c931f569SGerrit Uitslag        $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
186c931f569SGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
187c931f569SGerrit Uitslag    }
188c931f569SGerrit Uitslag
189c931f569SGerrit Uitslag}
190