You are here

public function InactiveSplitTest::testActiveInactive in Configuration Split 2.0.x

Test.

File

tests/src/Kernel/InactiveSplitTest.php, line 41

Class

InactiveSplitTest
Test active and inactive splits.

Namespace

Drupal\Tests\config_split\Kernel

Code

public function testActiveInactive() {

  // Simple split with default configuration.
  $account = $this
    ->createSplitConfig('account', [
    'complete_list' => [
      'system.menu.account',
    ],
    'status' => TRUE,
  ]);
  $admin = $this
    ->createSplitConfig('admin', [
    'complete_list' => [
      'system.menu.admin',
    ],
    'status' => FALSE,
  ]);
  $active = $this
    ->getActiveStorage();
  $expectedExport = new MemoryStorage();
  $expectedAccount = new MemoryStorage();
  $expectedAdmin = new MemoryStorage();

  // Set up expectations.
  foreach ($active
    ->listAll() as $name) {
    $data = $active
      ->read($name);
    if ($name === 'system.menu.account') {
      $expectedAccount
        ->write($name, $data);
    }
    else {
      $expectedExport
        ->write($name, $data);
    }
  }
  $export = $this
    ->getExportStorage();
  static::assertStorageEquals($expectedExport, $export);
  static::assertStorageEquals($expectedAccount, $this
    ->getSplitPreviewStorage($account, $export));
  static::assertStorageEquals($expectedAdmin, $this
    ->getSplitPreviewStorage($admin, $export));

  // Write the export to the file system and assert the import to work.
  $this
    ->copyConfig($expectedExport, $this
    ->getSyncFileStorage());
  $this
    ->copyConfig($expectedAccount, $this
    ->getSplitSourceStorage($account));
  $this
    ->copyConfig($expectedAdmin, $this
    ->getSplitSourceStorage($admin));
  static::assertStorageEquals($active, $this
    ->getImportStorage());

  // Override the status of the split.
  $GLOBALS['config'][$account
    ->getName()]['status'] = FALSE;
  $GLOBALS['config'][$admin
    ->getName()]['status'] = TRUE;
  $this->container
    ->get('config.factory')
    ->clearStaticCache();
  $expectedAdmin
    ->write('system.menu.admin', $active
    ->read('system.menu.admin'));
  $expectedExport
    ->delete('system.menu.admin');
  $expectedExport
    ->write('system.menu.account', $active
    ->read('system.menu.account'));
  $export = $this
    ->getExportStorage();
  static::assertStorageEquals($expectedExport, $export);
  static::assertStorageEquals($expectedAccount, $this
    ->getSplitPreviewStorage($account, $export));
  static::assertStorageEquals($expectedAdmin, $this
    ->getSplitPreviewStorage($admin, $export));
  $expectedImport = new MemoryStorage();
  $this
    ->copyConfig($active, $expectedImport);

  // We exported for real only before the config override, now the account
  // split is turned off.
  $expectedImport
    ->delete('system.menu.account');
  static::assertStorageEquals($expectedImport, $this
    ->getImportStorage());
}