1<?php 2 3namespace dokuwiki\plugin\farmsync\test; 4 5/** 6 * @group plugin_farmsync 7 * @group plugins 8 * @author Michael Große <grosse@cosmocode.de> 9 * 10 */ 11class addRemoteChangelogRevision_farmsync_test extends \DokuWikiTest { 12 protected $pluginsEnabled = array('farmsync'); 13 14 public function setUp() { 15 parent::setUp(); 16 17 $changelog_text = "1422353621 127.0.0.1 C unittests user0 created 181422353856 127.0.0.1 E unittests user1 191422353857 127.0.0.1 E unittests user2 [Links] 201426689052 127.0.0.1 C de:unittests user3 ↷ Page moved from unittests to en:unittests 211426689152 127.0.0.1 C unittests user2 ↷ Page moved from en:unittests to unittests 221427888702 127.0.0.1 E unittests user1 [Links] "; 23 $fn = DOKU_TMP_DATA . 'meta/test.changes'; 24 io_saveFile($fn, $changelog_text); 25 } 26 27 public function test_addRemoteChangelogRevision_appendLine() { 28 // arrange 29 /** @var \admin_plugin_farmsync $admin */ 30 $farm_util = new \dokuwiki\plugin\farmsync\meta\FarmSyncUtil(); 31 $fn = DOKU_TMP_DATA . 'meta/test.changes'; 32 33 $original_file = io_readFile($fn); 34 $testline = '1461330568 127.0.0.1 E unittests admin New'; 35 36 // act 37 $result = $farm_util->addRemoteChangelogRevision($fn, $testline, false); 38 $actual_file = io_readFile($fn); 39 40 // assert 41 $this->assertEquals($original_file . "\n" . $testline . "\n", $actual_file); 42 $this->assertEquals(array(), $result); 43 } 44 45 public function test_addRemoteChangelogRevision_addNonexistingLine() { 46 // arrange 47 /** @var \admin_plugin_farmsync $admin */ 48 $farm_util = new \dokuwiki\plugin\farmsync\meta\FarmSyncUtil(); 49 $fn = DOKU_TMP_DATA . 'meta/test.changes'; 50 51 $testline = '1422353850 127.0.0.1 E unittests admin New'; 52 53 // act 54 $result = $farm_util->addRemoteChangelogRevision($fn, $testline, false); 55 $actual_file = io_readFile($fn); 56 57 // assert 58 $expected_file = "1422353621 127.0.0.1 C unittests user0 created 59$testline 601422353856 127.0.0.1 E unittests user1 611422353857 127.0.0.1 E unittests user2 [Links] 621426689052 127.0.0.1 C de:unittests user3 ↷ Page moved from unittests to en:unittests 631426689152 127.0.0.1 C unittests user2 ↷ Page moved from en:unittests to unittests 641427888702 127.0.0.1 E unittests user1 [Links] \n"; 65 $this->assertEquals($expected_file, $actual_file); 66 $this->assertEquals(array(), $result); 67 } 68 69 public function test_addRemoteChangelogRevision_addNonexistingLine_truncate() { 70 // arrange 71 /** @var \admin_plugin_farmsync $admin */ 72 $farm_util = new \dokuwiki\plugin\farmsync\meta\FarmSyncUtil(); 73 $fn = DOKU_TMP_DATA . 'meta/test.changes'; 74 75 $testline = '1422353850 127.0.0.1 E unittests admin New'; 76 77 // act 78 $result = $farm_util->addRemoteChangelogRevision($fn, $testline, true); 79 $actual_file = io_readFile($fn); 80 81 // assert 82 $expected_file = "1422353621 127.0.0.1 C unittests user0 created 83$testline\n"; 84 $this->assertEquals($expected_file, $actual_file); 85 $this->assertEquals(array(), $result); 86 } 87 88 public function test_addRemoteChangelogRevision_addExistingLine_move1rev() { 89 // arrange 90 /** @var \admin_plugin_farmsync $admin */ 91 $farm_util = new \dokuwiki\plugin\farmsync\meta\FarmSyncUtil(); 92 $fn = DOKU_TMP_DATA . 'meta/test.changes'; 93 94 $testline = '1422353856 127.0.0.1 E unittests admin New'; 95 96 // act 97 $result = $farm_util->addRemoteChangelogRevision($fn, $testline, false); 98 $actual_file = io_readFile($fn); 99 100 // assert 101 $expected_file = "1422353621 127.0.0.1 C unittests user0 created 1021422353855 127.0.0.1 E unittests user1 103$testline 1041422353857 127.0.0.1 E unittests user2 [Links] 1051426689052 127.0.0.1 C de:unittests user3 ↷ Page moved from unittests to en:unittests 1061426689152 127.0.0.1 C unittests user2 ↷ Page moved from en:unittests to unittests 1071427888702 127.0.0.1 E unittests user1 [Links] \n"; 108 $this->assertEquals($expected_file, $actual_file); 109 $this->assertEquals(array(1422353856), $result); 110 } 111 112 public function test_addRemoteChangelogRevision_addExistingLine_move2revs() { 113 // arrange 114 /** @var \admin_plugin_farmsync $admin */ 115 $farm_util = new \dokuwiki\plugin\farmsync\meta\FarmSyncUtil(); 116 $fn = DOKU_TMP_DATA . 'meta/test.changes'; 117 118 $testline = '1422353857 127.0.0.1 E unittests admin New'; 119 120 // act 121 $result = $farm_util->addRemoteChangelogRevision($fn, $testline, false); 122 $actual_file = io_readFile($fn); 123 124 // assert 125 $expected_file = "1422353621 127.0.0.1 C unittests user0 created 1261422353855 127.0.0.1 E unittests user1 1271422353856 127.0.0.1 E unittests user2 [Links] 128$testline 1291426689052 127.0.0.1 C de:unittests user3 ↷ Page moved from unittests to en:unittests 1301426689152 127.0.0.1 C unittests user2 ↷ Page moved from en:unittests to unittests 1311427888702 127.0.0.1 E unittests user1 [Links] \n"; 132 $this->assertEquals($expected_file, $actual_file); 133 $this->assertEquals(array(1422353856, 1422353857), $result); 134 } 135 136 /** 137 * @expectedException \Exception 138 * @expectedExceptionMessage 2nd Argument must start with timestamp! 139 */ 140 public function test_addRemoteChangelogRevision_Exception() { 141 $farm_util = new \dokuwiki\plugin\farmsync\meta\FarmSyncUtil(); 142 $fn = DOKU_TMP_DATA . 'meta/test.changes'; 143 144 $testline = 'not starting with timestamp'; 145 146 $farm_util->addRemoteChangelogRevision($fn, $testline); 147 } 148} 149