You are here

public function EntityViewsDataTest::testRevisionTableWithRevisionDataTableAndDataTable in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/views/tests/src/Unit/EntityViewsDataTest.php \Drupal\Tests\views\Unit\EntityViewsDataTest::testRevisionTableWithRevisionDataTableAndDataTable()

Tests revision table with data table support.

File

core/modules/views/tests/src/Unit/EntityViewsDataTest.php, line 294
Contains \Drupal\Tests\views\Unit\EntityViewsDataTest.

Class

EntityViewsDataTest
@coversDefaultClass \Drupal\views\EntityViewsData @group Views

Namespace

Drupal\Tests\views\Unit

Code

public function testRevisionTableWithRevisionDataTableAndDataTable() {
  $entity_type = $this->baseEntityType
    ->set('data_table', 'entity_test_mul_property_data')
    ->set('revision_table', 'entity_test_mulrev_revision')
    ->set('revision_data_table', 'entity_test_mulrev_property_revision')
    ->set('id', 'entity_test_mulrev')
    ->set('translatable', TRUE)
    ->setKey('revision', 'revision_id');
  $this->viewsData
    ->setEntityType($entity_type);
  $data = $this->viewsData
    ->getViewsData();
  $this
    ->assertEquals('Entity test revisions', $data['entity_test_mulrev_property_revision']['table']['base']['title']);
  $this
    ->assertEquals('revision_id', $data['entity_test_mulrev_property_revision']['table']['base']['field']);
  $this
    ->assertFalse(isset($data['entity_test_mulrev_revision']['table']['base']));
  $this
    ->assertEquals('entity_test_mulrev', $data['entity_test_mulrev_property_revision']['table']['entity type']);
  $this
    ->assertEquals('Entity test revision', $data['entity_test_mulrev_revision']['table']['group']);
  $this
    ->assertEquals('entity_test', $data['entity_test']['table']['provider']);

  // Ensure the join information is set up properly.
  // Tests the join definition between the base and the revision table.
  $revision_field_data = $data['entity_test_mulrev_property_revision'];
  $this
    ->assertCount(1, $revision_field_data['table']['join']);
  $this
    ->assertEquals([
    'entity_test_mul_property_data' => [
      'left_field' => 'revision_id',
      'field' => 'revision_id',
      'type' => 'INNER',
    ],
  ], $revision_field_data['table']['join']);
  $revision_base_data = $data['entity_test_mulrev_revision'];
  $this
    ->assertCount(1, $revision_base_data['table']['join']);
  $this
    ->assertEquals([
    'entity_test_mulrev_property_revision' => [
      'left_field' => 'revision_id',
      'field' => 'revision_id',
      'type' => 'INNER',
    ],
  ], $revision_base_data['table']['join']);
  $this
    ->assertFalse(isset($data['data_table']));
}