View source
<?php
class SimplifiedModulesTestCase extends DrupalWebTestCase {
protected $admin_user;
public static function getInfo() {
return array(
'name' => 'Enable/disable hidden submodules and dependencies',
'description' => 'Test that hidden submodules and dependencies are automatically enabled and disabled when appropriate.',
'group' => 'Simplified modules',
);
}
function setUp() {
parent::setUp(array(
'simplified_modules',
'simplified_modules_test',
));
$this->admin_user = $this
->drupalCreateUser(array(
'access administration pages',
'administer modules',
));
$this
->drupalLogin($this->admin_user);
}
function testEnableDisableHiddenSubModule() {
variable_set('simplified_modules_test_submodules', TRUE);
$this
->setModuleStatus(array(
'forum' => FALSE,
'poll' => FALSE,
));
$this
->assertFalse(module_exists('simplified_modules_test_submodule'), t('The submodule starts off as disabled.'));
$this
->setModuleStatus(array(
'forum' => TRUE,
'poll' => TRUE,
));
$this
->assertTrue(module_exists('simplified_modules_test_submodule'), t('The submodule was automatically enabled.'));
$this
->setModuleStatus(array(
'forum' => FALSE,
));
$this
->assertFalse(module_exists('simplified_modules_test_submodule'), t('The submodule was automatically disabled.'));
$this
->setModuleStatus(array(
'forum' => TRUE,
'poll' => FALSE,
));
$this
->assertFalse(module_exists('simplified_modules_test_submodule'), t('The submodule remained disabled since its dependencies were not both enabled.'));
$this
->setModuleStatus(array(
'poll' => TRUE,
));
$this
->assertTrue(module_exists('simplified_modules_test_submodule'), t('The submodule was automatically enabled.'));
}
function testDisableSimplifiedModules() {
variable_set('simplified_modules_test_submodules', TRUE);
$this
->setModuleStatus(array(
'forum' => TRUE,
'poll' => TRUE,
));
$this
->assertTrue(module_exists('simplified_modules_test_submodule'), t('The submodule was automatically enabled.'));
$this
->setModuleStatus(array(
'forum' => FALSE,
'simplified_modules' => FALSE,
));
$this
->assertFalse(module_exists('simplified_modules_test_submodule'), t('The submodule was automatically disabled even while the Simplified Modules module was also being disabled.'));
}
function testAutoEnableHiddenDependencies() {
$this
->setModuleStatus(array(
'forum' => FALSE,
'poll' => FALSE,
));
variable_set('simplified_modules_test_dependencies', TRUE);
$this
->setModuleStatus(array(
'simplified_modules_test_submodule' => TRUE,
));
$this
->assertTrue(module_exists('forum') && module_exists('poll'), t('The hidden dependencies were automatically enabled.'));
$this
->setModuleStatus(array(
'simplified_modules_test_submodule' => FALSE,
));
$this
->assertTrue(!module_exists('forum') && !module_exists('poll'), t('The hidden dependencies were automatically disabled.'));
}
function testCombinedSubModulesAndDependencies() {
$this
->setModuleStatus(array(
'blog' => FALSE,
'forum' => FALSE,
'poll' => FALSE,
));
variable_set('simplified_modules_test_both', TRUE);
$this
->setModuleStatus(array(
'simplified_modules_test_submodule' => TRUE,
));
$this
->assertTrue(module_exists('forum') && module_exists('poll') && module_exists('blog'), t('The hidden dependencies and their hidden submodules were automatically enabled.'));
$this
->setModuleStatus(array(
'simplified_modules_test_submodule' => FALSE,
));
$this
->assertTrue(!module_exists('forum') && !module_exists('poll') && !module_exists('blog'), t('The hidden dependencies and their hidden submodules were automatically disabled.'));
}
function setModuleStatus($module_info) {
$edit = array();
foreach ($module_info as $module => $status) {
$info = unserialize(db_query('SELECT info FROM {system} WHERE name = :name', array(
':name' => $module,
))
->fetchField());
$group = $info['package'];
$edit["modules[{$group}][{$module}][enable]"] = $status;
}
$this
->drupalPost('admin/modules', $edit, t('Save configuration'));
module_list(TRUE);
foreach ($module_info as $module => $status) {
if ($status) {
$this
->assertTrue(module_exists($module), t('The @module module is enabled.', array(
'@module' => $module,
)));
}
else {
$this
->assertFalse(module_exists($module), t('The @module module is disabled.', array(
'@module' => $module,
)));
}
}
}
}