summaryrefslogtreecommitdiff
path: root/modules/simpletest
diff options
context:
space:
mode:
Diffstat (limited to 'modules/simpletest')
-rw-r--r--modules/simpletest/tests/module.test40
-rw-r--r--modules/simpletest/tests/module_test.install43
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);
+}
+