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 28023953f0SAndreas Gohr sleep(1); // 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 54023953f0SAndreas Gohr sleep(1); // 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 71023953f0SAndreas Gohr sleep(1); // 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 89023953f0SAndreas Gohr sleep(1); // 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 104023953f0SAndreas Gohr sleep(1); // 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 125023953f0SAndreas Gohr sleep(1); // wait for new revision ID 126023953f0SAndreas Gohr 127023953f0SAndreas Gohr // create external edit 128023953f0SAndreas Gohr file_put_contents($file, 'teststring5'); 129023953f0SAndreas Gohr 130023953f0SAndreas Gohr sleep(1); // 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 } 153*6072486dSGerrit Uitslag 154*6072486dSGerrit Uitslag /** 155*6072486dSGerrit Uitslag * Execute a whole bunch of saves on the same page and check the results 156*6072486dSGerrit Uitslag */ 157*6072486dSGerrit Uitslag function test_savesequencedeleteexternalrevision() { 158*6072486dSGerrit Uitslag $page = 'page2'; 159*6072486dSGerrit Uitslag $file = wikiFN($page); 160*6072486dSGerrit Uitslag 161*6072486dSGerrit Uitslag // create the page 162*6072486dSGerrit Uitslag $this->assertFileNotExists($file); 163*6072486dSGerrit Uitslag saveWikiText($page, 'teststring', 'first save', false); 164*6072486dSGerrit Uitslag $this->assertFileExists($file); 165*6072486dSGerrit Uitslag $lastmod = filemtime($file); 166*6072486dSGerrit Uitslag 167*6072486dSGerrit Uitslag $pagelog = new PageChangeLog($page); 168*6072486dSGerrit Uitslag $revisions = $pagelog->getRevisions(-1, 200); 169*6072486dSGerrit Uitslag $this->assertEquals(1, count($revisions)); 170*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[0]); 171*6072486dSGerrit Uitslag $this->assertEquals('first save', $revinfo['sum']); 172*6072486dSGerrit Uitslag $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']); 173*6072486dSGerrit Uitslag $this->assertEquals(10, $revinfo['sizechange']); 174*6072486dSGerrit Uitslag 175*6072486dSGerrit Uitslag sleep(1); // wait for new revision ID 176*6072486dSGerrit Uitslag 177*6072486dSGerrit Uitslag // delete 178*6072486dSGerrit Uitslag saveWikiText($page, '', 'second save', false); 179*6072486dSGerrit Uitslag clearstatcache(false, $file); 180*6072486dSGerrit Uitslag $this->assertFileNotExists($file); 181*6072486dSGerrit Uitslag 182*6072486dSGerrit Uitslag $pagelog = new PageChangeLog($page); 183*6072486dSGerrit Uitslag $revisions = $pagelog->getRevisions(-1, 200); 184*6072486dSGerrit Uitslag $this->assertEquals(2, count($revisions)); 185*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[0]); 186*6072486dSGerrit Uitslag $this->assertEquals('second save', $revinfo['sum']); 187*6072486dSGerrit Uitslag $this->assertEquals(DOKU_CHANGE_TYPE_DELETE, $revinfo['type']); 188*6072486dSGerrit Uitslag $this->assertEquals(-10, $revinfo['sizechange']); 189*6072486dSGerrit Uitslag 190*6072486dSGerrit Uitslag sleep(1); // wait for new revision ID 191*6072486dSGerrit Uitslag 192*6072486dSGerrit Uitslag // create external edit 193*6072486dSGerrit Uitslag file_put_contents($file, 'teststring5'); 194*6072486dSGerrit Uitslag 195*6072486dSGerrit Uitslag sleep(1); // wait for new revision ID 196*6072486dSGerrit Uitslag 197*6072486dSGerrit Uitslag // save on top of external edit 198*6072486dSGerrit Uitslag saveWikiText($page, 'teststring6', 'third save', false); 199*6072486dSGerrit Uitslag clearstatcache(false, $file); 200*6072486dSGerrit Uitslag 201*6072486dSGerrit Uitslag $pagelog = new PageChangeLog($page); 202*6072486dSGerrit Uitslag $revisions = $pagelog->getRevisions(-1, 200); 203*6072486dSGerrit Uitslag $this->assertEquals(4, count($revisions)); // two more revisions now! 204*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[0]); 205*6072486dSGerrit Uitslag $this->assertEquals('third save', $revinfo['sum']); 206*6072486dSGerrit Uitslag $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']); 207*6072486dSGerrit Uitslag $this->assertEquals(0, $revinfo['sizechange']); 208*6072486dSGerrit Uitslag 209*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[1]); 210*6072486dSGerrit Uitslag $this->assertEquals('external edit', $revinfo['sum']); 211*6072486dSGerrit Uitslag $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']); 212*6072486dSGerrit Uitslag $this->assertEquals(11, $revinfo['sizechange']); 213*6072486dSGerrit Uitslag 214*6072486dSGerrit Uitslag } 215*6072486dSGerrit Uitslag 216*6072486dSGerrit Uitslag /** 217*6072486dSGerrit Uitslag * Execute a whole bunch of saves on the same page and check the results 218*6072486dSGerrit Uitslag */ 219*6072486dSGerrit Uitslag function test_saveexternalasfirst() { 220*6072486dSGerrit Uitslag $page = 'page3'; 221*6072486dSGerrit Uitslag $file = wikiFN($page); 222*6072486dSGerrit Uitslag 223*6072486dSGerrit Uitslag // create the page 224*6072486dSGerrit Uitslag $this->assertFileNotExists($file); 225*6072486dSGerrit Uitslag 226*6072486dSGerrit Uitslag // create external edit 227*6072486dSGerrit Uitslag file_put_contents($file, 'teststring'); 228*6072486dSGerrit Uitslag 229*6072486dSGerrit Uitslag sleep(1); // wait for new revision ID 230*6072486dSGerrit Uitslag 231*6072486dSGerrit Uitslag // save on top of external edit 232*6072486dSGerrit Uitslag saveWikiText($page, 'teststring6', 'first save', false); 233*6072486dSGerrit Uitslag clearstatcache(false, $file); 234*6072486dSGerrit Uitslag 235*6072486dSGerrit Uitslag $pagelog = new PageChangeLog($page); 236*6072486dSGerrit Uitslag $revisions = $pagelog->getRevisions(-1, 200); 237*6072486dSGerrit Uitslag $this->assertEquals(2, count($revisions)); // two more revisions now! 238*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[0]); 239*6072486dSGerrit Uitslag $this->assertEquals('first save', $revinfo['sum']); 240*6072486dSGerrit Uitslag $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']); 241*6072486dSGerrit Uitslag $this->assertEquals(1, $revinfo['sizechange']); 242*6072486dSGerrit Uitslag 243*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[1]); 244*6072486dSGerrit Uitslag $this->assertEquals('external edit', $revinfo['sum']); 245*6072486dSGerrit Uitslag $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']); 246*6072486dSGerrit Uitslag $this->assertEquals(10, $revinfo['sizechange']); 247*6072486dSGerrit Uitslag 248*6072486dSGerrit Uitslag } 249*6072486dSGerrit Uitslag 250*6072486dSGerrit Uitslag /** 251*6072486dSGerrit Uitslag * Execute a whole bunch of saves on the same page and check the results 252*6072486dSGerrit Uitslag */ 253*6072486dSGerrit Uitslag function test_savesequenceexternaldeleteedit() { 254*6072486dSGerrit Uitslag $page = 'page4'; 255*6072486dSGerrit Uitslag $file = wikiFN($page); 256*6072486dSGerrit Uitslag 257*6072486dSGerrit Uitslag // create the page 258*6072486dSGerrit Uitslag $this->assertFileNotExists($file); 259*6072486dSGerrit Uitslag saveWikiText($page, 'teststring', 'first save', false); 260*6072486dSGerrit Uitslag $this->assertFileExists($file); 261*6072486dSGerrit Uitslag $lastmod = filemtime($file); 262*6072486dSGerrit Uitslag 263*6072486dSGerrit Uitslag $pagelog = new PageChangeLog($page); 264*6072486dSGerrit Uitslag $revisions = $pagelog->getRevisions(-1, 200); 265*6072486dSGerrit Uitslag $this->assertEquals(1, count($revisions)); 266*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[0]); 267*6072486dSGerrit Uitslag $this->assertEquals('first save', $revinfo['sum']); 268*6072486dSGerrit Uitslag $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']); 269*6072486dSGerrit Uitslag $this->assertEquals(10, $revinfo['sizechange']); 270*6072486dSGerrit Uitslag 271*6072486dSGerrit Uitslag sleep(1); // wait for new revision ID 272*6072486dSGerrit Uitslag 273*6072486dSGerrit Uitslag 274*6072486dSGerrit Uitslag // create external delete 275*6072486dSGerrit Uitslag unlink($file); 276*6072486dSGerrit Uitslag clearstatcache(false, $file); 277*6072486dSGerrit Uitslag 278*6072486dSGerrit Uitslag sleep(1); // wait for new revision ID 279*6072486dSGerrit Uitslag 280*6072486dSGerrit Uitslag // save on top of external delete. save is seen as creation 281*6072486dSGerrit Uitslag saveWikiText($page, 'teststring6', 'second save', false); 282*6072486dSGerrit Uitslag clearstatcache(false, $file); 283*6072486dSGerrit Uitslag 284*6072486dSGerrit Uitslag $pagelog = new PageChangeLog($page); 285*6072486dSGerrit Uitslag $revisions = $pagelog->getRevisions(-1, 200); 286*6072486dSGerrit Uitslag $this->assertEquals(2, count($revisions)); // one more revisions now! 287*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[0]); 288*6072486dSGerrit Uitslag $this->assertEquals('second save', $revinfo['sum']); 289*6072486dSGerrit Uitslag $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']); 290*6072486dSGerrit Uitslag $this->assertEquals(11, $revinfo['sizechange']); 291*6072486dSGerrit Uitslag 292*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[1]); 293*6072486dSGerrit Uitslag $this->assertEquals('first save', $revinfo['sum']); 294*6072486dSGerrit Uitslag 295*6072486dSGerrit Uitslag } 296*6072486dSGerrit Uitslag 297*6072486dSGerrit Uitslag /** 298*6072486dSGerrit Uitslag * Execute a whole bunch of saves on the same page and check the results 299*6072486dSGerrit Uitslag */ 300*6072486dSGerrit Uitslag function test_savesequencerevert() { 301*6072486dSGerrit Uitslag global $REV; 302*6072486dSGerrit Uitslag 303*6072486dSGerrit Uitslag $page = 'page5'; 304*6072486dSGerrit Uitslag $file = wikiFN($page); 305*6072486dSGerrit Uitslag 306*6072486dSGerrit Uitslag // create the page 307*6072486dSGerrit Uitslag $this->assertFileNotExists($file); 308*6072486dSGerrit Uitslag saveWikiText($page, 'teststring', 'first save', false); 309*6072486dSGerrit Uitslag $this->assertFileExists($file); 310*6072486dSGerrit Uitslag $lastmod = filemtime($file); 311*6072486dSGerrit Uitslag 312*6072486dSGerrit Uitslag $pagelog = new PageChangeLog($page); 313*6072486dSGerrit Uitslag $revisions = $pagelog->getRevisions(-1, 200); 314*6072486dSGerrit Uitslag $this->assertEquals(1, count($revisions)); 315*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[0]); 316*6072486dSGerrit Uitslag $this->assertEquals('first save', $revinfo['sum']); 317*6072486dSGerrit Uitslag $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']); 318*6072486dSGerrit Uitslag $this->assertEquals(10, $revinfo['sizechange']); 319*6072486dSGerrit Uitslag 320*6072486dSGerrit Uitslag sleep(1); // wait for new revision ID 321*6072486dSGerrit Uitslag 322*6072486dSGerrit Uitslag // save with same content should be ignored 323*6072486dSGerrit Uitslag saveWikiText($page, 'teststring', 'second save', false); 324*6072486dSGerrit Uitslag clearstatcache(false, $file); 325*6072486dSGerrit Uitslag $this->assertEquals($lastmod, filemtime($file)); 326*6072486dSGerrit Uitslag 327*6072486dSGerrit Uitslag $pagelog = new PageChangeLog($page); 328*6072486dSGerrit Uitslag $revisions = $pagelog->getRevisions(-1, 200); 329*6072486dSGerrit Uitslag $this->assertEquals(1, count($revisions)); 330*6072486dSGerrit Uitslag 331*6072486dSGerrit Uitslag // update the page with new text 332*6072486dSGerrit Uitslag saveWikiText($page, 'teststring2long', 'third save', false); 333*6072486dSGerrit Uitslag clearstatcache(false, $file); 334*6072486dSGerrit Uitslag $newmod = filemtime($file); 335*6072486dSGerrit Uitslag $this->assertNotEquals($lastmod, $newmod); 336*6072486dSGerrit Uitslag $lastmod = $newmod; 337*6072486dSGerrit Uitslag $revertrev = $newmod; 338*6072486dSGerrit Uitslag 339*6072486dSGerrit Uitslag $pagelog = new PageChangeLog($page); 340*6072486dSGerrit Uitslag $revisions = $pagelog->getRevisions(-1, 200); 341*6072486dSGerrit Uitslag $this->assertEquals(2, count($revisions)); 342*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[0]); 343*6072486dSGerrit Uitslag $this->assertEquals('third save', $revinfo['sum']); 344*6072486dSGerrit Uitslag $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']); 345*6072486dSGerrit Uitslag $this->assertEquals(5, $revinfo['sizechange']); 346*6072486dSGerrit Uitslag 347*6072486dSGerrit Uitslag sleep(1); // wait for new revision ID 348*6072486dSGerrit Uitslag 349*6072486dSGerrit Uitslag // add a minor edit (unauthenticated) 350*6072486dSGerrit Uitslag saveWikiText($page, 'teststring3long', 'fourth save', true); 351*6072486dSGerrit Uitslag clearstatcache(false, $file); 352*6072486dSGerrit Uitslag $newmod = filemtime($file); 353*6072486dSGerrit Uitslag $this->assertNotEquals($lastmod, $newmod); 354*6072486dSGerrit Uitslag $lastmod = $newmod; 355*6072486dSGerrit Uitslag 356*6072486dSGerrit Uitslag $pagelog = new PageChangeLog($page); 357*6072486dSGerrit Uitslag $revisions = $pagelog->getRevisions(-1, 200); 358*6072486dSGerrit Uitslag $this->assertEquals(3, count($revisions)); 359*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[0]); 360*6072486dSGerrit Uitslag $this->assertEquals('fourth save', $revinfo['sum']); 361*6072486dSGerrit Uitslag $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']); 362*6072486dSGerrit Uitslag $this->assertEquals(0, $revinfo['sizechange']); 363*6072486dSGerrit Uitslag 364*6072486dSGerrit Uitslag sleep(1); // wait for new revision ID 365*6072486dSGerrit Uitslag 366*6072486dSGerrit Uitslag // add a minor edit (authenticated) 367*6072486dSGerrit Uitslag $_SERVER['REMOTE_USER'] = 'user'; 368*6072486dSGerrit Uitslag saveWikiText($page, 'teststring4', 'fifth save', true); 369*6072486dSGerrit Uitslag clearstatcache(false, $file); 370*6072486dSGerrit Uitslag $newmod = filemtime($file); 371*6072486dSGerrit Uitslag $this->assertNotEquals($lastmod, $newmod); 372*6072486dSGerrit Uitslag $lastmod = $newmod; 373*6072486dSGerrit Uitslag 374*6072486dSGerrit Uitslag $pagelog = new PageChangeLog($page); 375*6072486dSGerrit Uitslag $revisions = $pagelog->getRevisions(-1, 200); 376*6072486dSGerrit Uitslag $this->assertEquals(4, count($revisions)); 377*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[0]); 378*6072486dSGerrit Uitslag $this->assertEquals('fifth save', $revinfo['sum']); 379*6072486dSGerrit Uitslag $this->assertEquals(DOKU_CHANGE_TYPE_MINOR_EDIT, $revinfo['type']); 380*6072486dSGerrit Uitslag $this->assertEquals(-4, $revinfo['sizechange']); 381*6072486dSGerrit Uitslag 382*6072486dSGerrit Uitslag sleep(1); // wait for new revision ID 383*6072486dSGerrit Uitslag 384*6072486dSGerrit Uitslag // restore 385*6072486dSGerrit Uitslag $REV = $revertrev; 386*6072486dSGerrit Uitslag saveWikiText($page, 'teststring2long', 'sixth save', true); 387*6072486dSGerrit Uitslag clearstatcache(false, $file); 388*6072486dSGerrit Uitslag $this->assertFileExists($file); 389*6072486dSGerrit Uitslag $newmod = filemtime($file); 390*6072486dSGerrit Uitslag $this->assertNotEquals($lastmod, $newmod); 391*6072486dSGerrit Uitslag 392*6072486dSGerrit Uitslag $pagelog = new PageChangeLog($page); 393*6072486dSGerrit Uitslag $revisions = $pagelog->getRevisions(-1, 200); 394*6072486dSGerrit Uitslag $this->assertEquals(5, count($revisions)); 395*6072486dSGerrit Uitslag $revinfo = $pagelog->getRevisionInfo($revisions[0]); 396*6072486dSGerrit Uitslag $this->assertEquals('sixth save', $revinfo['sum']); 397*6072486dSGerrit Uitslag $this->assertEquals(DOKU_CHANGE_TYPE_REVERT, $revinfo['type']); 398*6072486dSGerrit Uitslag $this->assertEquals($REV, $revinfo['extra']); 399*6072486dSGerrit Uitslag $this->assertEquals(4, $revinfo['sizechange']); 400*6072486dSGerrit Uitslag $REV = ''; 401*6072486dSGerrit Uitslag } 402*6072486dSGerrit Uitslag 403023953f0SAndreas Gohr} 404