public function SqlContentEntityStorageTest::testGetTableMappingRevisionableTranslatableWithFields in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageTest.php \Drupal\Tests\Core\Entity\Sql\SqlContentEntityStorageTest::testGetTableMappingRevisionableTranslatableWithFields()
Tests getTableMapping() with a complex 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 818 - Contains \Drupal\Tests\Core\Entity\Sql\SqlContentEntityStorageTest.
Class
- SqlContentEntityStorageTest
- @coversDefaultClass \Drupal\Core\Entity\Sql\SqlContentEntityStorage @group Entity
Namespace
Drupal\Tests\Core\Entity\SqlCode
public function testGetTableMappingRevisionableTranslatableWithFields(array $entity_keys) {
// This allows to re-use the data provider.
$entity_keys = array(
'id' => $entity_keys['id'],
'revision' => 'test_revision',
'bundle' => $entity_keys['bundle'],
'uuid' => $entity_keys['uuid'],
'langcode' => 'langcode',
);
// PHPUnit does not allow for multiple data providers.
$test_cases = array(
array(),
array(
'revision_timestamp',
),
array(
'revision_uid',
),
array(
'revision_log',
),
array(
'revision_timestamp',
'revision_uid',
),
array(
'revision_timestamp',
'revision_log',
),
array(
'revision_uid',
'revision_log',
),
array(
'revision_timestamp',
'revision_uid',
'revision_log',
),
);
foreach ($test_cases as $revision_metadata_field_names) {
$this
->setUp();
$base_field_names = array(
'title',
);
$field_names = array_merge(array_values(array_filter($entity_keys)), $base_field_names);
$this->fieldDefinitions = $this
->mockFieldDefinitions($field_names);
$revisionable_field_names = array(
'description',
'owner',
);
$this->fieldDefinitions += $this
->mockFieldDefinitions(array_merge($revisionable_field_names, $revision_metadata_field_names), array(
'isRevisionable' => TRUE,
));
$this->entityType
->expects($this
->atLeastOnce())
->method('isRevisionable')
->will($this
->returnValue(TRUE));
$this->entityType
->expects($this
->atLeastOnce())
->method('isTranslatable')
->will($this
->returnValue(TRUE));
$this->entityType
->expects($this
->atLeastOnce())
->method('getDataTable')
->will($this
->returnValue('entity_test_field_data'));
$this->entityType
->expects($this
->any())
->method('getKey')
->will($this
->returnValueMap(array(
array(
'id',
$entity_keys['id'],
),
array(
'uuid',
$entity_keys['uuid'],
),
array(
'bundle',
$entity_keys['bundle'],
),
array(
'revision',
$entity_keys['revision'],
),
array(
'langcode',
$entity_keys['langcode'],
),
)));
$this
->setUpEntityStorage();
$mapping = $this->entityStorage
->getTableMapping();
$expected = array(
'entity_test',
'entity_test_field_data',
'entity_test_revision',
'entity_test_field_revision',
);
$this
->assertEquals($expected, $mapping
->getTableNames());
$expected = array(
'entity_test',
'entity_test_field_data',
'entity_test_revision',
'entity_test_field_revision',
);
$this
->assertEquals($expected, $mapping
->getTableNames());
// The default language code is not stored on the base table.
$expected = array_values(array_filter(array(
$entity_keys['id'],
$entity_keys['revision'],
$entity_keys['bundle'],
$entity_keys['uuid'],
$entity_keys['langcode'],
)));
$actual = $mapping
->getFieldNames('entity_test');
$this
->assertEquals($expected, $actual);
// The revision table on the other hand does not store the bundle and the
// UUID.
$expected = array_merge(array_filter(array(
$entity_keys['id'],
$entity_keys['revision'],
$entity_keys['langcode'],
)), $revision_metadata_field_names);
$actual = $mapping
->getFieldNames('entity_test_revision');
$this
->assertEquals($expected, $actual);
// The UUID is not stored on the data table.
$expected = array_merge(array_filter(array(
$entity_keys['id'],
$entity_keys['revision'],
$entity_keys['bundle'],
$entity_keys['langcode'],
)), $base_field_names, $revisionable_field_names);
$actual = $mapping
->getFieldNames('entity_test_field_data');
$this
->assertEquals($expected, $actual);
// The data revision also does not store the bundle.
$expected = array_merge(array_filter(array(
$entity_keys['id'],
$entity_keys['revision'],
$entity_keys['langcode'],
)), $revisionable_field_names);
$actual = $mapping
->getFieldNames('entity_test_field_revision');
$this
->assertEquals($expected, $actual);
$expected = array();
$actual = $mapping
->getExtraColumns('entity_test');
$this
->assertEquals($expected, $actual);
$actual = $mapping
->getExtraColumns('entity_test_revision');
$this
->assertEquals($expected, $actual);
$actual = $mapping
->getExtraColumns('entity_test_field_data');
$this
->assertEquals($expected, $actual);
$actual = $mapping
->getExtraColumns('entity_test_field_revision');
$this
->assertEquals($expected, $actual);
}
}