function ModuleApiTest::testModuleList

The basic functionality of retrieving enabled modules.

File

drupal/core/modules/system/lib/Drupal/system/Tests/Module/ModuleApiTest.php, line 30
Definition of Drupal\system\Tests\Module\ModuleApiTest.

Class

ModuleApiTest
Unit tests for the module API.

Namespace

Drupal\system\Tests\Module

Code

function testModuleList() {

  // Build a list of modules, sorted alphabetically.
  $profile_info = install_profile_info('standard', 'en');
  $module_list = $profile_info['dependencies'];

  // Installation profile is a module that is expected to be loaded.
  $module_list[] = 'standard';
  sort($module_list);

  // Compare this list to the one returned by the extension handler. We expect
  // them to match, since all default profile modules have a weight equal to 0
  // (except for block.module, which has a lower weight but comes first in
  // the alphabet anyway).
  $this
    ->assertModuleList($module_list, t('Standard profile'));

  // Try to install a new module.
  module_enable(array(
    'ban',
  ));
  $module_list[] = 'ban';
  sort($module_list);
  $this
    ->assertModuleList($module_list, t('After adding a module'));

  // Try to mess with the module weights.
  module_set_weight('ban', 20);

  // Move ban to the end of the array.
  unset($module_list[array_search('ban', $module_list)]);
  $module_list[] = 'ban';
  $this
    ->assertModuleList($module_list, t('After changing weights'));

  // Test the fixed list feature.
  $fixed_list = array(
    'system' => 'core/modules/system/system.module',
    'menu' => 'core/modules/menu/menu.module',
  );
  $this->container
    ->get('module_handler')
    ->setModuleList($fixed_list);
  $new_module_list = array_combine(array_keys($fixed_list), array_keys($fixed_list));
  $this
    ->assertModuleList($new_module_list, t('When using a fixed list'));
}