1<?php 2 3namespace dokuwiki\plugin\config\test; 4 5use dokuwiki\plugin\config\core\ConfigParser; 6use dokuwiki\plugin\config\core\Loader; 7 8/** 9 * @group plugin_config 10 * @group admin_plugins 11 * @group plugins 12 * @group bundled_plugins 13 */ 14class LoaderExtraDefaultsTest extends \DokuWikiTest { 15 16 protected $pluginsEnabled = ['testing']; 17 18 protected $oldSetting = []; 19 20 public function setUp() : void 21 { 22 global $config_cascade; 23 24 $out = "<?php\n/*\n * protected settings, cannot modified in the Config manager\n" . 25 " * Some test data */\n"; 26 $out .= "\$conf['title'] = 'New default Title';\n"; 27 $out .= "\$conf['tagline'] = 'New default Tagline';\n"; 28 $out .= "\$conf['plugin']['testing']['schnibble'] = 1;\n"; 29 $out .= "\$conf['plugin']['testing']['second'] = 'New default setting';\n"; 30 31 $file = DOKU_CONF . 'otherdefaults.php'; 32 file_put_contents($file, $out); 33 34 //store original settings 35 $this->oldSetting = $config_cascade['main']['default']; 36 //add second file with defaults, which override the defaults of DokuWiki 37 $config_cascade['main']['default'][] = $file; 38 39 parent::setUp(); 40 } 41 /** 42 * Ensure loading the defaults work, and that the extra default for plugins provided via an extra main default file 43 * override the plugin defaults as well 44 */ 45 public function testDefaultsOverwriting() { 46 $loader = new Loader(new ConfigParser()); 47 48 $conf = $loader->loadDefaults(); 49 $this->assertTrue(is_array($conf)); 50 51 // basic defaults 52 $this->assertArrayHasKey('title', $conf); 53 $this->assertEquals('New default Title', $conf['title']); 54 $this->assertEquals('New default Tagline', $conf['tagline']); 55 56 // plugin defaults 57 $this->assertArrayHasKey('plugin____testing____schnibble', $conf); 58 $this->assertEquals(1, $conf['plugin____testing____schnibble']); 59 $this->assertEquals('New default setting', $conf['plugin____testing____second']); 60 61 } 62 63 public function tearDown() : void 64 { 65 global $config_cascade; 66 67 $config_cascade['main']['default'] = $this->oldSetting; 68 unlink(DOKU_CONF . 'otherdefaults.php'); 69 70 parent::tearDown(); 71 } 72 73} 74