diff options
Diffstat (limited to 'lib/plugins/config/_test/WriterTest.php')
-rw-r--r-- | lib/plugins/config/_test/WriterTest.php | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/lib/plugins/config/_test/WriterTest.php b/lib/plugins/config/_test/WriterTest.php new file mode 100644 index 000000000..62e4a56d5 --- /dev/null +++ b/lib/plugins/config/_test/WriterTest.php @@ -0,0 +1,63 @@ +<?php + +namespace dokuwiki\plugin\config\test; +use dokuwiki\plugin\config\core\Setting\SettingString; +use dokuwiki\plugin\config\core\Writer; + +/** + * @group plugin_config + * @group admin_plugins + * @group plugins + * @group bundled_plugins + */ +class WriterTest extends \DokuWikiTest { + + public function testSave() { + global $config_cascade; + $config = end($config_cascade['main']['local']); + + $set1 = new SettingString('test1'); + $set1->initialize('foo','bar', null); + $set2 = new SettingString('test2'); + $set2->initialize('foo','foo', null); + $settings = [$set1, $set2]; + $writer = new Writer(); + + // before running, no backup should exist + $this->assertFileExists($config); + $this->assertFileNotExists("$config.bak"); + $old = filesize($config); + + /** @noinspection PhpUnhandledExceptionInspection */ + $writer->save($settings); + + // after running, both should exist + $this->assertFileExists($config); + $this->assertFileExists("$config.bak"); + $this->assertEquals($old, filesize("$config.bak"), 'backup should have size of old file'); + + // check contents + $conf = []; + include $config; + $this->assertArrayHasKey('test1', $conf); + $this->assertEquals('bar', $conf['test1']); + $this->assertArrayNotHasKey('test2', $conf); + + /** @noinspection PhpUnhandledExceptionInspection */ + $writer->save($settings); + $this->assertEquals(filesize($config), filesize("$config.bak")); + } + + public function testTouch() { + global $config_cascade; + $config = end($config_cascade['main']['local']); + $writer = new Writer(); + + $old = filemtime($config); + $this->waitForTick(true); + /** @noinspection PhpUnhandledExceptionInspection */ + $writer->touch(); + clearstatcache($config); + $this->assertGreaterThan($old, filemtime($config)); + } +} |