function SystemInfoAlterTestCase::testSystemInfoAlter

7.x system.test SystemInfoAlterTestCase::testSystemInfoAlter()

Tests that {system}.info is rebuilt after a module that implements hook_system_info_alter() is enabled. Also tests if core *_list() functions return freshly altered info.

File

drupal-7.x/modules/system/system.test, line 2147
Tests for system.module.

Class

SystemInfoAlterTestCase
Tests the effectiveness of hook_system_info_alter().

Code

function testSystemInfoAlter() {
  // Enable our test module. Flush all caches, which we assert is the only
  // thing necessary to use the rebuilt {system}.info.
  module_enable(array('module_test'), FALSE);
  drupal_flush_all_caches();
  $this->assertTrue(module_exists('module_test'), 'Test module is enabled.');

  $info = $this->getSystemInfo('seven', 'theme');
  $this->assertTrue(isset($info['regions']['test_region']), 'Altered theme info was added to {system}.info.');
  $seven_regions = system_region_list('seven');
  $this->assertTrue(isset($seven_regions['test_region']), 'Altered theme info was returned by system_region_list().');
  $system_list_themes = system_list('theme');
  $info = $system_list_themes['seven']->info;
  $this->assertTrue(isset($info['regions']['test_region']), 'Altered theme info was returned by system_list().');
  $list_themes = list_themes();
  $this->assertTrue(isset($list_themes['seven']->info['regions']['test_region']), 'Altered theme info was returned by list_themes().');

  // Disable the module and verify that {system}.info is rebuilt without it.
  module_disable(array('module_test'), FALSE);
  drupal_flush_all_caches();
  $this->assertFalse(module_exists('module_test'), 'Test module is disabled.');

  $info = $this->getSystemInfo('seven', 'theme');
  $this->assertFalse(isset($info['regions']['test_region']), 'Altered theme info was removed from {system}.info.');
  $seven_regions = system_region_list('seven');
  $this->assertFalse(isset($seven_regions['test_region']), 'Altered theme info was not returned by system_region_list().');
  $system_list_themes = system_list('theme');
  $info = $system_list_themes['seven']->info;
  $this->assertFalse(isset($info['regions']['test_region']), 'Altered theme info was not returned by system_list().');
  $list_themes = list_themes();
  $this->assertFalse(isset($list_themes['seven']->info['regions']['test_region']), 'Altered theme info was not returned by list_themes().');
}