Verified Commit 3a87d23f authored by Lee Rowlands's avatar Lee Rowlands
Browse files

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

parent a7847919
Loading
Loading
Loading
Loading
+2 −0
Changes for core/modules/views/src/EntityViewsData.php: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -201,6 +201,7 @@ public function getViewsData() {
          'id' => 'entity_operations',
        ],
      ];
      if ($revision_table) {
        $data[$revision_table]['operations'] = [
          'field' => [
            'title' => $this->t('Operations links'),
@@ -209,6 +210,7 @@ public function getViewsData() {
          ],
        ];
      }
    }

    if ($this->entityType->hasViewBuilderClass()) {
      $data[$base_table]['rendered_entity'] = [
+30 −1
Changes for core/modules/views/tests/src/Unit/EntityViewsDataTest.php: 30 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -1009,7 +1009,36 @@ public function testGetViewsDataWithoutEntityOperations() {
  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']);
    }
  }

  /**