summaryrefslogtreecommitdiff
path: root/modules/simpletest/tests/module.test
blob: ca4f7ac5e54cc90bffa1d438662fecbb6b754a10 (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
67
68
69
70
71
72
73
<?php
// $Id $

/**
 * @file
 * Tests for the module API.
 */

/**
 * Unit tests for the module API.
 */
class ModuleUnitTest extends DrupalWebTestCase {
  function getInfo() {
    return array(
      'name' => t('Module API'),
      'description' => t('Test low-level module functions.'),
      'group' => t('Module'),
    );
  }

  /**
   * The basic functionality of module_list().
   */
  function testModuleList() {
    $base_module_list = drupal_get_profile_modules('default', 'en');
    // Key the list by module name.
    $base_module_list = array_combine($base_module_list, $base_module_list);
    // All default profile modules have a weight equal to 0, the default sort
    // order is thus simply alphabetical.
    ksort($base_module_list);
    $this->assertModuleList($base_module_list, t('Default profile'));

    // Try to install a new module.
    drupal_install_modules(array('path'));
    $base_module_list['path'] = 'path';
    ksort($base_module_list);
    $this->assertModuleList($base_module_list, t('After adding a module'));

    // Try to mess with the module weights.
    db_query("UPDATE {system} SET weight = 20 WHERE name = 'path' AND type = 'module'");
    // Reset the module list.
    module_list(TRUE);
    // Move path at the end of the array.
    unset($base_module_list['path']);
    $base_module_list['path'] = 'path';
    $this->assertModuleList($base_module_list, t('After changing weights'));

    // Test the fixed list feature.
    $fixed_list = array(
      'system' => array('filename' => drupal_get_path('module', 'system')),
      'menu' => array('filename' => drupal_get_path('module', 'menu')),
    );
    module_list(FALSE, FALSE, $fixed_list);
    $new_module_list = array_combine(array_keys($fixed_list), array_keys($fixed_list));
    $this->assertModuleList($new_module_list, t('When using a fixed list'));

    // Reset the module list.
    module_list(TRUE);
    $this->assertModuleList($base_module_list, t('After reset'));
  }

  /**
   * Assert that module_list() return the expected values.
   *
   * @param $expected_values
   *   The expected values, sorted by weight and file name.
   */
  protected function assertModuleList(Array $expected_values, $condition) {
    $this->assertIdentical($expected_values, module_list(), t('@condition: module_list() returns correct results', array('@condition' => $condition)));
    ksort($expected_values);
    $this->assertIdentical($expected_values, module_list(FALSE, TRUE), t('@condition: module_list() returns correctly sorted results', array('@condition' => $condition)));
  }
}