Projet

Général

Profil

Paste
Télécharger (4,67 ko) Statistiques
| Branche: | Révision:

root / drupal7 / modules / simpletest / tests / tablesort.test @ db2d93dd

1
<?php
2

    
3
/**
4
 * @file
5
 * Various tablesort tests.
6
 */
7

    
8
/**
9
 * Test unicode handling features implemented in unicode.inc.
10
 */
11
class TableSortTest extends DrupalUnitTestCase {
12

    
13
  /**
14
   * Storage for initial value of $_GET.
15
   *
16
   * @var array
17
   */
18
  protected $GET = array();
19

    
20
  public static function getInfo() {
21
    return array(
22
      'name' => 'Tablesort',
23
      'description' => 'Tests table sorting.',
24
      'group' => 'System',
25
    );
26
  }
27

    
28
  function setUp() {
29
    // Save the original $_GET to be restored later.
30
    $this->GET = $_GET;
31

    
32
    parent::setUp();
33
  }
34

    
35
  function tearDown() {
36
    // Revert $_GET.
37
    $_GET = $this->GET;
38

    
39
    parent::tearDown();
40
  }
41

    
42
  /**
43
   * Test tablesort_init().
44
   */
45
  function testTableSortInit() {
46

    
47
    // Test simple table headers.
48

    
49
    $headers = array('foo', 'bar', 'baz');
50
    // Reset $_GET to prevent parameters from Simpletest and Batch API ending
51
    // up in $ts['query'].
52
    $_GET = array('q' => 'jahwohl');
53
    $expected_ts = array(
54
      'name' => 'foo',
55
      'sql' => '',
56
      'sort' => 'asc',
57
      'query' => array(),
58
    );
59
    $ts = tablesort_init($headers);
60
    $this->verbose(strtr('$ts: <pre>!ts</pre>', array('!ts' => check_plain(var_export($ts, TRUE)))));
61
    $this->assertEqual($ts, $expected_ts, 'Simple table headers sorted correctly.');
62

    
63
    // Test with simple table headers plus $_GET parameters that should _not_
64
    // override the default.
65

    
66
    $_GET = array(
67
      'q' => 'jahwohl',
68
      // This should not override the table order because only complex
69
      // headers are overridable.
70
      'order' => 'bar',
71
    );
72
    $ts = tablesort_init($headers);
73
    $this->verbose(strtr('$ts: <pre>!ts</pre>', array('!ts' => check_plain(var_export($ts, TRUE)))));
74
    $this->assertEqual($ts, $expected_ts, 'Simple table headers plus non-overriding $_GET parameters sorted correctly.');
75

    
76
    // Test with simple table headers plus $_GET parameters that _should_
77
    // override the default.
78

    
79
    $_GET = array(
80
      'q' => 'jahwohl',
81
      'sort' => 'DESC',
82
      // Add an unrelated parameter to ensure that tablesort will include
83
      // it in the links that it creates.
84
      'alpha' => 'beta',
85
    );
86
    $expected_ts['sort'] = 'desc';
87
    $expected_ts['query'] = array('alpha' => 'beta');
88
    $ts = tablesort_init($headers);
89
    $this->verbose(strtr('$ts: <pre>!ts</pre>', array('!ts' => check_plain(var_export($ts, TRUE)))));
90
    $this->assertEqual($ts, $expected_ts, 'Simple table headers plus $_GET parameters sorted correctly.');
91

    
92
    // Test complex table headers.
93

    
94
    $headers = array(
95
      'foo',
96
      array(
97
        'data' => '1',
98
        'field' => 'one',
99
        'sort' => 'asc',
100
        'colspan' => 1,
101
      ),
102
      array(
103
        'data' => '2',
104
        'field' => 'two',
105
        'sort' => 'desc',
106
      ),
107
    );
108
    // Reset $_GET from previous assertion.
109
    $_GET = array(
110
      'q' => 'jahwohl',
111
      'order' => '2',
112
    );
113
    $ts = tablesort_init($headers);
114
    $expected_ts = array(
115
      'name' => '2',
116
      'sql' => 'two',
117
      'sort' => 'desc',
118
      'query' => array(),
119
    );
120
    $this->verbose(strtr('$ts: <pre>!ts</pre>', array('!ts' => check_plain(var_export($ts, TRUE)))));
121
    $this->assertEqual($ts, $expected_ts, 'Complex table headers sorted correctly.');
122

    
123
    // Test complex table headers plus $_GET parameters that should _not_
124
    // override the default.
125

    
126
    $_GET = array(
127
      'q' => 'jahwohl',
128
      // This should not override the table order because this header does not
129
      // exist.
130
      'order' => 'bar',
131
    );
132
    $ts = tablesort_init($headers);
133
    $expected_ts = array(
134
      'name' => '1',
135
      'sql' => 'one',
136
      'sort' => 'asc',
137
      'query' => array(),
138
    );
139
    $this->verbose(strtr('$ts: <pre>!ts</pre>', array('!ts' => check_plain(var_export($ts, TRUE)))));
140
    $this->assertEqual($ts, $expected_ts, 'Complex table headers plus non-overriding $_GET parameters sorted correctly.');
141
    unset($_GET['sort'], $_GET['order'], $_GET['alpha']);
142

    
143
    // Test complex table headers plus $_GET parameters that _should_
144
    // override the default.
145

    
146
    $_GET = array(
147
      'q' => 'jahwohl',
148
      'order' => '1',
149
      'sort' => 'ASC',
150
      // Add an unrelated parameter to ensure that tablesort will include
151
      // it in the links that it creates.
152
      'alpha' => 'beta',
153
    );
154
    $expected_ts = array(
155
      'name' => '1',
156
      'sql' => 'one',
157
      'sort' => 'asc',
158
      'query' => array('alpha' => 'beta'),
159
    );
160
    $ts = tablesort_init($headers);
161
    $this->verbose(strtr('$ts: <pre>!ts</pre>', array('!ts' => check_plain(var_export($ts, TRUE)))));
162
    $this->assertEqual($ts, $expected_ts, 'Complex table headers plus $_GET parameters sorted correctly.');
163
    unset($_GET['sort'], $_GET['order'], $_GET['alpha']);
164

    
165
  }
166
}