diff --git a/core/modules/system/system.test b/core/modules/system/system.test index 16348cc..7026265 100644 --- a/core/modules/system/system.test +++ b/core/modules/system/system.test @@ -709,6 +709,55 @@ class ModuleRequiredTestCase extends ModuleTestCase { } } +/** + * Tests the modules administration page. + */ +class ModulesAdministrationPageTestCase extends DrupalWebTestCase { + public static function getInfo() { + return array( + 'name' => 'Modules administration page', + 'description' => 'Tests the modules administration page', + 'group' => 'System', + ); + } + + protected $admin_user; + + function setUp() { + parent::setUp(); + + $this->admin_user = $this->drupalCreateUser(array('administer modules')); + } + + /** + * Tests linking between modules. + */ + function testLinking() { + $this->drupalLogin($this->admin_user); + $this->drupalGet('admin/modules'); + + // Get the row of the field module. + $field_module_row = $this->xpath('//input[@name="modules[Core][field][enable]"]/ancestor::tr'); + $field_module_row = $field_module_row[0]; + + // Get the divs that have the requirements. + $requirements_divs = $field_module_row->xpath('descendant::div[contains(@class, "admin-requirements")]'); + $requires_div = $requirements_divs[0]; + $required_by_div = $requirements_divs[1]; + + // The Field SQL storage module is linked as a dependency. + $field_sql_storage_link = $requires_div->xpath('a[@href="#module-field_sql_storage"]'); + $this->assertEqual($field_sql_storage_link[0][0], 'Field SQL Storage'); + + // The target anchor exists. + $this->assertFieldByXPath('//a[@name="module-field_sql_storage"]'); + + // The Field UI module is linked as 'Required by'. + $field_ui_link = $required_by_div->xpath('a[@href="#module-field_ui"]'); + $this->assertEqual($field_ui_link[0][0], 'Field UI'); + } +} + class IPAddressBlockingTestCase extends DrupalWebTestCase { protected $blocking_user;