Newer
Older
Rob Loach
committed
* Definition of Drupal\views\Tests\Handler\FilterNumericTest.
Rob Loach
committed
namespace Drupal\views\Tests\Handler;
Angie Byron
committed
use Drupal\views\Tests\ViewUnitTestBase;
/**
* Tests the numeric filter handler.
*/
Angie Byron
committed
class FilterNumericTest extends ViewUnitTestBase {
catch
committed
/**
* Views used by this test.
*
* @var array
*/
public static $testViews = array('test_view');
Angie Byron
committed
protected $column_map = array(
'views_test_data_name' => 'name',
'views_test_data_age' => 'age',
);
public static function getInfo() {
return array(
Tim Plunkett
committed
'name' => 'Filter: Numeric',
'description' => 'Tests the numeric filter handler.',
Angie Byron
committed
protected function setUp() {
Angie Byron
committed
$this->enableModules(array('system'));
}
function viewsData() {
$data = parent::viewsData();
$data['views_test_data']['age']['filter']['allow empty'] = TRUE;
$data['views_test_data']['id']['filter']['allow empty'] = FALSE;
return $data;
}
public function testFilterNumericSimple() {
Angie Byron
committed
$view = views_get_view('test_view');
$view->setDisplay();
Daniel Wehner
committed
$view->displayHandlers['default']->overrideOption('filters', array(
'table' => 'views_test_data',
'field' => 'age',
'relationship' => 'none',
'operator' => '=',
'value' => array('value' => 28),
),
));
$this->executeView($view);
$resultset = array(
array(
'name' => 'Ringo',
'age' => 28,
),
);
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
}
Tim Plunkett
committed
public function testFilterNumericExposedGroupedSimple() {
$filters = $this->getGroupedExposedFilters();
Angie Byron
committed
$view = views_get_view('test_view');
$view->storage->newDisplay('page', 'Page', 'page_1');
Tim Plunkett
committed
// Filter: Age, Operator: =, Value: 28
$filters['age']['group_info']['default_group'] = 1;
Damian Lee
committed
$view->setDisplay('page_1');
Daniel Wehner
committed
$view->displayHandlers['page_1']->overrideOption('filters', $filters);
Tim Plunkett
committed
$this->executeView($view);
$resultset = array(
array(
'name' => 'Ringo',
'age' => 28,
),
);
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
}
Angie Byron
committed
$view = views_get_view('test_view');
$view->setDisplay();
Daniel Wehner
committed
$view->displayHandlers['default']->overrideOption('filters', array(
'table' => 'views_test_data',
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
'field' => 'age',
'relationship' => 'none',
'operator' => 'between',
'value' => array(
'min' => 26,
'max' => 29,
),
),
));
$this->executeView($view);
$resultset = array(
array(
'name' => 'George',
'age' => 27,
),
array(
'name' => 'Ringo',
'age' => 28,
),
array(
'name' => 'Paul',
'age' => 26,
),
);
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
// test not between
Damian Lee
committed
$view->destroy();
Angie Byron
committed
$view->setDisplay();
Daniel Wehner
committed
$view->displayHandlers['default']->overrideOption('filters', array(
'table' => 'views_test_data',
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
'field' => 'age',
'relationship' => 'none',
'operator' => 'not between',
'value' => array(
'min' => 26,
'max' => 29,
),
),
));
$this->executeView($view);
$resultset = array(
array(
'name' => 'John',
'age' => 25,
),
array(
'name' => 'Paul',
'age' => 26,
),
array(
'name' => 'Meredith',
'age' => 30,
),
);
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
}
Tim Plunkett
committed
public function testFilterNumericExposedGroupedBetween() {
$filters = $this->getGroupedExposedFilters();
Angie Byron
committed
$view = views_get_view('test_view');
$view->storage->newDisplay('page', 'Page', 'page_1');
Tim Plunkett
committed
// Filter: Age, Operator: between, Value: 26 and 29
$filters['age']['group_info']['default_group'] = 2;
Damian Lee
committed
$view->setDisplay('page_1');
Daniel Wehner
committed
$view->displayHandlers['page_1']->overrideOption('filters', $filters);
Tim Plunkett
committed
$this->executeView($view);
$resultset = array(
array(
'name' => 'George',
'age' => 27,
),
array(
'name' => 'Ringo',
'age' => 28,
),
array(
'name' => 'Paul',
'age' => 26,
),
);
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
}
public function testFilterNumericExposedGroupedNotBetween() {
$filters = $this->getGroupedExposedFilters();
Angie Byron
committed
$view = views_get_view('test_view');
$view->storage->newDisplay('page', 'Page', 'page_1');
Tim Plunkett
committed
// Filter: Age, Operator: between, Value: 26 and 29
$filters['age']['group_info']['default_group'] = 3;
Damian Lee
committed
$view->setDisplay('page_1');
Daniel Wehner
committed
$view->displayHandlers['page_1']->overrideOption('filters', $filters);
Tim Plunkett
committed
$this->executeView($view);
$resultset = array(
array(
'name' => 'John',
'age' => 25,
),
array(
'name' => 'Paul',
'age' => 26,
),
array(
'name' => 'Meredith',
'age' => 30,
),
);
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
}
Angie Byron
committed
$view = views_get_view('test_view');
$view->setDisplay();
Daniel Wehner
committed
$view->displayHandlers['default']->overrideOption('filters', array(
'table' => 'views_test_data',
'field' => 'age',
'relationship' => 'none',
'operator' => 'empty',
),
));
$this->executeView($view);
$resultset = array(
);
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
Damian Lee
committed
$view->destroy();
Angie Byron
committed
$view->setDisplay();
Daniel Wehner
committed
$view->displayHandlers['default']->overrideOption('filters', array(
'table' => 'views_test_data',
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
'field' => 'age',
'relationship' => 'none',
'operator' => 'not empty',
),
));
$this->executeView($view);
$resultset = array(
array(
'name' => 'John',
'age' => 25,
),
array(
'name' => 'George',
'age' => 27,
),
array(
'name' => 'Ringo',
'age' => 28,
),
array(
'name' => 'Paul',
'age' => 26,
),
array(
'name' => 'Meredith',
'age' => 30,
),
);
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
}
Tim Plunkett
committed
public function testFilterNumericExposedGroupedEmpty() {
$filters = $this->getGroupedExposedFilters();
Angie Byron
committed
$view = views_get_view('test_view');
$view->storage->newDisplay('page', 'Page', 'page_1');
Tim Plunkett
committed
// Filter: Age, Operator: empty, Value:
$filters['age']['group_info']['default_group'] = 4;
Damian Lee
committed
$view->setDisplay('page_1');
Daniel Wehner
committed
$view->displayHandlers['page_1']->overrideOption('filters', $filters);
Tim Plunkett
committed
$this->executeView($view);
$resultset = array(
);
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
}
public function testFilterNumericExposedGroupedNotEmpty() {
$filters = $this->getGroupedExposedFilters();
Angie Byron
committed
$view = views_get_view('test_view');
$view->storage->newDisplay('page', 'Page', 'page_1');
Tim Plunkett
committed
// Filter: Age, Operator: empty, Value:
$filters['age']['group_info']['default_group'] = 5;
Damian Lee
committed
$view->setDisplay('page_1');
Daniel Wehner
committed
$view->displayHandlers['page_1']->overrideOption('filters', $filters);
Tim Plunkett
committed
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
$this->executeView($view);
$resultset = array(
array(
'name' => 'John',
'age' => 25,
),
array(
'name' => 'George',
'age' => 27,
),
array(
'name' => 'Ringo',
'age' => 28,
),
array(
'name' => 'Paul',
'age' => 26,
),
array(
'name' => 'Meredith',
'age' => 30,
),
);
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
}
Angie Byron
committed
$view = views_get_view('test_view');
$view->setDisplay();
Daniel Wehner
committed
$view->displayHandlers['default']->overrideOption('filters', array(
'table' => 'views_test_data',
'field' => 'id',
'relationship' => 'none',
),
'age' => array(
'id' => 'age',
'table' => 'views_test_data',
'field' => 'age',
'relationship' => 'none',
),
));
Damian Lee
committed
$view->initHandlers();
$id_operators = $view->filter['id']->operators();
$age_operators = $view->filter['age']->operators();
$this->assertFalse(isset($id_operators['empty']));
$this->assertFalse(isset($id_operators['not empty']));
$this->assertTrue(isset($age_operators['empty']));
$this->assertTrue(isset($age_operators['not empty']));
}
Tim Plunkett
committed
protected function getGroupedExposedFilters() {
$filters = array(
'age' => array(
'id' => 'age',
'table' => 'views_test_data',
Tim Plunkett
committed
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
'field' => 'age',
'relationship' => 'none',
'exposed' => TRUE,
'expose' => array(
'operator' => 'age_op',
'label' => 'age',
'identifier' => 'age',
),
'is_grouped' => TRUE,
'group_info' => array(
'label' => 'age',
'identifier' => 'age',
'default_group' => 'All',
'group_items' => array(
1 => array(
'title' => 'Age is 28',
'operator' => '=',
'value' => array('value' => 28),
),
2 => array(
'title' => 'Age is between 26 and 29',
'operator' => 'between',
'value' => array(
'min' => 26,
'max' => 29,
),
),
3 => array(
'title' => 'Age is not between 26 and 29',
'operator' => 'not between',
'value' => array(
'min' => 26,
'max' => 29,
),
),
4 => array(
'title' => 'Age is empty',
'operator' => 'empty',
),
5 => array(
'title' => 'Age is not empty',
'operator' => 'not empty',
),
),
),
),
);
return $filters;
}