function EnabledExtensionsValidatorTest::testExtensionRemoved

Tests that error is raised if Drupal modules, profiles or themes are removed.

@dataProvider providerExtensionRemoved

Parameters

array $packages: Packages that will be added to the active directory, and removed from the stage directory.

\Drupal\package_manager\ValidationResult[] $expected_results: The expected validation results.

File

core/modules/package_manager/tests/src/Kernel/EnabledExtensionsValidatorTest.php, line 102

Class

EnabledExtensionsValidatorTest
@covers \Drupal\package_manager\Validator\EnabledExtensionsValidator[[api-linebreak]] @group package_manager @internal

Namespace

Drupal\Tests\package_manager\Kernel

Code

public function testExtensionRemoved(array $packages, array $expected_results) : void {
  $project_root = $this->container
    ->get(PathLocator::class)
    ->getProjectRoot();
  $this->installComposerInstallers($project_root);
  $active_manipulator = new ActiveFixtureManipulator();
  $stage_manipulator = $this->getStageFixtureManipulator();
  foreach ($packages as $package) {
    $active_manipulator->addPackage($package, FALSE, TRUE);
    $stage_manipulator->removePackage($package['name']);
  }
  $active_manipulator->commitChanges();
  foreach ($packages as $package) {
    $extension_name = str_replace('drupal/', '', $package['name']);
    $extension = self::createExtension($project_root, $package['type'], $extension_name);
    if ($extension->getType() === 'theme') {
      /** @var \Drupal\Core\Extension\ThemeHandlerInterface $theme_handler */
      $theme_handler = $this->container
        ->get('theme_handler');
      $theme_handler->addTheme($extension);
      $this->assertArrayHasKey($extension_name, $theme_handler->listInfo());
    }
    else {
      /** @var \Drupal\Core\Extension\ModuleHandlerInterface $module_handler */
      $module_handler = $this->container
        ->get('module_handler');
      $module_list = $module_handler->getModuleList();
      $module_list[$extension_name] = $extension;
      $module_handler->setModuleList($module_list);
      $this->assertArrayHasKey($extension_name, $module_handler->getModuleList());
    }
  }
  $this->assertResults($expected_results, PreApplyEvent::class);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.