You are here

public function ConfigFilterStorageFactoryTest::testStorageFactory in Config Filter 8

Same name and namespace in other branches
  1. 8.2 tests/src/Kernel/ConfigFilterStorageFactoryTest.php \Drupal\Tests\config_filter\Kernel\ConfigFilterStorageFactoryTest::testStorageFactory()

Test the storage factory decorating properly.

File

tests/src/Kernel/ConfigFilterStorageFactoryTest.php, line 59

Class

ConfigFilterStorageFactoryTest
Storage factory test.

Namespace

Drupal\Tests\config_filter\Kernel

Code

public function testStorageFactory() {

  /** @var \Drupal\Core\Database\Connection $database */
  $database = $this->container
    ->get('database');
  $destination = new DatabaseStorage($database, 'config_filter_source_test');

  // The $filtered storage will have the simple split applied to the
  // destination storage, but is the unified storage.
  $filtered = $this->container
    ->get('config_filter.storage_factory')
    ->getFilteredStorage($destination, [
    'test_storage',
  ]);

  /** @var \Drupal\Core\Config\StorageInterface $active */
  $active = $this->container
    ->get('config.storage');

  // Export the configuration to the filtered storage.
  $this
    ->copyConfig($active, $filtered);

  // Get the storage of the test split plugin.
  $splitStorage = new DatabaseStorage($database, 'config_filter_split_test');

  // Assert that the storage is properly split.
  $this
    ->assertTrue(count($destination
    ->listAll()) > 0);
  $this
    ->assertTrue(count($splitStorage
    ->listAll()) > 0);
  $this
    ->assertEquals(count($active
    ->listAll()), count($destination
    ->listAll()) + count($splitStorage
    ->listAll()));
  $this
    ->assertEquals($active
    ->listAll('core'), $splitStorage
    ->listAll());
  $this
    ->assertEquals($active
    ->listAll('system'), $destination
    ->listAll('system'));
  $this
    ->assertEquals($active
    ->readMultiple($active
    ->listAll('core')), $splitStorage
    ->readMultiple($splitStorage
    ->listAll()));
  $this
    ->assertEquals($active
    ->readMultiple($active
    ->listAll('system')), $destination
    ->readMultiple($destination
    ->listAll('system')));

  // Reading from the $filtered storage returns the merged config.
  $this
    ->assertEquals($active
    ->listAll(), $filtered
    ->listAll());
  $this
    ->assertEquals($active
    ->readMultiple($active
    ->listAll()), $filtered
    ->readMultiple($filtered
    ->listAll()));
}