Projet

Général

Profil

Paste
Télécharger (5,84 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / views / tests / handlers / views_handler_sort_date.test @ 651307cd

1
<?php
2

    
3
/**
4
 * @file
5
 * Definition of ViewsHandlerSortDateTest.
6
 */
7

    
8
/**
9
 * Tests for core views_handler_sort_date handler.
10
 */
11
class ViewsHandlerSortDateTest extends ViewsSqlTest {
12
  public static function getInfo() {
13
    return array(
14
      'name' => 'Sort: date',
15
      'description' => 'Test the core views_handler_sort_date handler.',
16
      'group' => 'Views Handlers',
17
    );
18
  }
19

    
20
  protected function expectedResultSet($granularity, $reverse = TRUE) {
21
    $expected = array();
22
    if (!$reverse) {
23
      switch ($granularity) {
24
          case 'second':
25
            $expected = array(
26
              array('name' => 'John'),
27
              array('name' => 'Paul'),
28
              array('name' => 'Meredith'),
29
              array('name' => 'Ringo'),
30
              array('name' => 'George'),
31
            );
32
            break;
33
          case 'minute':
34
            $expected = array(
35
              array('name' => 'John'),
36
              array('name' => 'Paul'),
37
              array('name' => 'Ringo'),
38
              array('name' => 'Meredith'),
39
              array('name' => 'George'),
40
            );
41
            break;
42
          case 'hour':
43
            $expected = array(
44
              array('name' => 'John'),
45
              array('name' => 'Ringo'),
46
              array('name' => 'Paul'),
47
              array('name' => 'Meredith'),
48
              array('name' => 'George'),
49
            );
50
            break;
51
          case 'day':
52
            $expected = array(
53
              array('name' => 'John'),
54
              array('name' => 'Ringo'),
55
              array('name' => 'Paul'),
56
              array('name' => 'Meredith'),
57
              array('name' => 'George'),
58
            );
59
            break;
60
          case 'month':
61
            $expected = array(
62
              array('name' => 'John'),
63
              array('name' => 'George'),
64
              array('name' => 'Ringo'),
65
              array('name' => 'Paul'),
66
              array('name' => 'Meredith'),
67
            );
68
            break;
69
          case 'year':
70
            $expected = array(
71
              array('name' => 'John'),
72
              array('name' => 'George'),
73
              array('name' => 'Ringo'),
74
              array('name' => 'Paul'),
75
              array('name' => 'Meredith'),
76
            );
77
            break;
78
        }
79
    }
80
    else {
81
      switch ($granularity) {
82
        case 'second':
83
          $expected = array(
84
            array('name' => 'George'),
85
            array('name' => 'Ringo'),
86
            array('name' => 'Meredith'),
87
            array('name' => 'Paul'),
88
            array('name' => 'John'),
89
          );
90
          break;
91
        case 'minute':
92
          $expected = array(
93
            array('name' => 'George'),
94
            array('name' => 'Ringo'),
95
            array('name' => 'Meredith'),
96
            array('name' => 'Paul'),
97
            array('name' => 'John'),
98
           );
99
          break;
100
        case 'hour':
101
          $expected = array(
102
            array('name' => 'George'),
103
            array('name' => 'Ringo'),
104
            array('name' => 'Paul'),
105
            array('name' => 'Meredith'),
106
            array('name' => 'John'),
107
          );
108
          break;
109
        case 'day':
110
          $expected = array(
111
            array('name' => 'George'),
112
            array('name' => 'John'),
113
            array('name' => 'Ringo'),
114
            array('name' => 'Paul'),
115
            array('name' => 'Meredith'),
116
          );
117
          break;
118
        case 'month':
119
          $expected = array(
120
            array('name' => 'John'),
121
            array('name' => 'George'),
122
            array('name' => 'Ringo'),
123
            array('name' => 'Paul'),
124
            array('name' => 'Meredith'),
125
          );
126
          break;
127
        case 'year':
128
          $expected = array(
129
            array('name' => 'John'),
130
            array('name' => 'George'),
131
            array('name' => 'Ringo'),
132
            array('name' => 'Paul'),
133
            array('name' => 'Meredith'),
134
          );
135
          break;
136
      }
137
    }
138

    
139
    return $expected;
140
  }
141

    
142
  /**
143
   * Tests numeric ordering of the result set.
144
   */
145
  public function testDateOrdering() {
146
    foreach (array('second', 'minute', 'hour', 'day', 'month', 'year') as $granularity) {
147
      foreach (array(FALSE, TRUE) as $reverse) {
148
        $view = $this->getBasicView();
149

    
150
        // Change the fields.
151
        $view->display['default']->handler->override_option('fields', array(
152
          'name' => array(
153
            'id' => 'name',
154
            'table' => 'views_test',
155
            'field' => 'name',
156
            'relationship' => 'none',
157
          ),
158
          'created' => array(
159
            'id' => 'created',
160
            'table' => 'views_test',
161
            'field' => 'created',
162
            'relationship' => 'none',
163
          ),
164
        ));
165

    
166
        // Change the ordering
167
        $view->display['default']->handler->override_option('sorts', array(
168
          'created' => array(
169
            'id' => 'created',
170
            'table' => 'views_test',
171
            'field' => 'created',
172
            'relationship' => 'none',
173
            'granularity' => $granularity,
174
            'order' => $reverse ? 'DESC' : 'ASC',
175
          ),
176
          'id' => array(
177
            'id' => 'id',
178
            'table' => 'views_test',
179
            'field' => 'id',
180
            'relationship' => 'none',
181
            'order' => 'ASC',
182
          ),
183
        ));
184

    
185
        // Execute the view.
186
        $this->executeView($view);
187

    
188
        // Verify the result.
189
        $this->assertEqual(count($this->dataSet()), count($view->result), t('The number of returned rows match.'));
190
        $this->assertIdenticalResultset($view, $this->expectedResultSet($granularity, $reverse), array(
191
          'views_test_name' => 'name',
192
        ), t('Result is returned correctly when ordering by granularity @granularity, @reverse.', array('@granularity' => $granularity, '@reverse' => $reverse ? t('reverse') : t('forward'))));
193
        $view->destroy();
194
        unset($view);
195
      }
196
    }
197
  }
198
}