Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / tests / Drupal / FunctionalTests / Installer / InstallProfileDependenciesTest.php
diff --git a/web/core/tests/Drupal/FunctionalTests/Installer/InstallProfileDependenciesTest.php b/web/core/tests/Drupal/FunctionalTests/Installer/InstallProfileDependenciesTest.php
new file mode 100644 (file)
index 0000000..4ceb7f8
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+namespace Drupal\FunctionalTests\Installer;
+
+use Drupal\Core\Extension\ModuleUninstallValidatorException;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Tests that an install profile can require modules.
+ *
+ * @group Installer
+ */
+class InstallProfileDependenciesTest extends BrowserTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $profile = 'testing_install_profile_dependencies';
+
+  /**
+   * Tests that an install profile can require modules.
+   */
+  public function testUninstallingModules() {
+    $user = $this->drupalCreateUser(['administer modules']);
+    $this->drupalLogin($user);
+    $this->drupalGet('admin/modules/uninstall');
+    $this->assertSession()->fieldDisabled('uninstall[dblog]');
+    $this->getSession()->getPage()->checkField('uninstall[ban]');
+    $this->click('#edit-submit');
+    // Click the confirm button.
+    $this->click('#edit-submit');
+    $this->assertSession()->responseContains('The selected modules have been uninstalled.');
+    // We've uninstalled a module therefore we need to rebuild the container in
+    // the test runner.
+    $this->rebuildContainer();
+    $this->assertFalse($this->container->get('module_handler')->moduleExists('ban'));
+    try {
+      $this->container->get('module_installer')->uninstall(['dblog']);
+      $this->fail('Uninstalled dblog module.');
+    }
+    catch (ModuleUninstallValidatorException $e) {
+      $this->assertContains('The Testing install profile dependencies module is required', $e->getMessage());
+    }
+  }
+
+}