198a151baSAndreas Gohr<?php 298a151baSAndreas Gohr 398a151baSAndreas Gohrnamespace dokuwiki\plugin\config\test\Setting; 498a151baSAndreas Gohr 598a151baSAndreas Gohruse dokuwiki\plugin\config\core\Setting\Setting; 698a151baSAndreas Gohr 798a151baSAndreas Gohrclass 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 */ 1698a151baSAndreas Gohr public function setUp() { 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'); 67*d6fc72e1SAndreas Gohr $this->assertEquals('dokuwiki', $setting->getType()); 6898a151baSAndreas Gohr 6998a151baSAndreas Gohr $setting = new $this->class('test_foo'); 70*d6fc72e1SAndreas 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