xref: /dokuwiki/lib/plugins/config/_test/Setting/AbstractSettingTest.php (revision 1c33cec37215d0c964cf961bdbc49ae7db3657e6)
198a151baSAndreas Gohr<?php
298a151baSAndreas Gohr
398a151baSAndreas Gohrnamespace dokuwiki\plugin\config\test\Setting;
498a151baSAndreas Gohr
598a151baSAndreas Gohruse dokuwiki\plugin\config\core\Setting\Setting;
698a151baSAndreas Gohr
7e901cf74SAndreas Gohrabstract class AbstractSettingTest extends \DokuWikiTest {
898a151baSAndreas Gohr
998a151baSAndreas Gohr    /** @var string the class to test */
1098a151baSAndreas Gohr    protected $class;
1198a151baSAndreas Gohr
1298a151baSAndreas Gohr    /**
1398a151baSAndreas Gohr     * Sets up the proper class to test based on the test's class name
1498a151baSAndreas Gohr     * @throws \Exception
1598a151baSAndreas Gohr     */
16*1c33cec3SAndreas Gohr    public function setUp() : void {
1798a151baSAndreas Gohr        parent::setUp();
1898a151baSAndreas Gohr        $class = get_class($this);
1998a151baSAndreas Gohr        $class = substr($class, strrpos($class, '\\') + 1, -4);
2098a151baSAndreas Gohr        $class = 'dokuwiki\\plugin\\config\\core\\Setting\\' . $class;
2198a151baSAndreas Gohr        $this->class = $class;
2298a151baSAndreas Gohr    }
2398a151baSAndreas Gohr
2498a151baSAndreas Gohr    public function testInitialBasics() {
2598a151baSAndreas Gohr        /** @var Setting $setting */
2698a151baSAndreas Gohr        $setting = new $this->class('test');
2798a151baSAndreas Gohr        $this->assertEquals('test', $setting->getKey());
2898a151baSAndreas Gohr        $this->assertSame(false, $setting->isProtected());
2998a151baSAndreas Gohr        $this->assertSame(true, $setting->isDefault());
3098a151baSAndreas Gohr        $this->assertSame(false, $setting->hasError());
3198a151baSAndreas Gohr        $this->assertSame(false, $setting->shouldBeSaved());
3298a151baSAndreas Gohr    }
3398a151baSAndreas Gohr
3498a151baSAndreas Gohr    public function testShouldHaveDefault() {
3598a151baSAndreas Gohr        /** @var Setting $setting */
3698a151baSAndreas Gohr        $setting = new $this->class('test');
3798a151baSAndreas Gohr        $this->assertSame(true, $setting->shouldHaveDefault());
3898a151baSAndreas Gohr    }
3998a151baSAndreas Gohr
4098a151baSAndreas Gohr    public function testPrettyKey() {
4198a151baSAndreas Gohr        /** @var Setting $setting */
4298a151baSAndreas Gohr        $setting = new $this->class('test');
4398a151baSAndreas Gohr        $this->assertEquals('test', $setting->getPrettyKey(false));
4498a151baSAndreas Gohr
4598a151baSAndreas Gohr        $setting = new $this->class('test____foo');
4698a151baSAndreas Gohr        $this->assertEquals('test»foo', $setting->getPrettyKey(false));
4798a151baSAndreas Gohr
4898a151baSAndreas Gohr        $setting = new $this->class('test');
4998a151baSAndreas Gohr        $this->assertEquals(
5098a151baSAndreas Gohr            '<a href="http://www.dokuwiki.org/config:test">test</a>',
5198a151baSAndreas Gohr            $setting->getPrettyKey(true)
5298a151baSAndreas Gohr        );
5398a151baSAndreas Gohr
5498a151baSAndreas Gohr        $setting = new $this->class('test____foo');
5598a151baSAndreas Gohr        $this->assertEquals('test»foo', $setting->getPrettyKey(true));
5698a151baSAndreas Gohr
5798a151baSAndreas Gohr        $setting = new $this->class('start');
5898a151baSAndreas Gohr        $this->assertEquals(
5998a151baSAndreas Gohr            '<a href="http://www.dokuwiki.org/config:startpage">start</a>',
6098a151baSAndreas Gohr            $setting->getPrettyKey(true)
6198a151baSAndreas Gohr        );
6298a151baSAndreas Gohr    }
6398a151baSAndreas Gohr
6498a151baSAndreas Gohr    public function testType() {
6598a151baSAndreas Gohr        /** @var Setting $setting */
6698a151baSAndreas Gohr        $setting = new $this->class('test');
67d6fc72e1SAndreas Gohr        $this->assertEquals('dokuwiki', $setting->getType());
6898a151baSAndreas Gohr
6998a151baSAndreas Gohr        $setting = new $this->class('test_foo');
70d6fc72e1SAndreas Gohr        $this->assertEquals('dokuwiki', $setting->getType());
7198a151baSAndreas Gohr
7298a151baSAndreas Gohr        $setting = new $this->class('plugin____test');
7398a151baSAndreas Gohr        $this->assertEquals('plugin', $setting->getType());
7498a151baSAndreas Gohr
7598a151baSAndreas Gohr        $setting = new $this->class('tpl____test');
7698a151baSAndreas Gohr        $this->assertEquals('template', $setting->getType());
7798a151baSAndreas Gohr    }
7898a151baSAndreas Gohr
7998a151baSAndreas Gohr    public function testCaution() {
8098a151baSAndreas Gohr        /** @var Setting $setting */
8198a151baSAndreas Gohr        $setting = new $this->class('test');
8298a151baSAndreas Gohr        $this->assertEquals(false, $setting->caution());
8398a151baSAndreas Gohr
8498a151baSAndreas Gohr        $setting = new $this->class('test', ['_caution' => 'warning']);
8598a151baSAndreas Gohr        $this->assertEquals('warning', $setting->caution());
8698a151baSAndreas Gohr
8798a151baSAndreas Gohr        $setting = new $this->class('test', ['_caution' => 'danger']);
8898a151baSAndreas Gohr        $this->assertEquals('danger', $setting->caution());
8998a151baSAndreas Gohr
9098a151baSAndreas Gohr        $setting = new $this->class('test', ['_caution' => 'security']);
9198a151baSAndreas Gohr        $this->assertEquals('security', $setting->caution());
9298a151baSAndreas Gohr
9398a151baSAndreas Gohr        $setting = new $this->class('test', ['_caution' => 'flargh']);
9498a151baSAndreas Gohr        $this->expectException(\RuntimeException::class);
9598a151baSAndreas Gohr        $setting->caution();
9698a151baSAndreas Gohr    }
9798a151baSAndreas Gohr
9898a151baSAndreas Gohr
9998a151baSAndreas Gohr}
100