diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-02-26 18:31:29 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-02-26 18:31:29 +0000 |
commit | f6b166ff23faa3ab8a2f643394842710dbecfd3d (patch) | |
tree | 871c742fb8e120901ec941b9062109df36d9c593 /modules/simpletest/tests | |
parent | bc70eaeb8ddd78022ea6831ccb2e49b9cb653069 (diff) | |
download | brdo-f6b166ff23faa3ab8a2f643394842710dbecfd3d.tar.gz brdo-f6b166ff23faa3ab8a2f643394842710dbecfd3d.tar.bz2 |
- Patch #620298 by David_Rothstein: schema not available in hook_install().
Diffstat (limited to 'modules/simpletest/tests')
-rw-r--r-- | modules/simpletest/tests/module.test | 40 | ||||
-rw-r--r-- | modules/simpletest/tests/module_test.install | 43 |
2 files changed, 82 insertions, 1 deletions
diff --git a/modules/simpletest/tests/module.test b/modules/simpletest/tests/module.test index 242910c7f..31c0bb028 100644 --- a/modules/simpletest/tests/module.test +++ b/modules/simpletest/tests/module.test @@ -126,13 +126,50 @@ class ModuleUnitTest extends DrupalWebTestCase { } /** + * Unit tests for module installation. + */ +class ModuleInstallTestCase extends DrupalWebTestCase { + public static function getInfo() { + return array( + 'name' => 'Module installation', + 'description' => 'Tests the installation of modules.', + 'group' => 'Module', + ); + } + + function setUp() { + parent::setUp('module_test'); + } + + /** + * Test that calls to drupal_write_record() work during module installation. + * + * This is a useful function to test because modules often use it to insert + * initial data in their database tables when they are being installed or + * enabled. Furthermore, drupal_write_record() relies on the module schema + * information being available, so this also checks that the data from one of + * the module's hook implementations, in particular hook_schema(), is + * properly available during this time. Therefore, this test helps ensure + * that modules are fully functional while Drupal is installing and enabling + * them. + */ + function testDrupalWriteRecord() { + // Check for data that was inserted using drupal_write_record() while the + // 'module_test' module was being installed and enabled. + $data = db_query("SELECT data FROM {module_test}")->fetchCol(); + $this->assertTrue(in_array('Data inserted in hook_install()', $data), t('Data inserted using drupal_write_record() in hook_install() is correctly saved.')); + $this->assertTrue(in_array('Data inserted in hook_enable()', $data), t('Data inserted using drupal_write_record() in hook_enable() is correctly saved.')); + } +} + +/** * Unit tests for module uninstallation and related hooks. */ class ModuleUninstallTestCase extends DrupalWebTestCase { public static function getInfo() { return array( 'name' => 'Module uninstallation', - 'description' => 'Checks module uninstallation', + 'description' => 'Tests the uninstallation of modules.', 'group' => 'Module', ); } @@ -147,6 +184,7 @@ class ModuleUninstallTestCase extends DrupalWebTestCase { function testUserPermsUninstalled() { // Uninstalls the module_test module, so hook_modules_uninstalled() // is executed. + module_disable(array('module_test')); drupal_uninstall_modules(array('module_test')); // Are the perms defined by module_test removed from {role_permission}. diff --git a/modules/simpletest/tests/module_test.install b/modules/simpletest/tests/module_test.install new file mode 100644 index 000000000..5f8e76b70 --- /dev/null +++ b/modules/simpletest/tests/module_test.install @@ -0,0 +1,43 @@ +<?php +// $Id$ + +/** + * @file + * Install, update and uninstall functions for the module_test module. + */ + +/** + * Implements hook_schema(). + */ +function module_test_schema() { + $schema['module_test'] = array( + 'description' => 'Dummy table to test the behavior of hook_schema() during module installation.', + 'fields' => array( + 'data' => array( + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + 'default' => '', + 'description' => 'An example data column for the module.', + ), + ), + ); + return $schema; +} + +/** + * Implements hook_install(). + */ +function module_test_install() { + $record = array('data' => 'Data inserted in hook_install()'); + drupal_write_record('module_test', $record); +} + +/** + * Implements hook_enable(). + */ +function module_test_enable() { + $record = array('data' => 'Data inserted in hook_enable()'); + drupal_write_record('module_test', $record); +} + |