xref: /dokuwiki/lib/plugins/config/_test/LoaderExtraDefaultsTest.php (revision 2e618646c962d15a7d5aa56e81f287d0cdc79bb6)
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