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