Issue #2973137 by davps, efpapado, tstoeckler: EntityViewsData missed revisionable validation

merge-requests/55/head
Lee Rowlands 2019-08-06 16:05:41 +10:00
parent a7847919c4
commit 3a87d23ffa
No known key found for this signature in database
GPG Key ID: 2B829A3DF9204DC4
2 changed files with 39 additions and 8 deletions

View File

@ -201,13 +201,15 @@ class EntityViewsData implements EntityHandlerInterface, EntityViewsDataInterfac
'id' => 'entity_operations',
],
];
$data[$revision_table]['operations'] = [
'field' => [
'title' => $this->t('Operations links'),
'help' => $this->t('Provides links to perform entity operations.'),
'id' => 'entity_operations',
],
];
if ($revision_table) {
$data[$revision_table]['operations'] = [
'field' => [
'title' => $this->t('Operations links'),
'help' => $this->t('Provides links to perform entity operations.'),
'id' => 'entity_operations',
],
];
}
}
if ($this->entityType->hasViewBuilderClass()) {

View File

@ -1009,7 +1009,36 @@ class EntityViewsDataTest extends UnitTestCase {
public function testGetViewsDataWithEntityOperations() {
$this->baseEntityType->setListBuilderClass('\Drupal\Core\Entity\EntityListBuilder');
$data = $this->viewsData->getViewsData();
$this->assertSame('entity_operations', $data[$this->baseEntityType->getBaseTable()]['operations']['field']['id']);
$tables = ['entity_test', 'entity_test_revision'];
$this->assertSame($tables, array_keys($data));
foreach ($tables as $table_name) {
$this->assertSame('entity_operations', $data[$table_name]['operations']['field']['id']);
}
}
/**
* @covers ::getViewsData
*/
public function testGetViewsDataWithNonRevisionableEntityOperations() {
$this->baseEntityType->setListBuilderClass('\Drupal\Core\Entity\EntityListBuilder');
$entity_type_without_revisions = $this->baseEntityType;
$views_data = $this->viewsData;
$entity_type_keys = $entity_type_without_revisions->getKeys();
unset($entity_type_keys['revision']);
$entity_type_without_revisions->set('entity_keys', $entity_type_keys);
$views_data->setEntityType($entity_type_without_revisions);
$data = $views_data->getViewsData();
$tables = ['entity_test'];
$this->assertSame($tables, array_keys($data));
foreach ($tables as $table_name) {
$this->assertSame('entity_operations', $data[$table_name]['operations']['field']['id']);
}
}
/**