public function EntityViewsDataTest::testRevisionTableFields in Drupal 10
Tests fields on the revision table.
File
- core/
modules/ views/ tests/ src/ Kernel/ Entity/ EntityViewsDataTest.php, line 521
Class
- EntityViewsDataTest
- Tests entity views data.
Namespace
Drupal\Tests\views\Kernel\EntityCode
public function testRevisionTableFields() {
$entity_type = $this->baseEntityType
->set('id', 'entity_test_mulrev')
->set('base_table', 'entity_test_mulrev')
->set('revision_table', 'entity_test_mulrev_revision')
->set('data_table', 'entity_test_mulrev_property_data')
->set('revision_data_table', 'entity_test_mulrev_property_revision')
->set('translatable', TRUE);
$base_field_definitions = $this->commonBaseFields;
$base_field_definitions['name']
->setRevisionable(TRUE);
$base_field_definitions['description']
->setRevisionable(TRUE);
$base_field_definitions['homepage']
->setRevisionable(TRUE);
$base_field_definitions['user_id']
->setRevisionable(TRUE);
$base_field_definitions['non_rev_field'] = BaseFieldDefinition::create('string')
->setLabel(t('Non Revisionable Field'))
->setDescription(t('A non-revisionable test field.'))
->setRevisionable(FALSE)
->setTranslatable(TRUE)
->setCardinality(1)
->setReadOnly(TRUE);
$base_field_definitions['non_mul_field'] = BaseFieldDefinition::create('string')
->setLabel(t('Non translatable'))
->setDescription(t('A non-translatable string field'))
->setRevisionable(TRUE);
$this
->setUpEntityType($entity_type, $base_field_definitions);
$data = $this->entityTypeManager
->getHandler('entity_test_mulrev', 'views_data')
->getViewsData();
// Check the base fields.
$this
->assertFalse(isset($data['entity_test_mulrev']['id']));
$this
->assertFalse(isset($data['entity_test_mulrev']['type']));
$this
->assertFalse(isset($data['entity_test_mulrev']['revision_id']));
$this
->assertUuidField($data['entity_test_mulrev']['uuid']);
$this
->assertViewsDataField($data['entity_test_mulrev']['uuid'], 'uuid');
// Also ensure that field_data only fields don't appear on the base table.
$this
->assertFalse(isset($data['entity_test_mulrev']['name']));
$this
->assertFalse(isset($data['entity_test_mul']['description']));
$this
->assertFalse(isset($data['entity_test_mul']['description__value']));
$this
->assertFalse(isset($data['entity_test_mul']['description__format']));
$this
->assertFalse(isset($data['entity_test_mul']['homepage']));
// $this->assertFalse(isset($data['entity_test_mulrev']['langcode']));
$this
->assertFalse(isset($data['entity_test_mulrev']['user_id']));
// Check the revision fields. The revision ID should only appear in the data
// table.
$this
->assertFalse(isset($data['entity_test_mulrev_revision']['revision_id']));
// Also ensure that field_data only fields don't appear on the revision table.
$this
->assertFalse(isset($data['entity_test_mulrev_revision']['id']));
$this
->assertFalse(isset($data['entity_test_mulrev_revision']['name']));
$this
->assertFalse(isset($data['entity_test_mulrev_revision']['description']));
$this
->assertFalse(isset($data['entity_test_mulrev_revision']['description__value']));
$this
->assertFalse(isset($data['entity_test_mulrev_revision']['description__format']));
$this
->assertFalse(isset($data['entity_test_mulrev_revision']['homepage']));
$this
->assertFalse(isset($data['entity_test_mulrev_revision']['user_id']));
// Check the data fields.
$this
->assertNumericField($data['entity_test_mulrev_property_data']['id']);
$this
->assertViewsDataField($data['entity_test_mulrev_property_data']['id'], 'id');
$this
->assertNumericField($data['entity_test_mulrev_property_data']['revision_id']);
$this
->assertViewsDataField($data['entity_test_mulrev_property_data']['revision_id'], 'revision_id');
$this
->assertLanguageField($data['entity_test_mulrev_property_data']['langcode']);
$this
->assertViewsDataField($data['entity_test_mulrev_property_data']['langcode'], 'langcode');
$this
->assertStringField($data['entity_test_mulrev_property_data']['name']);
$this
->assertViewsDataField($data['entity_test_mulrev_property_data']['name'], 'name');
$this
->assertLongTextField($data['entity_test_mulrev_property_data'], 'description');
$this
->assertViewsDataField($data['entity_test_mulrev_property_data']['description__value'], 'description');
$this
->assertViewsDataField($data['entity_test_mulrev_property_data']['description__format'], 'description');
$this
->assertUriField($data['entity_test_mulrev_property_data']['homepage']);
$this
->assertViewsDataField($data['entity_test_mulrev_property_data']['homepage'], 'homepage');
$this
->assertEntityReferenceField($data['entity_test_mulrev_property_data']['user_id']);
$this
->assertViewsDataField($data['entity_test_mulrev_property_data']['user_id'], 'user_id');
$relationship = $data['entity_test_mulrev_property_data']['user_id']['relationship'];
$this
->assertEquals('users_field_data', $relationship['base']);
$this
->assertEquals('uid', $relationship['base field']);
// Check the property data fields.
$this
->assertNumericField($data['entity_test_mulrev_property_revision']['id']);
$this
->assertViewsDataField($data['entity_test_mulrev_property_revision']['id'], 'id');
$this
->assertEquals('entity_test_mulrev_property_data', $data['entity_test_mulrev_property_revision']['id']['relationship']['base']);
$this
->assertEquals('id', $data['entity_test_mulrev_property_revision']['id']['relationship']['base field']);
$this
->assertEquals('entity_test_mulrev_property_data', $data['entity_test_mulrev_property_revision']['revision_id']['relationship']['base']);
$this
->assertEquals('revision_id', $data['entity_test_mulrev_property_revision']['revision_id']['relationship']['base field']);
$this
->assertLanguageField($data['entity_test_mulrev_property_revision']['langcode']);
$this
->assertViewsDataField($data['entity_test_mulrev_property_revision']['langcode'], 'langcode');
$this
->assertEquals('Translation language', $data['entity_test_mulrev_property_revision']['langcode']['title']);
$this
->assertStringField($data['entity_test_mulrev_property_revision']['name']);
$this
->assertViewsDataField($data['entity_test_mulrev_property_revision']['name'], 'name');
$this
->assertLongTextField($data['entity_test_mulrev_property_revision'], 'description');
$this
->assertViewsDataField($data['entity_test_mulrev_property_revision']['description__value'], 'description');
$this
->assertViewsDataField($data['entity_test_mulrev_property_revision']['description__format'], 'description');
$this
->assertUriField($data['entity_test_mulrev_property_revision']['homepage']);
$this
->assertViewsDataField($data['entity_test_mulrev_property_revision']['homepage'], 'homepage');
$this
->assertEntityReferenceField($data['entity_test_mulrev_property_revision']['user_id']);
$this
->assertViewsDataField($data['entity_test_mulrev_property_revision']['user_id'], 'user_id');
$relationship = $data['entity_test_mulrev_property_revision']['user_id']['relationship'];
$this
->assertEquals('users_field_data', $relationship['base']);
$this
->assertEquals('uid', $relationship['base field']);
$this
->assertStringField($data['entity_test_mulrev__string']['string_value']);
$this
->assertViewsDataField($data['entity_test_mulrev__string']['string_value'], 'string');
$this
->assertEquals([
'left_field' => 'id',
'field' => 'entity_id',
'extra' => [
[
'field' => 'deleted',
'value' => 0,
'numeric' => TRUE,
],
],
], $data['entity_test_mulrev__string']['table']['join']['entity_test_mulrev_property_data']);
$this
->assertStringField($data['entity_test_mulrev_revision__string']['string_value']);
$this
->assertViewsDataField($data['entity_test_mulrev_revision__string']['string_value'], 'string');
$this
->assertEquals([
'left_field' => 'revision_id',
'field' => 'entity_id',
'extra' => [
[
'field' => 'deleted',
'value' => 0,
'numeric' => TRUE,
],
],
], $data['entity_test_mulrev_revision__string']['table']['join']['entity_test_mulrev_property_revision']);
}