function ConfigTest::testOverrideData

Same name in other branches
  1. 9 core/tests/Drupal/Tests/Core/Config/ConfigTest.php \Drupal\Tests\Core\Config\ConfigTest::testOverrideData()
  2. 8.9.x core/tests/Drupal/Tests/Core/Config/ConfigTest.php \Drupal\Tests\Core\Config\ConfigTest::testOverrideData()
  3. 11.x core/tests/Drupal/Tests/Core/Config/ConfigTest.php \Drupal\Tests\Core\Config\ConfigTest::testOverrideData()

@covers ::setModuleOverride @covers ::setSettingsOverride @covers ::getOriginal @covers ::hasOverrides @dataProvider overrideDataProvider

File

core/tests/Drupal/Tests/Core/Config/ConfigTest.php, line 186

Class

ConfigTest
Tests the Config.

Namespace

Drupal\Tests\Core\Config

Code

public function testOverrideData($data, $module_data, $setting_data) : void {
    // Set initial data.
    $this->config
        ->setData($data);
    // Check original data was set correctly.
    $this->assertConfigDataEquals($data);
    // Save so that the original data is stored.
    $this->config
        ->save();
    $this->assertFalse($this->config
        ->hasOverrides());
    $this->assertOverriddenKeys($data, []);
    // Set module override data and check value before and after save.
    $this->config
        ->setModuleOverride($module_data);
    $this->assertConfigDataEquals($module_data);
    $this->assertOverriddenKeys($data, $module_data);
    $this->config
        ->save();
    $this->assertConfigDataEquals($module_data);
    $this->assertOverriddenKeys($data, $module_data);
    // Reset the module overrides.
    $this->config
        ->setModuleOverride([]);
    $this->assertOverriddenKeys($data, []);
    // Set setting override data and check value before and after save.
    $this->config
        ->setSettingsOverride($setting_data);
    $this->assertConfigDataEquals($setting_data);
    $this->assertOverriddenKeys($data, $setting_data);
    $this->config
        ->save();
    $this->assertConfigDataEquals($setting_data);
    $this->assertOverriddenKeys($data, $setting_data);
    // Set module overrides again to ensure override order is correct.
    $this->config
        ->setModuleOverride($module_data);
    $merged_overrides = array_merge($module_data, $setting_data);
    // Setting data should be overriding module data.
    $this->assertConfigDataEquals($setting_data);
    $this->assertOverriddenKeys($data, $merged_overrides);
    $this->config
        ->save();
    $this->assertConfigDataEquals($setting_data);
    $this->assertOverriddenKeys($data, $merged_overrides);
    // Check original data has not changed.
    $this->assertOriginalConfigDataEquals($data, FALSE);
    // Check setting overrides are returned with $apply_overrides = TRUE.
    $this->assertOriginalConfigDataEquals($setting_data, TRUE);
    // Check that $apply_overrides defaults to TRUE.
    foreach ($setting_data as $key => $value) {
        $config_value = $this->config
            ->getOriginal($key);
        $this->assertEquals($value, $config_value);
    }
    // Check that the overrides can be completely reset.
    $this->config
        ->setModuleOverride([]);
    $this->config
        ->setSettingsOverride([]);
    $this->assertConfigDataEquals($data);
    $this->assertOverriddenKeys($data, []);
    $this->config
        ->save();
    $this->assertConfigDataEquals($data);
    $this->assertOverriddenKeys($data, []);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.