[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/lib/plugins/config/_test/ -> LoaderExtraDefaultsTest.php (source)

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