function ViewsQueryGroupByTest::GroupByTestHelper
Parameters
string|null $group_by: (optional) Which group_by function should be used, for example sum or count. If omitted, the aggregation is tested with no group function.
array|null $values: (optional) Expected values.
6 calls to ViewsQueryGroupByTest::GroupByTestHelper()
- ViewsQueryGroupByTest::testGroupByAverage in tests/
views_groupby.test - ViewsQueryGroupByTest::testGroupByCount in tests/
views_groupby.test - ViewsQueryGroupByTest::testGroupByMax in tests/
views_groupby.test - ViewsQueryGroupByTest::testGroupByMin in tests/
views_groupby.test - ViewsQueryGroupByTest::testGroupByNone in tests/
views_groupby.test
File
-
tests/
views_groupby.test, line 209
Class
- ViewsQueryGroupByTest
- Tests aggregate functionality of views, for example count.
Code
public function GroupByTestHelper($group_by = NULL, $values = NULL) {
// Create 4 nodes of type1 and 3 nodes of type2.
$type1 = $this->drupalCreateContentType();
$type2 = $this->drupalCreateContentType();
$node_1 = array(
'type' => $type1->type,
);
// Nids from 1 to 4.
$this->drupalCreateNode($node_1);
$this->drupalCreateNode($node_1);
$this->drupalCreateNode($node_1);
$this->drupalCreateNode($node_1);
$node_2 = array(
'type' => $type2->type,
);
// Nids from 5 to 7.
$this->drupalCreateNode($node_2);
$this->drupalCreateNode($node_2);
$this->drupalCreateNode($node_2);
$view = $this->viewsGroupByViewHelper($group_by);
$view->execute_display();
$this->assertEqual(count($view->result), 2, 'Make sure the count of items is right.');
$results = array();
// There's no need for a function in order to have aggregation.
if (empty($group_by)) {
$types = array(
$type1->type,
$type2->type,
);
$results = array_map(function ($item) {
return $item->node_type;
}, $view->result);
sort($types);
sort($results);
$this->assertIdentical($results, $types);
// Exit here with no aggregation function.
return;
}
// Group by nodetype to identify the right count.
foreach ($view->result as $item) {
$results[$item->node_type] = $item->nid;
}
$this->assertEqual($results[$type1->type], $values[0]);
$this->assertEqual($results[$type2->type], $values[1]);
}