View source
<?php
namespace Drupal\Tests\config_split\Kernel;
use Drupal\Core\Config\MemoryStorage;
use Drupal\KernelTests\KernelTestBase;
use Drupal\Tests\config_filter\Kernel\ConfigStorageTestTrait;
class InactiveSplitTest extends KernelTestBase {
use ConfigStorageTestTrait;
use SplitTestTrait;
public static $modules = [
'system',
'config_split',
];
protected function setUp() : void {
parent::setUp();
$this
->installConfig([
'system',
]);
}
public function testActiveInactive() {
$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();
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));
$this
->copyConfig($expectedExport, $this
->getSyncFileStorage());
$this
->copyConfig($expectedAccount, $this
->getSplitSourceStorage($account));
$this
->copyConfig($expectedAdmin, $this
->getSplitSourceStorage($admin));
static::assertStorageEquals($active, $this
->getImportStorage());
$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);
$expectedImport
->delete('system.menu.account');
static::assertStorageEquals($expectedImport, $this
->getImportStorage());
}
}