You are here

public function ConfigImporterTest::testIsSyncingInHooks in Drupal 9

Same name and namespace in other branches
  1. 8 core/tests/Drupal/KernelTests/Core/Config/ConfigImporterTest.php \Drupal\KernelTests\Core\Config\ConfigImporterTest::testIsSyncingInHooks()

Tests the isSyncing flags.

File

core/tests/Drupal/KernelTests/Core/Config/ConfigImporterTest.php, line 744

Class

ConfigImporterTest
Tests importing configuration from files into active configuration.

Namespace

Drupal\KernelTests\Core\Config

Code

public function testIsSyncingInHooks() {
  $dynamic_name = 'config_test.dynamic.dotted.default';
  $storage = $this->container
    ->get('config.storage');

  // Verify the default configuration values exist.
  $config = $this
    ->config($dynamic_name);
  $this
    ->assertSame('dotted.default', $config
    ->get('id'));

  // Delete the config so that create hooks will fire.
  $storage
    ->delete($dynamic_name);
  \Drupal::state()
    ->set('config_test.store_isSyncing', []);
  $this->configImporter
    ->reset()
    ->import();

  // The values of the syncing values should be stored in state by
  // config_test_config_test_create().
  $state = \Drupal::state()
    ->get('config_test.store_isSyncing');
  $this
    ->assertTrue($state['global_state::create'], '\\Drupal::isConfigSyncing() returns TRUE');
  $this
    ->assertTrue($state['entity_state::create'], 'ConfigEntity::isSyncing() returns TRUE');
  $this
    ->assertTrue($state['global_state::presave'], '\\Drupal::isConfigSyncing() returns TRUE');
  $this
    ->assertTrue($state['entity_state::presave'], 'ConfigEntity::isSyncing() returns TRUE');
  $this
    ->assertTrue($state['global_state::insert'], '\\Drupal::isConfigSyncing() returns TRUE');
  $this
    ->assertTrue($state['entity_state::insert'], 'ConfigEntity::isSyncing() returns TRUE');

  // Cause a config update so update hooks will fire.
  $config = $this
    ->config($dynamic_name);
  $config
    ->set('label', 'A new name')
    ->save();
  \Drupal::state()
    ->set('config_test.store_isSyncing', []);
  $this->configImporter
    ->reset()
    ->import();

  // The values of the syncing values should be stored in state by
  // config_test_config_test_create().
  $state = \Drupal::state()
    ->get('config_test.store_isSyncing');
  $this
    ->assertTrue($state['global_state::presave'], '\\Drupal::isConfigSyncing() returns TRUE');
  $this
    ->assertTrue($state['entity_state::presave'], 'ConfigEntity::isSyncing() returns TRUE');
  $this
    ->assertTrue($state['global_state::update'], '\\Drupal::isConfigSyncing() returns TRUE');
  $this
    ->assertTrue($state['entity_state::update'], 'ConfigEntity::isSyncing() returns TRUE');

  // Cause a config delete so delete hooks will fire.
  $sync = $this->container
    ->get('config.storage.sync');
  $sync
    ->delete($dynamic_name);
  \Drupal::state()
    ->set('config_test.store_isSyncing', []);
  $this->configImporter
    ->reset()
    ->import();

  // The values of the syncing values should be stored in state by
  // config_test_config_test_create().
  $state = \Drupal::state()
    ->get('config_test.store_isSyncing');
  $this
    ->assertTrue($state['global_state::predelete'], '\\Drupal::isConfigSyncing() returns TRUE');
  $this
    ->assertTrue($state['entity_state::predelete'], 'ConfigEntity::isSyncing() returns TRUE');
  $this
    ->assertTrue($state['global_state::delete'], '\\Drupal::isConfigSyncing() returns TRUE');
  $this
    ->assertTrue($state['entity_state::delete'], 'ConfigEntity::isSyncing() returns TRUE');
}