public function ModuleTest::testViewsGetHandler in Drupal 9
Same name and namespace in other branches
- 8 core/modules/views/tests/src/Kernel/ModuleTest.php \Drupal\Tests\views\Kernel\ModuleTest::testViewsGetHandler()
Tests the ViewsHandlerManager::getHandler() method.
See also
\Drupal\views\Plugin\ViewsHandlerManager::getHandler()
File
- core/
modules/ views/ tests/ src/ Kernel/ ModuleTest.php, line 48
Class
- ModuleTest
- Tests basic functions from the Views module.
Namespace
Drupal\Tests\views\KernelCode
public function testViewsGetHandler() {
$types = [
'field' => BrokenField::class,
'area' => BrokenArea::class,
'filter' => BrokenFilter::class,
];
// Test non-existent tables/fields.
$items = [
[
'table' => 'table_invalid',
'field' => 'id',
],
[
'table' => 'views_test_data',
'field' => 'field_invalid',
],
];
$form_state = new FormState();
$description_top = '<p>The handler for this item is broken or missing. The following details are available:</p>';
$description_bottom = '<p>Enabling the appropriate module may solve this issue. Otherwise, check to see if there is a module update available.</p>';
foreach ($types as $type => $class) {
foreach ($items as $item) {
$handler = $this->container
->get('plugin.manager.views.' . $type)
->getHandler($item);
$this
->assertTrue($handler instanceof $class);
// Make sure details available at edit form.
$form = [];
$handler
->buildOptionsForm($form, $form_state);
$this
->assertEquals($description_top, $form['description']['description_top']['#markup']);
$this
->assertEquals($description_bottom, $form['description']['description_bottom']['#markup']);
$details = [];
foreach ($item as $key => $value) {
$details[] = new FormattableMarkup('@key: @value', [
'@key' => $key,
'@value' => $value,
]);
}
$this
->assertEquals($details, $form['description']['detail_list']['#items']);
}
}
$views_data = $this
->viewsData();
$test_tables = [
'views_test_data' => [
'id',
'name',
],
];
foreach ($test_tables as $table => $fields) {
foreach ($fields as $field) {
$data = $views_data[$table][$field];
$item = [
'table' => $table,
'field' => $field,
];
foreach ($data as $id => $field_data) {
if (!in_array($id, [
'title',
'help',
])) {
$handler = $this->container
->get('plugin.manager.views.' . $id)
->getHandler($item);
$this
->assertInstanceHandler($handler, $table, $field, $id);
}
}
}
}
// Test the override handler feature.
$item = [
'table' => 'views_test_data',
'field' => 'job',
];
$handler = $this->container
->get('plugin.manager.views.filter')
->getHandler($item, 'standard');
$this
->assertInstanceOf(Standard::class, $handler);
}