class TestModuleContext in Lightning Core 8.2
Same name and namespace in other branches
- 8.5 tests/contexts/TestModuleContext.behat.inc \Acquia\LightningExtension\Context\TestModuleContext
- 8 tests/contexts/TestModuleContext.behat.inc \Acquia\LightningExtension\Context\TestModuleContext
- 8.3 tests/contexts/TestModuleContext.behat.inc \Acquia\LightningExtension\Context\TestModuleContext
- 8.4 tests/contexts/TestModuleContext.behat.inc \Acquia\LightningExtension\Context\TestModuleContext
Allows test modules to be installed during a scenario and uninstalled after.
@internal This class is part of Lightning's internal testing code. It is not an API and should not be extended. This class will be marked final, and all protected members will be made private, in Lightning Core 3.x.
Hierarchy
- class \Acquia\LightningExtension\Context\TestModuleContext extends \Drupal\DrupalExtension\Context\DrupalSubContextBase
Expanded class hierarchy of TestModuleContext
File
- tests/
contexts/ TestModuleContext.behat.inc, line 19
Namespace
Acquia\LightningExtension\ContextView source
class TestModuleContext extends DrupalSubContextBase {
/**
* Determines the test modules to install during the scenario.
*
* @param ScenarioScope $scope
* The current scenario scope.
*
* @return string[]
* The test modules to install.
*/
protected function getModules(ScenarioScope $scope) {
$modules = [];
$tags = array_merge($scope
->getFeature()
->getTags(), $scope
->getScenario()
->getTags());
foreach ($tags as $tag) {
if (strpos($tag, 'with-module:') === 0) {
$modules[] = substr($tag, 12);
}
}
return array_unique($modules);
}
/**
* Installs test modules for this scenario.
*
* @param BeforeScenarioScope $scope
* The scenario scope.
*
* @BeforeScenario
*/
public function install(BeforeScenarioScope $scope) {
$modules = $this
->getModules($scope);
if ($modules) {
$this
->getDriver()
->bootstrap();
// Ensure that test directories are scanned for modules.
$settings = Settings::getAll();
$settings['extension_discovery_scan_tests'] = TRUE;
new Settings($settings);
\Drupal::service('module_installer')
->install($modules);
}
}
/**
* Uninstalls any test modules installed for the scenario.
*
* @param AfterScenarioScope $scope
* The scenario scope.
*
* @AfterScenario
*/
public function uninstall(AfterScenarioScope $scope) {
$modules = $this
->getModules($scope);
if ($modules) {
\Drupal::service('module_installer')
->uninstall($modules);
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
TestModuleContext:: |
protected | function | Determines the test modules to install during the scenario. | |
TestModuleContext:: |
public | function | Installs test modules for this scenario. | |
TestModuleContext:: |
public | function | Uninstalls any test modules installed for the scenario. |