View source
<?php
namespace Drupal\Tests\workbench_access\Functional;
use Drupal\block\Entity\Block;
use Drupal\FunctionalTests\Update\UpdatePathTestBase;
use Drupal\workbench_access\WorkbenchAccessManagerInterface;
use Drupal\Tests\workbench_access\Traits\WorkbenchAccessTestTrait;
class UpdatePathTest extends UpdatePathTestBase {
use WorkbenchAccessTestTrait;
protected $defaultTheme = 'stable';
protected function setUp() {
parent::setUp();
if (!$this
->isDrupal8()) {
$this
->markTestSkipped('The upgrade test is not supported in Drupal 9.');
}
}
protected function setDatabaseDumpFiles() {
$this->databaseDumpFiles = [
__DIR__ . '/../../fixtures/workbench_access.update-hook-test.php.gz',
__DIR__ . '/../../fixtures/workbench_access.block-placement.php',
];
}
public function testUpdatePath() {
$expected_new_config = [
'deny_on_empty' => \Drupal::config('workbench_access.settings')
->get('deny_on_empty'),
'_core' => \Drupal::config('workbench_access.settings')
->get('_core'),
];
$block = Block::load('workbench_access_block');
$this
->assertTrue(empty($block
->get('settings')['context_mapping']));
$this
->runUpdates();
$this
->assertEquals($expected_new_config, \Drupal::config('workbench_access.settings')
->getRawData());
$this
->assertEquals('default', $this->container
->get('state')
->get('workbench_access_upgraded_scheme_id'));
$entity_type_manager = $this->container
->get('entity_type.manager');
$block = $entity_type_manager
->getStorage('block')
->loadUnchanged('workbench_access_block');
$this
->assertEquals([
'node' => '@node.node_route_context:node',
], $block
->get('settings')['context_mapping']);
$scheme = $entity_type_manager
->getStorage('access_scheme')
->load('default');
$this
->assertEquals('Section', $scheme
->label());
$this
->assertEquals('Sections', $scheme
->getPluralLabel());
$this
->assertEquals('taxonomy', $scheme
->getAccessScheme()
->getPluginId());
$this
->assertEquals([
'fields' => [
[
'entity_type' => 'node',
'bundle' => 'article',
'field' => 'field_tags',
],
],
'vocabularies' => [
'tags',
],
], $scheme
->getAccessScheme()
->getConfiguration());
$user_storage = $this->container
->get('workbench_access.user_section_storage');
$role_storage = $this->container
->get('workbench_access.role_section_storage');
$terms = $entity_type_manager
->getStorage('taxonomy_term')
->loadByProperties([
'name' => 'section 1',
]);
$term = reset($terms);
$users = $entity_type_manager
->getStorage('user')
->loadByProperties([
'name' => 'robbo',
]);
$user = reset($users);
$editors = $user_storage
->getEditors($scheme, $term
->id());
$this
->assertNotEmpty($editors);
$this
->assertEquals([
$user
->id() => 'robbo',
], $editors);
$sections = $user_storage
->getUserSections($scheme, $user);
$this
->assertNotEmpty($sections);
$this
->assertContains($term
->id(), $sections);
$roles = $role_storage
->getRoles($scheme, $term
->id());
$this
->assertNotEmpty($roles);
$this
->assertEquals([
'editors',
], $roles);
$views_data = $this->container
->get('views.views_data')
->getAll();
$this
->assertNotEmpty($views_data['node']['workbench_access_section']);
$this
->assertEquals('default', $views_data['node']['workbench_access_section']['field']['scheme']);
$this
->assertEquals('default', $views_data['node']['workbench_access_section']['filter']['scheme']);
$this
->assertEquals('default', $views_data['users']['workbench_access_section']['field']['scheme']);
$this
->assertEquals('default', $views_data['users']['workbench_access_section']['filter']['scheme']);
$this
->assertNotEmpty($views_data['users']['workbench_access_section']);
$field_storage = \Drupal::entityTypeManager()
->getStorage('field_config');
$field = $field_storage
->load(WorkbenchAccessManagerInterface::FIELD_NAME);
$this
->assertEmpty($field);
$field_storage_config = \Drupal::entityTypeManager()
->getStorage('field_storage_config');
$field = $field_storage_config
->load(WorkbenchAccessManagerInterface::FIELD_NAME);
$this
->assertEmpty($field);
$this
->drupalGet('user/register');
$installer = \Drupal::service('module_installer');
$installer
->install([
'workbench_access_hooks',
]);
$settings = [];
$config = \Drupal::state()
->get('workbench_access_original_configuration', FALSE);
\Drupal::moduleHandler()
->alter('workbench_access_scheme_update', $settings, $config);
$expected = [
'test' => 'test',
];
$this
->assertEquals($expected, $settings);
}
}