Issue #2706947 by Jo Fitzgerald: Field migration rollback fails
parent
fd8e8afc16
commit
65898a54a6
|
@ -0,0 +1,77 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\field\Kernel\Migrate\d7;
|
||||
|
||||
use Drupal\field\Entity\FieldStorageConfig;
|
||||
use Drupal\migrate\MigrateExecutable;
|
||||
|
||||
/**
|
||||
* Migrates and rolls back Drupal 7 fields.
|
||||
*
|
||||
* @group field
|
||||
*/
|
||||
class RollbackFieldTest extends MigrateFieldTest {
|
||||
|
||||
/**
|
||||
* Tests migrating D7 fields to field_storage_config entities, then rolling back.
|
||||
*/
|
||||
public function testFields() {
|
||||
// Test that the fields have migrated (prior to rollback).
|
||||
parent::testFields();
|
||||
|
||||
$this->executeRollback('d7_field');
|
||||
|
||||
// Check that fields have been rolled back.
|
||||
$rolled_back_field_ids = [
|
||||
'comment.field_integer',
|
||||
'node.taxonomy_forums',
|
||||
'node.field_integer',
|
||||
'node.field_tags',
|
||||
'node.field_term_reference',
|
||||
'node.field_text_list',
|
||||
'node.field_text',
|
||||
'node.field_phone',
|
||||
'node.field_file',
|
||||
'node.field_images',
|
||||
'node.field_image',
|
||||
'node.field_long_text',
|
||||
'node.field_date_with_end_time',
|
||||
'node.field_integer_list',
|
||||
'node.field_date',
|
||||
'node.field_link',
|
||||
'node.field_float',
|
||||
'node.field_boolean',
|
||||
'node.field_email',
|
||||
'user.field_file',
|
||||
];
|
||||
foreach ($rolled_back_field_ids as $field_id) {
|
||||
$this->assertNull(FieldStorageConfig::load($field_id));
|
||||
}
|
||||
|
||||
// Check that fields that should persist have not been rolled back.
|
||||
$non_rolled_back_field_ids = [
|
||||
'node.body',
|
||||
'comment.comment_body',
|
||||
];
|
||||
foreach ($non_rolled_back_field_ids as $field_id) {
|
||||
$this->assertNotNull(FieldStorageConfig::load($field_id));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes a single rollback.
|
||||
*
|
||||
* @param string|\Drupal\migrate\Plugin\MigrationInterface $migration
|
||||
* The migration to rollback, or its ID.
|
||||
*/
|
||||
protected function executeRollback($migration) {
|
||||
if (is_string($migration)) {
|
||||
$this->migration = $this->getMigration($migration);
|
||||
}
|
||||
else {
|
||||
$this->migration = $migration;
|
||||
}
|
||||
(new MigrateExecutable($this->migration, $this))->rollback();
|
||||
}
|
||||
|
||||
}
|
|
@ -20,4 +20,12 @@ class EntityFieldStorageConfig extends EntityConfigBase {
|
|||
return $ids;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function rollback(array $destination_identifier) {
|
||||
$destination_identifier = implode('.', $destination_identifier);
|
||||
parent::rollback(array($destination_identifier));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue