You are here

public function TestSubContext::moduleHasDependencyAtKey in Panopoly 8.2

Same name and namespace in other branches
  1. 7 modules/panopoly/panopoly_test/behat/steps/panopoly_test.behat.inc \TestSubContext::moduleHasDependencyAtKey()

Checks that module has given dependency.

@Given :module has the :dependency dependency at position :key

File

modules/panopoly/panopoly_test/behat/steps/panopoly_test.behat.inc, line 1091
Provide Behat step-definitions for generic Panopoly tests.

Class

TestSubContext
Behat sub-context for Panopoly.

Code

public function moduleHasDependencyAtKey($module, $dependency, $key) {
  $module_handler = \Drupal::moduleHandler();
  if (!$module_handler
    ->moduleExists($module)) {
    throw new \Exception("{$module} is not enabled.");
  }

  // Handle namespaced dependencies.
  $dependency_extension_name = $dependency;
  if (strpos($dependency, ':') !== FALSE) {
    [
      ,
      $dependency_extension_name,
    ] = explode(':', $dependency, 2);
  }
  if (!$module_handler
    ->moduleExists($dependency_extension_name)) {
    throw new \Exception("{$dependency_extension_name} is not enabled.");
  }
  $extension = $module_handler
    ->getModule($module);
  $info_parser = \Drupal::service('info_parser');
  assert($info_parser instanceof InfoParser);
  $info = $info_parser
    ->parse($extension
    ->getPathname());
  if ($info['dependencies'][$key] !== $dependency) {
    var_export($info);
    throw new \Exception("{$module} did not have {$dependency} dependency at {$key} position");
  }
}