xref: /dokuwiki/lib/plugins/config/_test/LoaderExtraDefaultsTest.php (revision 5d2c5d7e32d5b0d835d896a62533da6991c51291)
12e618646SGerrit Uitslag<?php
22e618646SGerrit Uitslag
32e618646SGerrit Uitslagnamespace dokuwiki\plugin\config\test;
42e618646SGerrit Uitslag
52e618646SGerrit Uitslaguse dokuwiki\plugin\config\core\ConfigParser;
62e618646SGerrit Uitslaguse dokuwiki\plugin\config\core\Loader;
72e618646SGerrit Uitslag
82e618646SGerrit Uitslag/**
92e618646SGerrit Uitslag * @group plugin_config
102e618646SGerrit Uitslag * @group admin_plugins
112e618646SGerrit Uitslag * @group plugins
122e618646SGerrit Uitslag * @group bundled_plugins
132e618646SGerrit Uitslag */
14*5d2c5d7eSGerrit Uitslagclass LoaderExtraDefaultsTest extends \DokuWikiTest
15*5d2c5d7eSGerrit Uitslag{
162e618646SGerrit Uitslag
172e618646SGerrit Uitslag    protected $pluginsEnabled = ['testing'];
182e618646SGerrit Uitslag
192e618646SGerrit Uitslag    protected $oldSetting = [];
202e618646SGerrit Uitslag
212e618646SGerrit Uitslag    public function setUp(): void
222e618646SGerrit Uitslag    {
232e618646SGerrit Uitslag        global $config_cascade;
242e618646SGerrit Uitslag
252e618646SGerrit Uitslag        $out = "<?php\n/*\n * protected settings, cannot modified in the Config manager\n" .
262e618646SGerrit Uitslag            " * Some test data */\n";
272e618646SGerrit Uitslag        $out .= "\$conf['title'] = 'New default Title';\n";
282e618646SGerrit Uitslag        $out .= "\$conf['tagline'] = 'New default Tagline';\n";
292e618646SGerrit Uitslag        $out .= "\$conf['plugin']['testing']['schnibble'] = 1;\n";
302e618646SGerrit Uitslag        $out .= "\$conf['plugin']['testing']['second'] = 'New default setting';\n";
312e618646SGerrit Uitslag
322e618646SGerrit Uitslag        $file = DOKU_CONF . 'otherdefaults.php';
332e618646SGerrit Uitslag        file_put_contents($file, $out);
342e618646SGerrit Uitslag
352e618646SGerrit Uitslag        //store original settings
362e618646SGerrit Uitslag        $this->oldSetting = $config_cascade['main']['default'];
372e618646SGerrit Uitslag        //add second file with defaults, which override the defaults of DokuWiki
382e618646SGerrit Uitslag        $config_cascade['main']['default'][] = $file;
392e618646SGerrit Uitslag
402e618646SGerrit Uitslag        parent::setUp();
412e618646SGerrit Uitslag    }
42*5d2c5d7eSGerrit Uitslag
432e618646SGerrit Uitslag    /**
442e618646SGerrit Uitslag     * Ensure loading the defaults work, and that the extra default for plugins provided via an extra main default file
452e618646SGerrit Uitslag     * override the plugin defaults as well
462e618646SGerrit Uitslag     */
47*5d2c5d7eSGerrit Uitslag    public function testDefaultsOverwriting()
48*5d2c5d7eSGerrit Uitslag    {
492e618646SGerrit Uitslag        $loader = new Loader(new ConfigParser());
502e618646SGerrit Uitslag
512e618646SGerrit Uitslag        $conf = $loader->loadDefaults();
522e618646SGerrit Uitslag        $this->assertTrue(is_array($conf));
532e618646SGerrit Uitslag
542e618646SGerrit Uitslag        // basic defaults
552e618646SGerrit Uitslag        $this->assertArrayHasKey('title', $conf);
562e618646SGerrit Uitslag        $this->assertEquals('New default Title', $conf['title']);
572e618646SGerrit Uitslag        $this->assertEquals('New default Tagline', $conf['tagline']);
582e618646SGerrit Uitslag
592e618646SGerrit Uitslag        // plugin defaults
602e618646SGerrit Uitslag        $this->assertArrayHasKey('plugin____testing____schnibble', $conf);
612e618646SGerrit Uitslag        $this->assertEquals(1, $conf['plugin____testing____schnibble']);
622e618646SGerrit Uitslag        $this->assertEquals('New default setting', $conf['plugin____testing____second']);
632e618646SGerrit Uitslag
642e618646SGerrit Uitslag    }
652e618646SGerrit Uitslag
662e618646SGerrit Uitslag    public function tearDown(): void
672e618646SGerrit Uitslag    {
682e618646SGerrit Uitslag        global $config_cascade;
692e618646SGerrit Uitslag
702e618646SGerrit Uitslag        $config_cascade['main']['default'] = $this->oldSetting;
712e618646SGerrit Uitslag        unlink(DOKU_CONF . 'otherdefaults.php');
722e618646SGerrit Uitslag
732e618646SGerrit Uitslag        parent::tearDown();
742e618646SGerrit Uitslag    }
752e618646SGerrit Uitslag
762e618646SGerrit Uitslag}
77