xref: /dokuwiki/_test/tests/inc/common_saveWikiText.test.php (revision aaf4f55e4a232b769d7b7901f63d2343f42eed8e)
1023953f0SAndreas Gohr<?php
2023953f0SAndreas Gohr
3023953f0SAndreas Gohrclass common_saveWikiText_test extends DokuWikiTest {
4023953f0SAndreas Gohr
5023953f0SAndreas Gohr    /**
6023953f0SAndreas Gohr     * Execute a whole bunch of saves on the same page and check the results
7023953f0SAndreas Gohr     */
8023953f0SAndreas Gohr    function test_savesequence() {
9023953f0SAndreas Gohr        global $REV;
10023953f0SAndreas Gohr
11023953f0SAndreas Gohr        $page = 'page';
12023953f0SAndreas Gohr        $file = wikiFN($page);
13023953f0SAndreas Gohr
14023953f0SAndreas Gohr        // create the page
15023953f0SAndreas Gohr        $this->assertFileNotExists($file);
16023953f0SAndreas Gohr        saveWikiText($page, 'teststring', 'first save', false);
17023953f0SAndreas Gohr        $this->assertFileExists($file);
18023953f0SAndreas Gohr        $lastmod = filemtime($file);
19023953f0SAndreas Gohr
20023953f0SAndreas Gohr        $pagelog = new PageChangeLog($page);
21023953f0SAndreas Gohr        $revisions = $pagelog->getRevisions(-1, 200);
22023953f0SAndreas Gohr        $this->assertEquals(1, count($revisions));
23023953f0SAndreas Gohr        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
24023953f0SAndreas Gohr        $this->assertEquals('first save', $revinfo['sum']);
25023953f0SAndreas Gohr        $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']);
264b5aebc1SGerrit Uitslag        $this->assertEquals(10, $revinfo['sizechange']);
27023953f0SAndreas Gohr
28*aaf4f55eSAndreas Gohr        $this->waitForTick(true); // wait for new revision ID
29023953f0SAndreas Gohr
30023953f0SAndreas Gohr        // save with same content should be ignored
31023953f0SAndreas Gohr        saveWikiText($page, 'teststring', 'second save', false);
32023953f0SAndreas Gohr        clearstatcache(false, $file);
33023953f0SAndreas Gohr        $this->assertEquals($lastmod, filemtime($file));
34023953f0SAndreas Gohr
35023953f0SAndreas Gohr        $pagelog = new PageChangeLog($page);
36023953f0SAndreas Gohr        $revisions = $pagelog->getRevisions(-1, 200);
37023953f0SAndreas Gohr        $this->assertEquals(1, count($revisions));
38023953f0SAndreas Gohr
39023953f0SAndreas Gohr        // update the page with new text
404b5aebc1SGerrit Uitslag        saveWikiText($page, 'teststring2long', 'third save', false);
41023953f0SAndreas Gohr        clearstatcache(false, $file);
42023953f0SAndreas Gohr        $newmod = filemtime($file);
43023953f0SAndreas Gohr        $this->assertNotEquals($lastmod, $newmod);
44023953f0SAndreas Gohr        $lastmod = $newmod;
45023953f0SAndreas Gohr
46023953f0SAndreas Gohr        $pagelog = new PageChangeLog($page);
47023953f0SAndreas Gohr        $revisions = $pagelog->getRevisions(-1, 200);
48023953f0SAndreas Gohr        $this->assertEquals(2, count($revisions));
49023953f0SAndreas Gohr        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
50023953f0SAndreas Gohr        $this->assertEquals('third save', $revinfo['sum']);
51023953f0SAndreas Gohr        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
524b5aebc1SGerrit Uitslag        $this->assertEquals(5, $revinfo['sizechange']);
53023953f0SAndreas Gohr
54*aaf4f55eSAndreas Gohr        $this->waitForTick(); // wait for new revision ID
55023953f0SAndreas Gohr
56023953f0SAndreas Gohr        // add a minor edit (unauthenticated)
574b5aebc1SGerrit Uitslag        saveWikiText($page, 'teststring3long', 'fourth save', true);
58023953f0SAndreas Gohr        clearstatcache(false, $file);
59023953f0SAndreas Gohr        $newmod = filemtime($file);
60023953f0SAndreas Gohr        $this->assertNotEquals($lastmod, $newmod);
61023953f0SAndreas Gohr        $lastmod = $newmod;
62023953f0SAndreas Gohr
63023953f0SAndreas Gohr        $pagelog = new PageChangeLog($page);
64023953f0SAndreas Gohr        $revisions = $pagelog->getRevisions(-1, 200);
65023953f0SAndreas Gohr        $this->assertEquals(3, count($revisions));
66023953f0SAndreas Gohr        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
67023953f0SAndreas Gohr        $this->assertEquals('fourth save', $revinfo['sum']);
68023953f0SAndreas Gohr        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
694b5aebc1SGerrit Uitslag        $this->assertEquals(0, $revinfo['sizechange']);
70023953f0SAndreas Gohr
71*aaf4f55eSAndreas Gohr        $this->waitForTick(); // wait for new revision ID
72023953f0SAndreas Gohr
73023953f0SAndreas Gohr        // add a minor edit (authenticated)
74023953f0SAndreas Gohr        $_SERVER['REMOTE_USER'] = 'user';
75023953f0SAndreas Gohr        saveWikiText($page, 'teststring4', 'fifth save', true);
76023953f0SAndreas Gohr        clearstatcache(false, $file);
77023953f0SAndreas Gohr        $newmod = filemtime($file);
78023953f0SAndreas Gohr        $this->assertNotEquals($lastmod, $newmod);
79023953f0SAndreas Gohr        $lastmod = $newmod;
80023953f0SAndreas Gohr
81023953f0SAndreas Gohr        $pagelog = new PageChangeLog($page);
82023953f0SAndreas Gohr        $revisions = $pagelog->getRevisions(-1, 200);
83023953f0SAndreas Gohr        $this->assertEquals(4, count($revisions));
84023953f0SAndreas Gohr        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
85023953f0SAndreas Gohr        $this->assertEquals('fifth save', $revinfo['sum']);
86023953f0SAndreas Gohr        $this->assertEquals(DOKU_CHANGE_TYPE_MINOR_EDIT, $revinfo['type']);
874b5aebc1SGerrit Uitslag        $this->assertEquals(-4, $revinfo['sizechange']);
88023953f0SAndreas Gohr
89*aaf4f55eSAndreas Gohr        $this->waitForTick(); // wait for new revision ID
90023953f0SAndreas Gohr
91023953f0SAndreas Gohr        // delete
92023953f0SAndreas Gohr        saveWikiText($page, '', 'sixth save', false);
93023953f0SAndreas Gohr        clearstatcache(false, $file);
94023953f0SAndreas Gohr        $this->assertFileNotExists($file);
95023953f0SAndreas Gohr
96023953f0SAndreas Gohr        $pagelog = new PageChangeLog($page);
97023953f0SAndreas Gohr        $revisions = $pagelog->getRevisions(-1, 200);
98023953f0SAndreas Gohr        $this->assertEquals(5, count($revisions));
99023953f0SAndreas Gohr        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
100023953f0SAndreas Gohr        $this->assertEquals('sixth save', $revinfo['sum']);
101023953f0SAndreas Gohr        $this->assertEquals(DOKU_CHANGE_TYPE_DELETE, $revinfo['type']);
1024b5aebc1SGerrit Uitslag        $this->assertEquals(-11, $revinfo['sizechange']);
103023953f0SAndreas Gohr
104*aaf4f55eSAndreas Gohr        $this->waitForTick(); // wait for new revision ID
105023953f0SAndreas Gohr
106023953f0SAndreas Gohr        // restore
107023953f0SAndreas Gohr        $REV = $lastmod;
108023953f0SAndreas Gohr        saveWikiText($page, 'teststring4', 'seventh save', true);
109023953f0SAndreas Gohr        clearstatcache(false, $file);
110023953f0SAndreas Gohr        $this->assertFileExists($file);
111023953f0SAndreas Gohr        $newmod = filemtime($file);
112023953f0SAndreas Gohr        $this->assertNotEquals($lastmod, $newmod);
113023953f0SAndreas Gohr        $lastmod = $newmod;
114023953f0SAndreas Gohr
115023953f0SAndreas Gohr        $pagelog = new PageChangeLog($page);
116023953f0SAndreas Gohr        $revisions = $pagelog->getRevisions(-1, 200);
117023953f0SAndreas Gohr        $this->assertEquals(6, count($revisions));
118023953f0SAndreas Gohr        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
119023953f0SAndreas Gohr        $this->assertEquals('seventh save', $revinfo['sum']);
120023953f0SAndreas Gohr        $this->assertEquals(DOKU_CHANGE_TYPE_REVERT, $revinfo['type']);
121023953f0SAndreas Gohr        $this->assertEquals($REV, $revinfo['extra']);
1224b5aebc1SGerrit Uitslag        $this->assertEquals(11, $revinfo['sizechange']);
123023953f0SAndreas Gohr        $REV = '';
124023953f0SAndreas Gohr
125*aaf4f55eSAndreas Gohr        $this->waitForTick(); // wait for new revision ID
126023953f0SAndreas Gohr
127023953f0SAndreas Gohr        // create external edit
128023953f0SAndreas Gohr        file_put_contents($file, 'teststring5');
129023953f0SAndreas Gohr
130*aaf4f55eSAndreas Gohr        $this->waitForTick(); // wait for new revision ID
131023953f0SAndreas Gohr
132023953f0SAndreas Gohr        // save on top of external edit
133023953f0SAndreas Gohr        saveWikiText($page, 'teststring6', 'eigth save', false);
134023953f0SAndreas Gohr        clearstatcache(false, $file);
135023953f0SAndreas Gohr        $newmod = filemtime($file);
136023953f0SAndreas Gohr        $this->assertNotEquals($lastmod, $newmod);
137023953f0SAndreas Gohr        $lastmod = $newmod;
138023953f0SAndreas Gohr
139023953f0SAndreas Gohr        $pagelog = new PageChangeLog($page);
140023953f0SAndreas Gohr        $revisions = $pagelog->getRevisions(-1, 200);
141023953f0SAndreas Gohr        $this->assertEquals(8, count($revisions)); // two more revisions now!
142023953f0SAndreas Gohr        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
143023953f0SAndreas Gohr        $this->assertEquals('eigth save', $revinfo['sum']);
144023953f0SAndreas Gohr        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
1454b5aebc1SGerrit Uitslag        $this->assertEquals(0, $revinfo['sizechange']);
146023953f0SAndreas Gohr
147023953f0SAndreas Gohr        $revinfo = $pagelog->getRevisionInfo($revisions[1]);
148023953f0SAndreas Gohr        $this->assertEquals('external edit', $revinfo['sum']);
149023953f0SAndreas Gohr        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
1504b5aebc1SGerrit Uitslag        $this->assertEquals(0, $revinfo['sizechange']);
151023953f0SAndreas Gohr
152023953f0SAndreas Gohr    }
1536072486dSGerrit Uitslag
1546072486dSGerrit Uitslag    /**
1556072486dSGerrit Uitslag     * Execute a whole bunch of saves on the same page and check the results
1566072486dSGerrit Uitslag     */
1576072486dSGerrit Uitslag    function test_savesequencedeleteexternalrevision() {
1586072486dSGerrit Uitslag        $page = 'page2';
1596072486dSGerrit Uitslag        $file = wikiFN($page);
1606072486dSGerrit Uitslag
1616072486dSGerrit Uitslag        // create the page
1626072486dSGerrit Uitslag        $this->assertFileNotExists($file);
1636072486dSGerrit Uitslag        saveWikiText($page, 'teststring', 'first save', false);
1646072486dSGerrit Uitslag        $this->assertFileExists($file);
1656072486dSGerrit Uitslag        $lastmod = filemtime($file);
1666072486dSGerrit Uitslag
1676072486dSGerrit Uitslag        $pagelog = new PageChangeLog($page);
1686072486dSGerrit Uitslag        $revisions = $pagelog->getRevisions(-1, 200);
1696072486dSGerrit Uitslag        $this->assertEquals(1, count($revisions));
1706072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
1716072486dSGerrit Uitslag        $this->assertEquals('first save', $revinfo['sum']);
1726072486dSGerrit Uitslag        $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']);
1736072486dSGerrit Uitslag        $this->assertEquals(10, $revinfo['sizechange']);
1746072486dSGerrit Uitslag
175*aaf4f55eSAndreas Gohr        $this->waitForTick(true); // wait for new revision ID
1766072486dSGerrit Uitslag
1776072486dSGerrit Uitslag        // delete
1786072486dSGerrit Uitslag        saveWikiText($page, '', 'second save', false);
1796072486dSGerrit Uitslag        clearstatcache(false, $file);
1806072486dSGerrit Uitslag        $this->assertFileNotExists($file);
1816072486dSGerrit Uitslag
1826072486dSGerrit Uitslag        $pagelog = new PageChangeLog($page);
1836072486dSGerrit Uitslag        $revisions = $pagelog->getRevisions(-1, 200);
1846072486dSGerrit Uitslag        $this->assertEquals(2, count($revisions));
1856072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
1866072486dSGerrit Uitslag        $this->assertEquals('second save', $revinfo['sum']);
1876072486dSGerrit Uitslag        $this->assertEquals(DOKU_CHANGE_TYPE_DELETE, $revinfo['type']);
1886072486dSGerrit Uitslag        $this->assertEquals(-10, $revinfo['sizechange']);
1896072486dSGerrit Uitslag
190*aaf4f55eSAndreas Gohr        $this->waitForTick(); // wait for new revision ID
1916072486dSGerrit Uitslag
1926072486dSGerrit Uitslag        // create external edit
1936072486dSGerrit Uitslag        file_put_contents($file, 'teststring5');
1946072486dSGerrit Uitslag
195*aaf4f55eSAndreas Gohr        $this->waitForTick(); // wait for new revision ID
1966072486dSGerrit Uitslag
1976072486dSGerrit Uitslag        // save on top of external edit
1986072486dSGerrit Uitslag        saveWikiText($page, 'teststring6', 'third save', false);
1996072486dSGerrit Uitslag        clearstatcache(false, $file);
2006072486dSGerrit Uitslag
2016072486dSGerrit Uitslag        $pagelog = new PageChangeLog($page);
2026072486dSGerrit Uitslag        $revisions = $pagelog->getRevisions(-1, 200);
2036072486dSGerrit Uitslag        $this->assertEquals(4, count($revisions)); // two more revisions now!
2046072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
2056072486dSGerrit Uitslag        $this->assertEquals('third save', $revinfo['sum']);
2066072486dSGerrit Uitslag        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
2076072486dSGerrit Uitslag        $this->assertEquals(0, $revinfo['sizechange']);
2086072486dSGerrit Uitslag
2096072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[1]);
2106072486dSGerrit Uitslag        $this->assertEquals('external edit', $revinfo['sum']);
2116072486dSGerrit Uitslag        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
2126072486dSGerrit Uitslag        $this->assertEquals(11, $revinfo['sizechange']);
2136072486dSGerrit Uitslag
2146072486dSGerrit Uitslag    }
2156072486dSGerrit Uitslag
2166072486dSGerrit Uitslag    /**
2176072486dSGerrit Uitslag     * Execute a whole bunch of saves on the same page and check the results
2186072486dSGerrit Uitslag     */
2196072486dSGerrit Uitslag    function test_saveexternalasfirst() {
2206072486dSGerrit Uitslag        $page = 'page3';
2216072486dSGerrit Uitslag        $file = wikiFN($page);
2226072486dSGerrit Uitslag
2236072486dSGerrit Uitslag        // create the page
2246072486dSGerrit Uitslag        $this->assertFileNotExists($file);
2256072486dSGerrit Uitslag
2266072486dSGerrit Uitslag        // create external edit
2276072486dSGerrit Uitslag        file_put_contents($file, 'teststring');
2286072486dSGerrit Uitslag
229*aaf4f55eSAndreas Gohr        $this->waitForTick(true); // wait for new revision ID
2306072486dSGerrit Uitslag
2316072486dSGerrit Uitslag        // save on top of external edit
2326072486dSGerrit Uitslag        saveWikiText($page, 'teststring6', 'first save', false);
2336072486dSGerrit Uitslag        clearstatcache(false, $file);
2346072486dSGerrit Uitslag
2356072486dSGerrit Uitslag        $pagelog = new PageChangeLog($page);
2366072486dSGerrit Uitslag        $revisions = $pagelog->getRevisions(-1, 200);
2376072486dSGerrit Uitslag        $this->assertEquals(2, count($revisions)); // two more revisions now!
2386072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
2396072486dSGerrit Uitslag        $this->assertEquals('first save', $revinfo['sum']);
2406072486dSGerrit Uitslag        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
2416072486dSGerrit Uitslag        $this->assertEquals(1, $revinfo['sizechange']);
2426072486dSGerrit Uitslag
2436072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[1]);
2446072486dSGerrit Uitslag        $this->assertEquals('external edit', $revinfo['sum']);
2456072486dSGerrit Uitslag        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
2466072486dSGerrit Uitslag        $this->assertEquals(10, $revinfo['sizechange']);
2476072486dSGerrit Uitslag
2486072486dSGerrit Uitslag    }
2496072486dSGerrit Uitslag
2506072486dSGerrit Uitslag    /**
2516072486dSGerrit Uitslag     * Execute a whole bunch of saves on the same page and check the results
2526072486dSGerrit Uitslag     */
2536072486dSGerrit Uitslag    function test_savesequenceexternaldeleteedit() {
2546072486dSGerrit Uitslag        $page = 'page4';
2556072486dSGerrit Uitslag        $file = wikiFN($page);
2566072486dSGerrit Uitslag
2576072486dSGerrit Uitslag        // create the page
2586072486dSGerrit Uitslag        $this->assertFileNotExists($file);
2596072486dSGerrit Uitslag        saveWikiText($page, 'teststring', 'first save', false);
2606072486dSGerrit Uitslag        $this->assertFileExists($file);
2616072486dSGerrit Uitslag        $lastmod = filemtime($file);
2626072486dSGerrit Uitslag
2636072486dSGerrit Uitslag        $pagelog = new PageChangeLog($page);
2646072486dSGerrit Uitslag        $revisions = $pagelog->getRevisions(-1, 200);
2656072486dSGerrit Uitslag        $this->assertEquals(1, count($revisions));
2666072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
2676072486dSGerrit Uitslag        $this->assertEquals('first save', $revinfo['sum']);
2686072486dSGerrit Uitslag        $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']);
2696072486dSGerrit Uitslag        $this->assertEquals(10, $revinfo['sizechange']);
2706072486dSGerrit Uitslag
271*aaf4f55eSAndreas Gohr        $this->waitForTick(true); // wait for new revision ID
2726072486dSGerrit Uitslag
2736072486dSGerrit Uitslag
2746072486dSGerrit Uitslag        // create external delete
2756072486dSGerrit Uitslag        unlink($file);
2766072486dSGerrit Uitslag        clearstatcache(false, $file);
2776072486dSGerrit Uitslag
278*aaf4f55eSAndreas Gohr        $this->waitForTick(); // wait for new revision ID
2796072486dSGerrit Uitslag
2806072486dSGerrit Uitslag        // save on top of external delete. save is seen as creation
2816072486dSGerrit Uitslag        saveWikiText($page, 'teststring6', 'second save', false);
2826072486dSGerrit Uitslag        clearstatcache(false, $file);
2836072486dSGerrit Uitslag
2846072486dSGerrit Uitslag        $pagelog = new PageChangeLog($page);
2856072486dSGerrit Uitslag        $revisions = $pagelog->getRevisions(-1, 200);
2866072486dSGerrit Uitslag        $this->assertEquals(2, count($revisions)); // one more revisions now!
2876072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
2886072486dSGerrit Uitslag        $this->assertEquals('second save', $revinfo['sum']);
2896072486dSGerrit Uitslag        $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']);
2906072486dSGerrit Uitslag        $this->assertEquals(11, $revinfo['sizechange']);
2916072486dSGerrit Uitslag
2926072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[1]);
2936072486dSGerrit Uitslag        $this->assertEquals('first save', $revinfo['sum']);
2946072486dSGerrit Uitslag
2956072486dSGerrit Uitslag    }
2966072486dSGerrit Uitslag
2976072486dSGerrit Uitslag    /**
2986072486dSGerrit Uitslag     * Execute a whole bunch of saves on the same page and check the results
2996072486dSGerrit Uitslag     */
3006072486dSGerrit Uitslag    function test_savesequencerevert() {
3016072486dSGerrit Uitslag        global $REV;
3026072486dSGerrit Uitslag
3036072486dSGerrit Uitslag        $page = 'page5';
3046072486dSGerrit Uitslag        $file = wikiFN($page);
3056072486dSGerrit Uitslag
3066072486dSGerrit Uitslag        // create the page
3076072486dSGerrit Uitslag        $this->assertFileNotExists($file);
3086072486dSGerrit Uitslag        saveWikiText($page, 'teststring', 'first save', false);
3096072486dSGerrit Uitslag        $this->assertFileExists($file);
3106072486dSGerrit Uitslag        $lastmod = filemtime($file);
3116072486dSGerrit Uitslag
3126072486dSGerrit Uitslag        $pagelog = new PageChangeLog($page);
3136072486dSGerrit Uitslag        $revisions = $pagelog->getRevisions(-1, 200);
3146072486dSGerrit Uitslag        $this->assertEquals(1, count($revisions));
3156072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
3166072486dSGerrit Uitslag        $this->assertEquals('first save', $revinfo['sum']);
3176072486dSGerrit Uitslag        $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']);
3186072486dSGerrit Uitslag        $this->assertEquals(10, $revinfo['sizechange']);
3196072486dSGerrit Uitslag
320*aaf4f55eSAndreas Gohr        $this->waitForTick(true); // wait for new revision ID
3216072486dSGerrit Uitslag
3226072486dSGerrit Uitslag        // save with same content should be ignored
3236072486dSGerrit Uitslag        saveWikiText($page, 'teststring', 'second save', false);
3246072486dSGerrit Uitslag        clearstatcache(false, $file);
3256072486dSGerrit Uitslag        $this->assertEquals($lastmod, filemtime($file));
3266072486dSGerrit Uitslag
3276072486dSGerrit Uitslag        $pagelog = new PageChangeLog($page);
3286072486dSGerrit Uitslag        $revisions = $pagelog->getRevisions(-1, 200);
3296072486dSGerrit Uitslag        $this->assertEquals(1, count($revisions));
3306072486dSGerrit Uitslag
3316072486dSGerrit Uitslag        // update the page with new text
3326072486dSGerrit Uitslag        saveWikiText($page, 'teststring2long', 'third save', false);
3336072486dSGerrit Uitslag        clearstatcache(false, $file);
3346072486dSGerrit Uitslag        $newmod = filemtime($file);
3356072486dSGerrit Uitslag        $this->assertNotEquals($lastmod, $newmod);
3366072486dSGerrit Uitslag        $lastmod = $newmod;
3376072486dSGerrit Uitslag        $revertrev = $newmod;
3386072486dSGerrit Uitslag
3396072486dSGerrit Uitslag        $pagelog = new PageChangeLog($page);
3406072486dSGerrit Uitslag        $revisions = $pagelog->getRevisions(-1, 200);
3416072486dSGerrit Uitslag        $this->assertEquals(2, count($revisions));
3426072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
3436072486dSGerrit Uitslag        $this->assertEquals('third save', $revinfo['sum']);
3446072486dSGerrit Uitslag        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
3456072486dSGerrit Uitslag        $this->assertEquals(5, $revinfo['sizechange']);
3466072486dSGerrit Uitslag
347*aaf4f55eSAndreas Gohr        $this->waitForTick(); // wait for new revision ID
3486072486dSGerrit Uitslag
3496072486dSGerrit Uitslag        // add a minor edit (unauthenticated)
3506072486dSGerrit Uitslag        saveWikiText($page, 'teststring3long', 'fourth save', true);
3516072486dSGerrit Uitslag        clearstatcache(false, $file);
3526072486dSGerrit Uitslag        $newmod = filemtime($file);
3536072486dSGerrit Uitslag        $this->assertNotEquals($lastmod, $newmod);
3546072486dSGerrit Uitslag        $lastmod = $newmod;
3556072486dSGerrit Uitslag
3566072486dSGerrit Uitslag        $pagelog = new PageChangeLog($page);
3576072486dSGerrit Uitslag        $revisions = $pagelog->getRevisions(-1, 200);
3586072486dSGerrit Uitslag        $this->assertEquals(3, count($revisions));
3596072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
3606072486dSGerrit Uitslag        $this->assertEquals('fourth save', $revinfo['sum']);
3616072486dSGerrit Uitslag        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
3626072486dSGerrit Uitslag        $this->assertEquals(0, $revinfo['sizechange']);
3636072486dSGerrit Uitslag
364*aaf4f55eSAndreas Gohr        $this->waitForTick(); // wait for new revision ID
3656072486dSGerrit Uitslag
3666072486dSGerrit Uitslag        // add a minor edit (authenticated)
3676072486dSGerrit Uitslag        $_SERVER['REMOTE_USER'] = 'user';
3686072486dSGerrit Uitslag        saveWikiText($page, 'teststring4', 'fifth save', true);
3696072486dSGerrit Uitslag        clearstatcache(false, $file);
3706072486dSGerrit Uitslag        $newmod = filemtime($file);
3716072486dSGerrit Uitslag        $this->assertNotEquals($lastmod, $newmod);
3726072486dSGerrit Uitslag        $lastmod = $newmod;
3736072486dSGerrit Uitslag
3746072486dSGerrit Uitslag        $pagelog = new PageChangeLog($page);
3756072486dSGerrit Uitslag        $revisions = $pagelog->getRevisions(-1, 200);
3766072486dSGerrit Uitslag        $this->assertEquals(4, count($revisions));
3776072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
3786072486dSGerrit Uitslag        $this->assertEquals('fifth save', $revinfo['sum']);
3796072486dSGerrit Uitslag        $this->assertEquals(DOKU_CHANGE_TYPE_MINOR_EDIT, $revinfo['type']);
3806072486dSGerrit Uitslag        $this->assertEquals(-4, $revinfo['sizechange']);
3816072486dSGerrit Uitslag
382*aaf4f55eSAndreas Gohr        $this->waitForTick(); // wait for new revision ID
3836072486dSGerrit Uitslag
3846072486dSGerrit Uitslag        // restore
3856072486dSGerrit Uitslag        $REV = $revertrev;
3866072486dSGerrit Uitslag        saveWikiText($page, 'teststring2long', 'sixth save', true);
3876072486dSGerrit Uitslag        clearstatcache(false, $file);
3886072486dSGerrit Uitslag        $this->assertFileExists($file);
3896072486dSGerrit Uitslag        $newmod = filemtime($file);
3906072486dSGerrit Uitslag        $this->assertNotEquals($lastmod, $newmod);
3916072486dSGerrit Uitslag
3926072486dSGerrit Uitslag        $pagelog = new PageChangeLog($page);
3936072486dSGerrit Uitslag        $revisions = $pagelog->getRevisions(-1, 200);
3946072486dSGerrit Uitslag        $this->assertEquals(5, count($revisions));
3956072486dSGerrit Uitslag        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
3966072486dSGerrit Uitslag        $this->assertEquals('sixth save', $revinfo['sum']);
3976072486dSGerrit Uitslag        $this->assertEquals(DOKU_CHANGE_TYPE_REVERT, $revinfo['type']);
3986072486dSGerrit Uitslag        $this->assertEquals($REV, $revinfo['extra']);
3996072486dSGerrit Uitslag        $this->assertEquals(4, $revinfo['sizechange']);
4006072486dSGerrit Uitslag        $REV = '';
4016072486dSGerrit Uitslag    }
4026072486dSGerrit Uitslag
403023953f0SAndreas Gohr}
404