Projet

Général

Profil

Paste
Télécharger (9,88 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / views / tests / handlers / views_handler_filter_numeric.test @ 5d12d676

1
<?php
2

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

    
8
/**
9
 * Tests the numeric filter handler.
10
 */
11
class ViewsHandlerFilterNumericTest extends ViewsSqlTest {
12
  var $column_map = array();
13

    
14
  public static function getInfo() {
15
    return array(
16
      'name' => 'Filter: Numeric',
17
      'description' => 'Tests the numeric filter handler',
18
      'group' => 'Views Handlers',
19
    );
20
  }
21

    
22
  function setUp() {
23
    parent::setUp();
24
    $this->column_map = array(
25
      'views_test_name' => 'name',
26
      'views_test_age' => 'age',
27
    );
28
  }
29

    
30
  function viewsData() {
31
    $data = parent::viewsData();
32
    $data['views_test']['age']['filter']['allow empty'] = TRUE;
33
    $data['views_test']['id']['filter']['allow empty'] = FALSE;
34

    
35
    return $data;
36
  }
37

    
38
  public function testFilterNumericSimple() {
39
    $view = $this->getBasicView();
40

    
41
    // Change the filtering.
42
    $view->display['default']->handler->override_option('filters', array(
43
      'age' => array(
44
        'id' => 'age',
45
        'table' => 'views_test',
46
        'field' => 'age',
47
        'relationship' => 'none',
48
        'operator' => '=',
49
        'value' => array('value' => 28),
50
      ),
51
    ));
52

    
53
    $this->executeView($view);
54
    $resultset = array(
55
      array(
56
        'name' => 'Ringo',
57
        'age' => 28,
58
      ),
59
    );
60
    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
61
  }
62

    
63
  public function testFilterNumericExposedGroupedSimple() {
64
    $filters = $this->getGroupedExposedFilters();
65
    $view = $this->getBasicPageView();
66

    
67
    // Filter: Age, Operator: =, Value: 28
68
    $filters['age']['group_info']['default_group'] = 1;
69
    $view->set_display('page_1');
70
    $view->display['page_1']->handler->override_option('filters', $filters);
71

    
72
    $this->executeView($view);
73
    $resultset = array(
74
      array(
75
        'name' => 'Ringo',
76
        'age' => 28,
77
      ),
78
    );
79
    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
80
  }
81

    
82
  public function testFilterNumericBetween() {
83
    $view = $this->getBasicView();
84

    
85
    // Change the filtering.
86
    $view->display['default']->handler->override_option('filters', array(
87
      'age' => array(
88
        'id' => 'age',
89
        'table' => 'views_test',
90
        'field' => 'age',
91
        'relationship' => 'none',
92
        'operator' => 'between',
93
        'value' => array(
94
          'min' => 26,
95
          'max' => 29,
96
        ),
97
      ),
98
    ));
99

    
100
    $this->executeView($view);
101
    $resultset = array(
102
      array(
103
        'name' => 'George',
104
        'age' => 27,
105
      ),
106
      array(
107
        'name' => 'Ringo',
108
        'age' => 28,
109
      ),
110
      array(
111
        'name' => 'Paul',
112
        'age' => 26,
113
      ),
114
    );
115
    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
116

    
117
    // test not between.
118
    $view->delete();
119
    $view = $this->getBasicView();
120

    
121
    // Change the filtering.
122
    $view->display['default']->handler->override_option('filters', array(
123
      'age' => array(
124
        'id' => 'age',
125
        'table' => 'views_test',
126
        'field' => 'age',
127
        'relationship' => 'none',
128
        'operator' => 'not between',
129
        'value' => array(
130
          'min' => 26,
131
          'max' => 29,
132
        ),
133
      ),
134
    ));
135

    
136
    $this->executeView($view);
137
    $resultset = array(
138
      array(
139
        'name' => 'John',
140
        'age' => 25,
141
      ),
142
      array(
143
        'name' => 'Paul',
144
        'age' => 26,
145
      ),
146
      array(
147
        'name' => 'Meredith',
148
        'age' => 30,
149
      ),
150
    );
151
    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
152
  }
153

    
154
  public function testFilterNumericExposedGroupedBetween() {
155
    $filters = $this->getGroupedExposedFilters();
156
    $view = $this->getBasicPageView();
157

    
158
    // Filter: Age, Operator: between, Value: 26 and 29
159
    $filters['age']['group_info']['default_group'] = 2;
160
    $view->set_display('page_1');
161
    $view->display['page_1']->handler->override_option('filters', $filters);
162

    
163
    $this->executeView($view);
164
    $resultset = array(
165
      array(
166
        'name' => 'George',
167
        'age' => 27,
168
      ),
169
      array(
170
        'name' => 'Ringo',
171
        'age' => 28,
172
      ),
173
      array(
174
        'name' => 'Paul',
175
        'age' => 26,
176
      ),
177
    );
178
    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
179
  }
180

    
181
  public function testFilterNumericExposedGroupedNotBetween() {
182
    $filters = $this->getGroupedExposedFilters();
183
    $view = $this->getBasicPageView();
184

    
185
    // Filter: Age, Operator: between, Value: 26 and 29
186
    $filters['age']['group_info']['default_group'] = 3;
187
    $view->set_display('page_1');
188
    $view->display['page_1']->handler->override_option('filters', $filters);
189

    
190
    $this->executeView($view);
191
    $resultset = array(
192
      array(
193
        'name' => 'John',
194
        'age' => 25,
195
      ),
196
      array(
197
        'name' => 'Paul',
198
        'age' => 26,
199
      ),
200
      array(
201
        'name' => 'Meredith',
202
        'age' => 30,
203
      ),
204
    );
205
    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
206
  }
207

    
208

    
209
  public function testFilterNumericEmpty() {
210
    $view = $this->getBasicView();
211

    
212
    // Change the filtering.
213
    $view->display['default']->handler->override_option('filters', array(
214
      'age' => array(
215
        'id' => 'age',
216
        'table' => 'views_test',
217
        'field' => 'age',
218
        'relationship' => 'none',
219
        'operator' => 'empty',
220
      ),
221
    ));
222

    
223
    $this->executeView($view);
224
    $resultset = array();
225
    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
226

    
227
    $view->delete();
228
    $view = $this->getBasicView();
229

    
230
    // Change the filtering.
231
    $view->display['default']->handler->override_option('filters', array(
232
      'age' => array(
233
        'id' => 'age',
234
        'table' => 'views_test',
235
        'field' => 'age',
236
        'relationship' => 'none',
237
        'operator' => 'not empty',
238
      ),
239
    ));
240

    
241
    $this->executeView($view);
242
    $resultset = array(
243
      array(
244
        'name' => 'John',
245
        'age' => 25,
246
      ),
247
      array(
248
        'name' => 'George',
249
        'age' => 27,
250
      ),
251
      array(
252
        'name' => 'Ringo',
253
        'age' => 28,
254
      ),
255
      array(
256
        'name' => 'Paul',
257
        'age' => 26,
258
      ),
259
      array(
260
        'name' => 'Meredith',
261
        'age' => 30,
262
      ),
263
    );
264
    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
265
  }
266

    
267

    
268
  public function testFilterNumericExposedGroupedEmpty() {
269
    $filters = $this->getGroupedExposedFilters();
270
    $view = $this->getBasicPageView();
271

    
272
    // Filter: Age, Operator: empty, Value.
273
    $filters['age']['group_info']['default_group'] = 4;
274
    $view->set_display('page_1');
275
    $view->display['page_1']->handler->override_option('filters', $filters);
276

    
277
    $this->executeView($view);
278
    $resultset = array();
279
    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
280
  }
281

    
282
  public function testFilterNumericExposedGroupedNotEmpty() {
283
    $filters = $this->getGroupedExposedFilters();
284
    $view = $this->getBasicPageView();
285

    
286
    // Filter: Age, Operator: empty, Value.
287
    $filters['age']['group_info']['default_group'] = 5;
288
    $view->set_display('page_1');
289
    $view->display['page_1']->handler->override_option('filters', $filters);
290

    
291
    $this->executeView($view);
292
    $resultset = array(
293
      array(
294
        'name' => 'John',
295
        'age' => 25,
296
      ),
297
      array(
298
        'name' => 'George',
299
        'age' => 27,
300
      ),
301
      array(
302
        'name' => 'Ringo',
303
        'age' => 28,
304
      ),
305
      array(
306
        'name' => 'Paul',
307
        'age' => 26,
308
      ),
309
      array(
310
        'name' => 'Meredith',
311
        'age' => 30,
312
      ),
313
    );
314
    $this->assertIdenticalResultset($view, $resultset, $this->column_map);
315
  }
316

    
317

    
318
  public function testAllowEmpty() {
319
    $view = $this->getBasicView();
320

    
321
    $view->display['default']->handler->override_option('filters', array(
322
      'id' => array(
323
        'id' => 'id',
324
        'table' => 'views_test',
325
        'field' => 'id',
326
        'relationship' => 'none',
327
      ),
328
      'age' => array(
329
        'id' => 'age',
330
        'table' => 'views_test',
331
        'field' => 'age',
332
        'relationship' => 'none',
333
      ),
334
    ));
335

    
336
    $view->set_display('default');
337
    $view->init_handlers();
338

    
339
    $id_operators = $view->filter['id']->operators();
340
    $age_operators = $view->filter['age']->operators();
341

    
342
    $this->assertFalse(isset($id_operators['empty']));
343
    $this->assertFalse(isset($id_operators['not empty']));
344
    $this->assertTrue(isset($age_operators['empty']));
345
    $this->assertTrue(isset($age_operators['not empty']));
346
  }
347

    
348
  protected function getGroupedExposedFilters() {
349
    $filters = array(
350
      'age' => array(
351
        'id' => 'age',
352
        'table' => 'views_test',
353
        'field' => 'age',
354
        'relationship' => 'none',
355
        'exposed' => TRUE,
356
        'expose' => array(
357
          'operator' => 'age_op',
358
          'label' => 'age',
359
          'identifier' => 'age',
360
        ),
361
        'is_grouped' => TRUE,
362
        'group_info' => array(
363
          'label' => 'age',
364
          'identifier' => 'age',
365
          'default_group' => 'All',
366
          'group_items' => array(
367
            1 => array(
368
              'title' => 'Age is 28',
369
              'operator' => '=',
370
              'value' => array('value' => 28),
371
            ),
372
            2 => array(
373
              'title' => 'Age is between 26 and 29',
374
              'operator' => 'between',
375
              'value' => array(
376
                'min' => 26,
377
                'max' => 29,
378
              ),
379
            ),
380
            3 => array(
381
              'title' => 'Age is not between 26 and 29',
382
              'operator' => 'not between',
383
              'value' => array(
384
                'min' => 26,
385
                'max' => 29,
386
              ),
387
            ),
388
            4 => array(
389
              'title' => 'Age is empty',
390
              'operator' => 'empty',
391
            ),
392
            5 => array(
393
              'title' => 'Age is not empty',
394
              'operator' => 'not empty',
395
            ),
396
          ),
397
        ),
398
      ),
399
    );
400
    return $filters;
401
  }
402

    
403
}