diff options
-rw-r--r-- | lib/plugins/config/_test/ConfigParserTest.php (renamed from lib/plugins/config/_test/ConfigParser.test.php) | 0 | ||||
-rw-r--r-- | lib/plugins/config/_test/Setting/AbstractSettingTest.php | 99 | ||||
-rw-r--r-- | lib/plugins/config/_test/Setting/SettingStringTest.php | 13 | ||||
-rw-r--r-- | lib/plugins/config/_test/Setting/SettingTest.php | 42 | ||||
-rw-r--r-- | lib/plugins/config/_test/WriterTest.php (renamed from lib/plugins/config/_test/Writer.test.php) | 0 | ||||
-rw-r--r-- | lib/plugins/config/core/Setting/Setting.php | 8 |
6 files changed, 157 insertions, 5 deletions
diff --git a/lib/plugins/config/_test/ConfigParser.test.php b/lib/plugins/config/_test/ConfigParserTest.php index b7e33a539..b7e33a539 100644 --- a/lib/plugins/config/_test/ConfigParser.test.php +++ b/lib/plugins/config/_test/ConfigParserTest.php diff --git a/lib/plugins/config/_test/Setting/AbstractSettingTest.php b/lib/plugins/config/_test/Setting/AbstractSettingTest.php new file mode 100644 index 000000000..3b24efc37 --- /dev/null +++ b/lib/plugins/config/_test/Setting/AbstractSettingTest.php @@ -0,0 +1,99 @@ +<?php + +namespace dokuwiki\plugin\config\test\Setting; + +use dokuwiki\plugin\config\core\Setting\Setting; + +class AbstractSettingTest extends \DokuWikiTest { + + /** @var string the class to test */ + protected $class; + + /** + * Sets up the proper class to test based on the test's class name + * @throws \Exception + */ + public function setUp() { + parent::setUp(); + $class = get_class($this); + $class = substr($class, strrpos($class, '\\') + 1, -4); + $class = 'dokuwiki\\plugin\\config\\core\\Setting\\' . $class; + $this->class = $class; + } + + public function testInitialBasics() { + /** @var Setting $setting */ + $setting = new $this->class('test'); + $this->assertEquals('test', $setting->getKey()); + $this->assertSame(false, $setting->isProtected()); + $this->assertSame(true, $setting->isDefault()); + $this->assertSame(false, $setting->hasError()); + $this->assertSame(false, $setting->shouldBeSaved()); + } + + public function testShouldHaveDefault() { + /** @var Setting $setting */ + $setting = new $this->class('test'); + $this->assertSame(true, $setting->shouldHaveDefault()); + } + + public function testPrettyKey() { + /** @var Setting $setting */ + $setting = new $this->class('test'); + $this->assertEquals('test', $setting->getPrettyKey(false)); + + $setting = new $this->class('test____foo'); + $this->assertEquals('test»foo', $setting->getPrettyKey(false)); + + $setting = new $this->class('test'); + $this->assertEquals( + '<a href="http://www.dokuwiki.org/config:test">test</a>', + $setting->getPrettyKey(true) + ); + + $setting = new $this->class('test____foo'); + $this->assertEquals('test»foo', $setting->getPrettyKey(true)); + + $setting = new $this->class('start'); + $this->assertEquals( + '<a href="http://www.dokuwiki.org/config:startpage">start</a>', + $setting->getPrettyKey(true) + ); + } + + public function testType() { + /** @var Setting $setting */ + $setting = new $this->class('test'); + $this->assertEquals('conf', $setting->getType()); + + $setting = new $this->class('test_foo'); + $this->assertEquals('conf', $setting->getType()); + + $setting = new $this->class('plugin____test'); + $this->assertEquals('plugin', $setting->getType()); + + $setting = new $this->class('tpl____test'); + $this->assertEquals('template', $setting->getType()); + } + + public function testCaution() { + /** @var Setting $setting */ + $setting = new $this->class('test'); + $this->assertEquals(false, $setting->caution()); + + $setting = new $this->class('test', ['_caution' => 'warning']); + $this->assertEquals('warning', $setting->caution()); + + $setting = new $this->class('test', ['_caution' => 'danger']); + $this->assertEquals('danger', $setting->caution()); + + $setting = new $this->class('test', ['_caution' => 'security']); + $this->assertEquals('security', $setting->caution()); + + $setting = new $this->class('test', ['_caution' => 'flargh']); + $this->expectException(\RuntimeException::class); + $setting->caution(); + } + + +} diff --git a/lib/plugins/config/_test/Setting/SettingStringTest.php b/lib/plugins/config/_test/Setting/SettingStringTest.php new file mode 100644 index 000000000..3d6a71c9d --- /dev/null +++ b/lib/plugins/config/_test/Setting/SettingStringTest.php @@ -0,0 +1,13 @@ +<?php + +namespace dokuwiki\plugin\config\test\Setting; + +/** + * @group plugin_config + * @group admin_plugins + * @group plugins + * @group bundled_plugins + */ +class SettingStringTest extends SettingTest { + +} diff --git a/lib/plugins/config/_test/Setting/SettingTest.php b/lib/plugins/config/_test/Setting/SettingTest.php new file mode 100644 index 000000000..ffd74496f --- /dev/null +++ b/lib/plugins/config/_test/Setting/SettingTest.php @@ -0,0 +1,42 @@ +<?php + +namespace dokuwiki\plugin\config\test\Setting; + +use dokuwiki\plugin\config\core\Setting\Setting; + +/** + * @group plugin_config + * @group admin_plugins + * @group plugins + * @group bundled_plugins + */ +class SettingTest extends AbstractSettingTest { + + /** + * Dataprovider for test out + * + * @return array + */ + public function dataOut() { + return [ + ['bar', "\$conf['test'] = 'bar';\n"], + ["foo'bar", "\$conf['test'] = 'foo\\'bar';\n"], + ]; + } + + /** + * Check the output + * + * @param mixed $in The value to initialize the setting with + * @param string $out The expected output (for conf[test]) + * @dataProvider dataOut + */ + public function testOut($in, $out) { + /** @var Setting $setting */ + #$setting = new $this->class('test'); + $setting = new Setting('test'); + $setting->initialize('ignore', $in); + + $this->assertEquals($out, $setting->out('conf')); + } +} diff --git a/lib/plugins/config/_test/Writer.test.php b/lib/plugins/config/_test/WriterTest.php index 62e4a56d5..62e4a56d5 100644 --- a/lib/plugins/config/_test/Writer.test.php +++ b/lib/plugins/config/_test/WriterTest.php diff --git a/lib/plugins/config/core/Setting/Setting.php b/lib/plugins/config/core/Setting/Setting.php index e7f8ff8c2..bd20a7cd0 100644 --- a/lib/plugins/config/core/Setting/Setting.php +++ b/lib/plugins/config/core/Setting/Setting.php @@ -1,7 +1,7 @@ <?php - namespace dokuwiki\plugin\config\core\Setting; + use dokuwiki\plugin\config\core\Configuration; /** @@ -264,11 +264,9 @@ class Setting { public function caution() { if(!empty($this->caution)) { if(!in_array($this->caution, Setting::$validCautions)) { - trigger_error( - 'Invalid caution string (' . $this->caution . ') in metadata for setting "' . $this->key . '"', - E_USER_WARNING + throw new \RuntimeException( + 'Invalid caution string (' . $this->caution . ') in metadata for setting "' . $this->key . '"' ); - return false; } return $this->caution; } |