Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / config / tests / src / Kernel / ConfigUninstallViaCliImportTest.php
diff --git a/web/core/modules/config/tests/src/Kernel/ConfigUninstallViaCliImportTest.php b/web/core/modules/config/tests/src/Kernel/ConfigUninstallViaCliImportTest.php
new file mode 100644 (file)
index 0000000..722546f
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+
+namespace Drupal\Tests\config\Kernel;
+
+use Drupal\Core\Config\ConfigImporter;
+use Drupal\Core\Config\StorageComparer;
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * Tests importing configuration from files into active configuration.
+ *
+ * @group config
+ */
+class ConfigUninstallViaCliImportTest extends KernelTestBase {
+  /**
+   * Config Importer object used for testing.
+   *
+   * @var \Drupal\Core\Config\ConfigImporter
+   */
+  protected $configImporter;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['system', 'config'];
+
+  protected function setUp() {
+    parent::setUp();
+    if (PHP_SAPI !== 'cli') {
+      $this->markTestSkipped('This test has to be run from the CLI');
+    }
+
+    $this->installConfig(['system']);
+    $this->copyConfig($this->container->get('config.storage'), $this->container->get('config.storage.sync'));
+
+    // Set up the ConfigImporter object for testing.
+    $storage_comparer = new StorageComparer(
+      $this->container->get('config.storage.sync'),
+      $this->container->get('config.storage'),
+      $this->container->get('config.manager')
+    );
+    $this->configImporter = new ConfigImporter(
+      $storage_comparer->createChangelist(),
+      $this->container->get('event_dispatcher'),
+      $this->container->get('config.manager'),
+      $this->container->get('lock'),
+      $this->container->get('config.typed'),
+      $this->container->get('module_handler'),
+      $this->container->get('module_installer'),
+      $this->container->get('theme_handler'),
+      $this->container->get('string_translation')
+    );
+  }
+
+  /**
+   * Tests that the config module can be uninstalled via CLI config import.
+   *
+   * @see \Drupal\config\ConfigSubscriber
+   */
+  public function testConfigUninstallViaCli() {
+    $this->assertTrue($this->container->get('module_handler')->moduleExists('config'));
+    $sync = $this->container->get('config.storage.sync');
+    $extensions = $sync->read('core.extension');
+    unset($extensions['module']['config']);
+    $sync->write('core.extension', $extensions);
+    $this->configImporter->reset()->import();
+    $this->assertFalse($this->container->get('module_handler')->moduleExists('config'));
+  }
+
+}