xref: /dokuwiki/_test/tests/conf/CascadeExtraDefaultsTest.php (revision 591ebe4523e0e3be14097d6d097eb5796628dcba)
1<?php
2
3class CascadeExtraDefaultsTest extends DokuWikiTest {
4
5    protected $oldSetting = [];
6
7    public function setUp() : void
8    {
9        global $config_cascade;
10
11        $this->pluginsEnabled = [
12            'testing'
13        ];
14
15        $out = "<?php\n/*\n * protected settings, cannot modified in the Config manager\n" .
16            " * Some test data */\n";
17        $out .= "\$conf['title'] = 'New default Title';\n";
18        $out .= "\$conf['tagline'] = 'New default Tagline';\n";
19        $out .= "\$conf['plugin']['testing']['schnibble'] = 1;\n";
20        $out .= "\$conf['plugin']['testing']['second'] = 'New default setting';\n";
21
22        $file = DOKU_CONF . 'otherdefaults.php';
23        file_put_contents($file, $out);
24
25        //store original settings
26        $this->oldSetting = $config_cascade['main']['default'];
27        //add second file with defaults, which override the defaults of DokuWiki
28        $config_cascade['main']['default'][] = $file;
29
30        parent::setUp();
31    }
32
33    public function testNewDefaults()
34    {
35        global $conf;
36
37        $this->assertEquals('New default Tagline', $conf['tagline'], 'new default value');
38        $testing = plugin_load('action', 'testing');
39        $this->assertEquals(1, $testing->getConf('schnibble'), 'new default value');
40
41
42        $this->assertEquals('My Test Wiki', $conf['title'], 'local value still overrides default');
43        $this->assertEquals('Local setting', $testing->getConf('second'), 'local value still overrides default');
44    }
45
46    public function tearDown() : void
47    {
48        global $config_cascade;
49
50        $config_cascade['main']['default'] = $this->oldSetting;
51        unlink(DOKU_CONF . 'otherdefaults.php');
52
53        parent::tearDown();
54    }
55}
56