diff options
Diffstat (limited to 'modules/system/system.test')
-rw-r--r-- | modules/system/system.test | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/modules/system/system.test b/modules/system/system.test index 44768352d..bc5f5593f 100644 --- a/modules/system/system.test +++ b/modules/system/system.test @@ -318,6 +318,35 @@ class ModuleDependencyTestCase extends ModuleTestCase { $this->assertText(t('The configuration options have been saved.'), t('Modules status has been updated.')); $this->assertModules(array('taxonomy', 'forum'), TRUE); } + + /** + * Tests that module dependencies are enabled in the correct order via the + * UI. Dependencies should be enabled before their dependents. + */ + function testModuleEnableOrder() { + module_enable(array('module_test'), FALSE); + $this->resetAll(); + $this->assertModules(array('module_test'), TRUE); + variable_set('dependency_test', 'dependency'); + // module_test creates a dependency chain: forum depends on poll, which + // depends on php. The correct enable order is, php, poll, forum. + $expected_order = array('php', 'poll', 'forum'); + + // Enable the modules through the UI, verifying that the dependency chain + // is correct. + $edit = array(); + $edit['modules[Core][forum][enable]'] = 'forum'; + $this->drupalPost('admin/modules', $edit, t('Save configuration')); + $this->assertModules(array('forum'), FALSE); + $this->assertText(t('You must enable the Poll, PHP filter modules to install Forum.'), t('Dependency chain created.')); + $edit['modules[Core][poll][enable]'] = 'poll'; + $edit['modules[Core][php][enable]'] = 'php'; + $this->drupalPost('admin/modules', $edit, t('Save configuration')); + $this->assertModules(array('forum', 'poll', 'php'), TRUE); + + // Check the actual order which is saved by module_test_modules_enabled(). + $this->assertIdentical(variable_get('test_module_enable_order', FALSE), $expected_order, t('Modules enabled in the correct order.')); + } } /** |