public function DisplayTest::testMissingRelationship in Drupal 9
Same name and namespace in other branches
- 8 core/modules/views/tests/src/Functional/Plugin/DisplayTest.php \Drupal\Tests\views\Functional\Plugin\DisplayTest::testMissingRelationship()
Tests display validation when a required relationship is missing.
File
- core/
modules/ views/ tests/ src/ Functional/ Plugin/ DisplayTest.php, line 348
Class
- DisplayTest
- Tests the basic display plugin.
Namespace
Drupal\Tests\views\Functional\PluginCode
public function testMissingRelationship() {
$view = Views::getView('test_exposed_relationship_admin_ui');
// Remove the relationship that is not used by other handlers.
$view
->removeHandler('default', 'relationship', 'uid_1');
$errors = $view
->validate();
// Check that no error message is shown.
$this
->assertTrue(empty($errors['default']), 'No errors found when removing unused relationship.');
// Unset cached relationships (see DisplayPluginBase::getHandlers())
unset($view->display_handler->handlers['relationship']);
// Remove the relationship used by other handlers.
$view
->removeHandler('default', 'relationship', 'uid');
// Validate display
$errors = $view
->validate();
// Check that the error messages are shown.
$this
->assertCount(2, $errors['default'], 'Error messages found for required relationship');
$this
->assertEquals(t('The %handler_type %handler uses a relationship that has been removed.', [
'%handler_type' => 'field',
'%handler' => 'User: Last login',
]), $errors['default'][0]);
$this
->assertEquals(t('The %handler_type %handler uses a relationship that has been removed.', [
'%handler_type' => 'field',
'%handler' => 'User: Created',
]), $errors['default'][1]);
}