QueryTest.php in Drupal 9
File
core/modules/views/tests/src/Kernel/Plugin/QueryTest.php
View source
<?php
namespace Drupal\Tests\views\Kernel\Plugin;
use Drupal\views\Views;
use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
use Drupal\views_test_data\Plugin\views\query\QueryTest as QueryTestPlugin;
class QueryTest extends ViewsKernelTestBase {
public static $testViews = [
'test_view',
];
protected function viewsData() {
$data = parent::viewsData();
$data['views_test_data']['table']['base']['query_id'] = 'query_test';
return $data;
}
public function testQuery() {
$this
->_testInitQuery();
$this
->_testQueryExecute();
$this
->queryMethodsTests();
}
public function _testInitQuery() {
$view = Views::getView('test_view');
$view
->setDisplay();
$view
->initQuery();
$this
->assertInstanceOf(QueryTestPlugin::class, $view->query);
}
public function _testQueryExecute() {
$view = Views::getView('test_view');
$view
->setDisplay();
$view
->initQuery();
$view->query
->setAllItems($this
->dataSet());
$this
->executeView($view);
$this
->assertNotEmpty($view->result, 'Make sure the view result got filled');
}
protected function queryMethodsTests() {
$view = Views::getView('test_view');
$view
->setDisplay();
$view
->initQuery();
$this
->assertNull($view->query
->getLimit(), 'Default to an empty limit.');
$rand_number = rand(5, 10);
$view->query
->setLimit($rand_number);
$this
->assertEquals($rand_number, $view->query
->getLimit(), 'set_limit adapts the amount of items.');
}
}