aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-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.php99
-rw-r--r--lib/plugins/config/_test/Setting/SettingStringTest.php13
-rw-r--r--lib/plugins/config/_test/Setting/SettingTest.php42
-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.php8
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;
}