View source
<?php
namespace Drupal\multiversion\Tests;
use Drupal\Core\Entity\Query\QueryInterface;
use Drupal\simpletest\WebTestBase;
class UninstallTest extends WebTestBase {
protected $strictConfigSchema = FALSE;
protected $entityTypes = [
'node' => [
'type' => 'article',
'title' => 'foo',
],
'menu_link_content' => [
'menu_name' => 'menu_test',
'bundle' => 'menu_link_content',
'link' => [
[
'uri' => 'user-path:/',
],
],
],
'shortcut' => [
'shortcut_set' => 'default',
'title' => 'Llama',
'weight' => 0,
'link' => [
[
'uri' => 'internal:/admin',
],
],
],
];
public static $modules = [
'workspaces',
'multiversion',
'key_value',
'serialization',
'conflict',
'node',
'comment',
'menu_link_content',
'block_content',
'taxonomy',
'shortcut',
];
protected function setUp() {
parent::setUp();
$this->container
->get('multiversion.manager')
->enableEntityTypes();
$this
->drupalCreateContentType([
'type' => 'article',
'name' => 'Article',
]);
$this
->drupalLogin($this->rootUser);
}
public function testDisableWithExistingContent() {
$entity_type_manager = $this->container
->get('entity_type.manager');
foreach ($this->entityTypes as $entity_type_id => $values) {
$storage = $entity_type_manager
->getStorage($entity_type_id);
$count = 2;
for ($i = 0; $i < $count; $i++) {
$storage
->create($values)
->save();
}
$count_before[$entity_type_id] = $count;
}
$manager = $this->container
->get('multiversion.manager');
$manager
->disableEntityTypes();
$storage = $entity_type_manager
->getStorage('workspace');
$entities = $storage
->loadMultiple();
$storage
->delete($entities);
$this->container
->get('module_installer')
->uninstall([
'multiversion',
]);
$update_manager = \Drupal::entityDefinitionUpdateManager();
$update_manager
->applyUpdates();
$this
->assertFalse($update_manager
->needsUpdates(), 'There are not new updates to apply.');
$ids_after = [];
foreach ($this->entityTypes as $entity_type_id => $values) {
$storage = $entity_type_manager
->getStorage($entity_type_id);
$storage_class = $storage
->getEntityType($entity_type_id)
->getStorageClass();
$this
->assertFalse(strpos($storage_class, 'Drupal\\multiversion\\Entity\\Storage'), "{$entity_type_id} got the correct storage handler assigned.");
$this
->assertTrue($storage
->getQuery() instanceof QueryInterface, "{$entity_type_id} got the correct query handler assigned.");
$ids_after[$entity_type_id] = $storage
->getQuery()
->execute();
$this
->assertEqual($count_before[$entity_type_id], count($ids_after[$entity_type_id]), "All {$entity_type_id}s were migrated.");
}
}
}