summaryrefslogtreecommitdiff
path: root/modules/simpletest/tests/database_test.module
blob: 25631e0c77928e083c824c50367ceb915f432d98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
// $Id$

/**
 * Implementation of hook_query_alter().
 */
function database_test_query_alter(QueryAlterableInterface $query) {

  if ($query->hasTag('database_test_alter_add_range')) {
    $query->range(0, 2);
  }

  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';
  }
}


/**
 * Implementation of hook_query_TAG_alter(). Called by DatabaseTestCase::testAlterRemoveRange.
 */
function database_test_query_database_test_alter_remove_range_alter(QueryAlterableInterface $query) {
  $query->range();
}

/**
 * Implementation of hook_menu().
 */
function database_test_menu() {
  $items['database_test_db_query_temporary'] = array(
    'access callback' => TRUE,
    'page callback' => 'database_test_db_query_temporary',
  );
  return $items;
}

/**
 * Run a db_query_temporary and print the number of rows in the resulting table.
 *
 * We need to test that the table created is temporary, so we run it here, in a
 * separate menu callback request; After this request is done, the temporary
 * table should automatically dropped.
 */
function database_test_db_query_temporary() {
  db_query_temporary('SELECT status FROM {system}', array(), 'temporary');
  print db_query('SELECT COUNT(*) FROM temporary')->fetchField();
  exit;
}