function SqlContentEntityStorageTest::testGetTableMappingRevisionableWithFields
Same name in other branches
- 9 core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageTest.php \Drupal\Tests\Core\Entity\Sql\SqlContentEntityStorageTest::testGetTableMappingRevisionableWithFields()
- 8.9.x core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageTest.php \Drupal\Tests\Core\Entity\Sql\SqlContentEntityStorageTest::testGetTableMappingRevisionableWithFields()
- 11.x core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageTest.php \Drupal\Tests\Core\Entity\Sql\SqlContentEntityStorageTest::testGetTableMappingRevisionableWithFields()
Tests getTableMapping() with a revisionable entity type with fields.
@covers ::__construct @covers ::getTableMapping
@dataProvider providerTestGetTableMappingSimple
Parameters
string[] $entity_keys: A map of entity keys to use for the mocked entity type.
File
-
core/
tests/ Drupal/ Tests/ Core/ Entity/ Sql/ SqlContentEntityStorageTest.php, line 637
Class
- SqlContentEntityStorageTest
- @coversDefaultClass \Drupal\Core\Entity\Sql\SqlContentEntityStorage @group Entity
Namespace
Drupal\Tests\Core\Entity\SqlCode
public function testGetTableMappingRevisionableWithFields(array $entity_keys) : void {
// This allows to re-use the data provider.
$entity_keys = [
'id' => $entity_keys['id'],
'revision' => 'test_revision',
'bundle' => $entity_keys['bundle'],
'uuid' => $entity_keys['uuid'],
];
// PHPUnit does not allow for multiple data providers.
$test_cases = [
[],
[
'revision_created' => 'revision_timestamp',
],
[
'revision_user' => 'revision_uid',
],
[
'revision_log_message' => 'revision_log',
],
[
'revision_created' => 'revision_timestamp',
'revision_user' => 'revision_uid',
],
[
'revision_created' => 'revision_timestamp',
'revision_log_message' => 'revision_log',
],
[
'revision_user' => 'revision_uid',
'revision_log_message' => 'revision_log',
],
[
'revision_created' => 'revision_timestamp',
'revision_user' => 'revision_uid',
'revision_log_message' => 'revision_log',
],
];
foreach ($test_cases as $revision_metadata_field_names) {
$this->setUp();
$base_field_names = [
'title',
];
$field_names = array_merge(array_values(array_filter($entity_keys)), $base_field_names);
$this->fieldDefinitions = $this->mockFieldDefinitions($field_names);
$revisionable_field_names = [
'description',
'owner',
];
$field_names = array_merge($field_names, $revisionable_field_names);
$this->fieldDefinitions += $this->mockFieldDefinitions(array_merge($revisionable_field_names, array_values($revision_metadata_field_names)), [
'isRevisionable' => TRUE,
]);
$this->entityType
->expects($this->exactly(4))
->method('isRevisionable')
->willReturn(TRUE);
$this->entityType
->expects($this->any())
->method('getKey')
->willReturnMap([
[
'id',
$entity_keys['id'],
],
[
'uuid',
$entity_keys['uuid'],
],
[
'bundle',
$entity_keys['bundle'],
],
[
'revision',
$entity_keys['revision'],
],
]);
$this->entityType
->expects($this->any())
->method('getRevisionMetadataKeys')
->willReturn($revision_metadata_field_names);
$this->setUpEntityStorage();
$mapping = $this->entityStorage
->getTableMapping();
$expected = [
'entity_test',
'entity_test_revision',
];
$this->assertEquals($expected, $mapping->getTableNames());
$this->assertEquals($field_names, $mapping->getFieldNames('entity_test'));
$expected = array_merge([
$entity_keys['id'],
$entity_keys['revision'],
], $revisionable_field_names, array_values($revision_metadata_field_names));
$this->assertEquals($expected, $mapping->getFieldNames('entity_test_revision'));
$this->assertEquals([], $mapping->getExtraColumns('entity_test'));
$this->assertEquals([], $mapping->getExtraColumns('entity_test_revision'));
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.