diff options
author | Dries Buytaert <dries@buytaert.net> | 2009-01-14 12:18:37 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2009-01-14 12:18:37 +0000 |
commit | a10731cedf6acb9acabaed2ad3c8fe6ce4816ae9 (patch) | |
tree | 24709e6694cdbe5046776bc1c920298cbabc0b50 /modules/system/system.test | |
parent | dba81743a6e1e8178801f11ead577978581b74ca (diff) | |
download | brdo-a10731cedf6acb9acabaed2ad3c8fe6ce4816ae9.tar.gz brdo-a10731cedf6acb9acabaed2ad3c8fe6ce4816ae9.tar.bz2 |
- Patch #320451 by chx, Damien Tournoud: improved Drupal's module dependency system. This helps with fields in core. Comes with tests\!
Diffstat (limited to 'modules/system/system.test')
-rw-r--r-- | modules/system/system.test | 128 |
1 files changed, 80 insertions, 48 deletions
diff --git a/modules/system/system.test b/modules/system/system.test index d9577f669..f2a684514 100644 --- a/modules/system/system.test +++ b/modules/system/system.test @@ -1,28 +1,69 @@ <?php // $Id$ -class EnableDisableCoreTestCase extends DrupalWebTestCase { +/** + * Helper class for module test cases. + */ +class ModuleTestCase extends DrupalWebTestCase { protected $admin_user; + function setUp() { + parent::setUp('system_test'); + + $this->admin_user = $this->drupalCreateUser(array('access administration pages', 'administer site configuration')); + $this->drupalLogin($this->admin_user); + } + /** - * Implementation of getInfo(). + * Assert there are tables that begin with the specified base table name. + * + * @param $base_table + * Beginning of table name to look for. + * @param $count + * (optional) Whether or not to assert that there are tables that match the + * specified base table. Defaults to TRUE. */ - function getInfo() { - return array( - 'name' => t('Module list functionality'), - 'description' => t('Enable/disable core module and confirm table creation/deletion. Enable module without dependency enabled. Attempt disabling of required modules.'), - 'group' => t('System') - ); + function assertTableCount($base_table, $count = TRUE) { + $tables = db_find_tables(Database::getActiveConnection()->prefixTables('{' . $base_table . '}') . '%'); + + if ($count) { + return $this->assertTrue($tables, t('Tables matching "@base_table" found.', array('@base_table' => $base_table))); + } + return $this->assertFalse($tables, t('Tables matching "@base_table" not found.', array('@base_table' => $base_table))); } /** - * Implementation of setUp(). + * Assert the list of modules are enabled or disabled. + * + * @param $modules + * Module list to check. + * @param $enabled + * Expected module state. */ - function setUp() { - parent::setUp('system_test'); + function assertModules(array $modules, $enabled) { + module_list(TRUE); + foreach ($modules as $module) { + if ($enabled) { + $message = 'Module "@module" is enabled.'; + } + else { + $message = 'Module "@module" is not enabled.'; + } + $this->assertEqual(module_exists($module), $enabled, t($message, array('@module' => $module))); + } + } +} - $this->admin_user = $this->drupalCreateUser(array('access administration pages', 'administer site configuration')); - $this->drupalLogin($this->admin_user); +/** + * Test module enabling/disabling functionality. + */ +class EnableDisableTestCase extends ModuleTestCase { + function getInfo() { + return array( + 'name' => t('Enable/disable modules'), + 'description' => t('Enable/disable core module and confirm table creation/deletion.'), + 'group' => t('Module'), + ); } /** @@ -71,6 +112,19 @@ class EnableDisableCoreTestCase extends DrupalWebTestCase { $this->assertModules(array('aggregator'), FALSE); $this->assertTableCount('aggregator', FALSE); } +} + +/** + * Test module dependency functionality. + */ +class ModuleDependencyTestCase extends ModuleTestCase { + function getInfo() { + return array( + 'name' => t('Module dependencies'), + 'description' => t('Enable module without dependency enabled.'), + 'group' => t('Module'), + ); + } /** * Attempt to enable translation module without locale enabled. @@ -97,6 +151,19 @@ class EnableDisableCoreTestCase extends DrupalWebTestCase { $this->assertTableCount('languages', TRUE); $this->assertTableCount('locale', TRUE); } +} + +/** + * Test required modules functionality. + */ +class ModuleRequiredTestCase extends ModuleTestCase { + function getInfo() { + return array( + 'name' => t('Required modules'), + 'description' => t('Attempt disabling of required modules.'), + 'group' => t('Module'), + ); + } /** * Assert that core required modules cannot be disabled. @@ -109,41 +176,6 @@ class EnableDisableCoreTestCase extends DrupalWebTestCase { $this->assertNoFieldByName('modules[Core][' . $module . '][enable]'); } } - - /** - * Assert tables that begin with the specified base table name. - * - * @param string $base_table Beginning of table name to look for. - * @param boolean $count Assert tables that match specified base table. - * @return boolean Tables with specified base table. - */ - function assertTableCount($base_table, $count) { - $tables = db_find_tables(Database::getActiveConnection()->prefixTables('{' . $base_table . '}') . '%'); - - if ($count) { - return $this->assertTrue($tables, t('Tables matching "@base_table" found.', array('@base_table' => $base_table))); - } - return $this->assertFalse($tables, t('Tables matching "@base_table" not found.', array('@base_table' => $base_table))); - } - - /** - * Assert the list of modules are enabled or disabled. - * - * @param array $modules Modules to check. - * @param boolean $enabled Module state. - */ - function assertModules(array $modules, $enabled) { - module_list(TRUE); - foreach ($modules as $module) { - if ($enabled) { - $message = 'Module "@module" is enabled.'; - } - else { - $message = 'Module "@module" is not enabled.'; - } - $this->assertEqual(module_exists($module), $enabled, t($message, array('@module' => $module))); - } - } } class IPAddressBlockingTestCase extends DrupalWebTestCase { |