Commit 382f4a8c authored by webchick's avatar webchick

#276276 by Crell and florbuit: New database system unit tests. WOOHOO! :D

parent df4b23bf
; $Id$
name = "Database Test"
description = "Support module for Database layer tests."
core = 7.x
package = Testing
files[] = database_test.module
version = VERSION
hidden = TRUE
<?php
// $Id$
/**
* Implementation of hook_schema().
*
* The database tests use the database API which depends on schema
* information for certain operations on certain databases.
* Therefore, the schema must actually be declared in a normal module
* like any other, not directly in the test file.
*/
function database_test_schema() {
$schema['test'] = array(
'description' => 'Basic test table for the database unit tests.',
'fields' => array(
'id' => array(
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
),
'name' => array(
'description' => "A person's name",
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
),
'age' => array(
'description' => "The person's age",
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0),
'job' => array(
'description' => "The person's job",
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => 'Undefined',
),
),
'primary key' => array('id'),
'unique keys' => array(
'name' => array('name')
),
'indexes' => array(
'ages' => array('age'),
),
);
// This is an alternate version of the same table that is structured the same
// but has a non-serial Primary Key.
$schema['test_people'] = array(
'description' => 'A duplicate version of the test table, used for additional tests.',
'fields' => array(
'name' => array(
'description' => "A person's name",
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
),
'age' => array(
'description' => "The person's age",
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
'job' => array(
'description' => "The person's job",
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
),
),
'primary key' => array('job'),
'indexes' => array(
'ages' => array('age'),
),
);
$schema['test_one_blob'] = array(
'description' => 'A simple table including a BLOB field for testing BLOB behavior.',
'fields' => array(
'id' => array(
'description' => 'Simple unique ID.',
'type' => 'serial',
'not null' => TRUE,
),
'blob1' => array(
'description' => 'A BLOB field.',
'type' => 'blob',
),
),
'primary key' => array('id'),
);
$schema['test_two_blobs'] = array(
'description' => 'A simple test table with two BLOB fields.',
'fields' => array(
'id' => array(
'description' => 'Simple unique ID.',
'type' => 'serial',
'not null' => TRUE,
),
'blob1' => array(
'description' => 'A dummy BLOB field.',
'type' => 'blob',
),
'blob2' => array(
'description' => 'A second BLOB field.',
'type' => 'blob'
),
),
'primary key' => array('id'),
);
$schema['test_task'] = array(
'description' => 'A task list for people in the test table.',
'fields' => array(
'tid' => array(
'description' => 'Task ID, primary key.',
'type' => 'serial',
'not null' => TRUE,
),
'pid' => array(
'description' => 'The {test_people}.pid, foreign key for the test table.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
'task' => array(
'description' => 'The task to be completed.',
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
),
'priority' => array(
'description' => 'The priority of the task.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
),
'primary key' => array('tid'),
);
return $schema;
}
/**
* Implementation of hook_install().
*/
function database_test_install() {
drupal_install_schema('database_test');
}
/**
* Implementation of hook_uninstall().
*/
function database_test_uninstall() {
drupal_uninstall_schema('database_test');
}
<?php
// $Id$
/**
* Implementation of hook_query_alter().
*/
function database_test_query_alter(SelectQuery $query) {
if ($query->hasTag('database_test_alter_add_range')) {
$query->range(0, 2);
}
if ($query->hasTag('database_test_alter_remove_range')) {
$query->range();
}
if ($query->hasTag('database_test_alter_add_join')) {
$people_alias = $query->join('test', 'people', "test_task.pid=people.id");
$name_field = $query->addField('people', 'name', 'name');
$query->condition($people_alias . '.id', 2);
}
if ($query->hasTag('database_test_alter_change_conditional')) {
$conditions =& $query->conditions();
$conditions[0]['value'] = 2;
}
if ($query->hasTag('database_test_alter_change_fields')) {
$fields =& $query->getFields();
unset($fields['age']);
}
if ($query->hasTag('database_test_alter_change_expressions')) {
$expressions =& $query->getExpressions();
$expressions['double_age']['expression'] = 'age*3';
}
}
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment