public function MoveRevisionMetadataFieldsUpdateTest::testSystemUpdate8400 in Drupal 8
Tests that the revision metadata fields are moved correctly.
@expectedDeprecation The revision_user revision metadata key is not set for entity type: entity_test_mul_revlog See: https://www.drupal.org/node/2831499 @expectedDeprecation The revision_created revision metadata key is not set for entity type: entity_test_mul_revlog See: https://www.drupal.org/node/2831499 @expectedDeprecation The revision_log_message revision metadata key is not set for entity type: entity_test_mul_revlog See: https://www.drupal.org/node/2831499 @expectedDeprecation Support for pre-8.3.0 revision table names in imported views is deprecated in drupal:8.3.0 and is removed from drupal:9.0.0. Imported views must reference the correct tables. See https://www.drupal.org/node/2831499
File
- core/
modules/ system/ tests/ src/ Functional/ Entity/ Update/ MoveRevisionMetadataFieldsUpdateTest.php, line 39
Class
- MoveRevisionMetadataFieldsUpdateTest
- Tests the upgrade path for moving the revision metadata fields.
Namespace
Drupal\Tests\system\Functional\Entity\UpdateCode
public function testSystemUpdate8400() {
$this
->runUpdates();
foreach ([
'entity_test_revlog',
'entity_test_mul_revlog',
] as $entity_type_id) {
/** @var \Drupal\Core\Entity\ContentEntityStorageInterface $storage */
$storage = \Drupal::entityTypeManager()
->getStorage($entity_type_id);
/** @var \Drupal\Core\Entity\ContentEntityTypeInterface $entity_type */
$entity_type = $storage
->getEntityType();
$revision_metadata_field_names = $entity_type
->getRevisionMetadataKeys();
$database_schema = \Drupal::database()
->schema();
// Test that the revision metadata fields are present only in the
// revision table.
foreach ($revision_metadata_field_names as $revision_metadata_field_name) {
if ($entity_type
->isTranslatable()) {
$this
->assertFalse($database_schema
->fieldExists($entity_type
->getDataTable(), $revision_metadata_field_name));
$this
->assertFalse($database_schema
->fieldExists($entity_type
->getRevisionDataTable(), $revision_metadata_field_name));
}
else {
$this
->assertFalse($database_schema
->fieldExists($entity_type
->getBaseTable(), $revision_metadata_field_name));
}
$this
->assertTrue($database_schema
->fieldExists($entity_type
->getRevisionTable(), $revision_metadata_field_name));
}
// Test that the revision metadata values have been transferred correctly
// and that the moved fields are accessible.
/** @var \Drupal\Core\Entity\RevisionLogInterface $entity_rev_first */
$entity_rev_first = $storage
->loadRevision(1);
$this
->assertEqual($entity_rev_first
->getRevisionUserId(), '1');
$this
->assertEqual($entity_rev_first
->getRevisionLogMessage(), 'first revision');
$this
->assertEqual($entity_rev_first
->getRevisionCreationTime(), '1476268517');
/** @var \Drupal\Core\Entity\RevisionLogInterface $entity_rev_second */
$entity_rev_second = $storage
->loadRevision(2);
$this
->assertEqual($entity_rev_second
->getRevisionUserId(), '1');
$this
->assertEqual($entity_rev_second
->getRevisionLogMessage(), 'second revision');
$this
->assertEqual($entity_rev_second
->getRevisionCreationTime(), '1476268518');
// Test that the views using revision metadata fields are updated
// properly.
$view = View::load($entity_type_id . '_for_2248983');
$displays = $view
->get('display');
foreach ($displays as $display => $display_data) {
foreach ($display_data['display_options']['fields'] as $property_data) {
if (in_array($property_data['field'], $revision_metadata_field_names)) {
$this
->assertEqual($property_data['table'], $entity_type
->getRevisionTable());
}
}
}
}
}