function QueryGroupByTest::groupByTestHelper
Same name in other branches
- 8.9.x core/modules/views/tests/src/Kernel/QueryGroupByTest.php \Drupal\Tests\views\Kernel\QueryGroupByTest::groupByTestHelper()
- 10 core/modules/views/tests/src/Kernel/QueryGroupByTest.php \Drupal\Tests\views\Kernel\QueryGroupByTest::groupByTestHelper()
- 11.x core/modules/views/tests/src/Kernel/QueryGroupByTest.php \Drupal\Tests\views\Kernel\QueryGroupByTest::groupByTestHelper()
Provides a test helper which runs a view with some aggregation function.
Parameters
string|null $aggregation_function: Which aggregation function should be used, for example sum or count. If NULL is passed the aggregation will be tested with no function.
array $values: The expected views result.
6 calls to QueryGroupByTest::groupByTestHelper()
- QueryGroupByTest::testGroupByAverage in core/
modules/ views/ tests/ src/ Kernel/ QueryGroupByTest.php - Tests the average aggregation function.
- QueryGroupByTest::testGroupByCount in core/
modules/ views/ tests/ src/ Kernel/ QueryGroupByTest.php - Tests the count aggregation function.
- QueryGroupByTest::testGroupByMax in core/
modules/ views/ tests/ src/ Kernel/ QueryGroupByTest.php - Tests the max aggregation function.
- QueryGroupByTest::testGroupByMin in core/
modules/ views/ tests/ src/ Kernel/ QueryGroupByTest.php - Tests the min aggregation function.
- QueryGroupByTest::testGroupByNone in core/
modules/ views/ tests/ src/ Kernel/ QueryGroupByTest.php - Tests aggregation with no specific function.
File
-
core/
modules/ views/ tests/ src/ Kernel/ QueryGroupByTest.php, line 111
Class
- QueryGroupByTest
- Tests aggregate functionality of views, for example count.
Namespace
Drupal\Tests\views\KernelCode
public function groupByTestHelper($aggregation_function, $values) {
$this->setupTestEntities();
$view = Views::getView('test_group_by_count');
$view->setDisplay();
// There is no need for a function in order to have aggregation.
if (empty($aggregation_function)) {
// The test table has 2 fields ('id' and 'name'). We'll remove 'id'
// because it's unique and will test aggregation on 'name'.
unset($view->displayHandlers
->get('default')->options['fields']['id']);
}
else {
$view->displayHandlers
->get('default')->options['fields']['id']['group_type'] = $aggregation_function;
}
$this->executeView($view);
$this->assertCount(2, $view->result, 'Make sure the count of items is right.');
// Group by name to identify the right count.
$results = [];
foreach ($view->result as $item) {
$results[$item->entity_test_name] = $item->id;
}
$this->assertEquals($values[0], $results['name1'], new FormattableMarkup('Aggregation with @aggregation_function and groupby name: name1 returned the expected amount of results', [
'@aggregation_function' => $aggregation_function ?? 'NULL',
]));
$this->assertEquals($values[1], $results['name2'], new FormattableMarkup('Aggregation with @aggregation_function and groupby name: name2 returned the expected amount of results', [
'@aggregation_function' => $aggregation_function ?? 'NULL',
]));
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.