public function OverridesSectionStorageTest::testAccess in Drupal 10
Same name and namespace in other branches
- 8 core/modules/layout_builder/tests/src/Kernel/OverridesSectionStorageTest.php \Drupal\Tests\layout_builder\Kernel\OverridesSectionStorageTest::testAccess()
- 9 core/modules/layout_builder/tests/src/Kernel/OverridesSectionStorageTest.php \Drupal\Tests\layout_builder\Kernel\OverridesSectionStorageTest::testAccess()
@covers ::access @dataProvider providerTestAccess
Parameters
bool $expected: The expected outcome of ::access().
bool $is_enabled: Whether Layout Builder is enabled for this display.
array $section_data: Data to store as the sections value for Layout Builder.
string[] $permissions: An array of permissions to grant to the user.
File
- core/
modules/ layout_builder/ tests/ src/ Kernel/ OverridesSectionStorageTest.php, line 73
Class
- OverridesSectionStorageTest
- @coversDefaultClass \Drupal\layout_builder\Plugin\SectionStorage\OverridesSectionStorage
Namespace
Drupal\Tests\layout_builder\KernelCode
public function testAccess($expected, $is_enabled, array $section_data, array $permissions) {
$display = LayoutBuilderEntityViewDisplay::create([
'targetEntityType' => 'entity_test',
'bundle' => 'entity_test',
'mode' => 'default',
'status' => TRUE,
]);
if ($is_enabled) {
$display
->enableLayoutBuilder();
}
$display
->setOverridable()
->save();
$entity = EntityTest::create([
OverridesSectionStorage::FIELD_NAME => $section_data,
]);
$entity
->save();
$account = $this
->setUpCurrentUser([], $permissions);
$this->plugin
->setContext('entity', EntityContext::fromEntity($entity));
$this->plugin
->setContext('view_mode', new Context(new ContextDefinition('string'), 'default'));
// Check access with both the global current user as well as passing one in.
$result = $this->plugin
->access('view');
$this
->assertSame($expected, $result);
$result = $this->plugin
->access('view', $account);
$this
->assertSame($expected, $result);
// Create a translation.
ConfigurableLanguage::createFromLangcode('es')
->save();
$entity = EntityTest::load($entity
->id());
$translation = $entity
->addTranslation('es');
$translation
->save();
$this->plugin
->setContext('entity', EntityContext::fromEntity($translation));
// Perform the same checks again but with a non default translation which
// should always deny access.
$result = $this->plugin
->access('view');
$this
->assertFalse($result);
$result = $this->plugin
->access('view', $account);
$this
->assertFalse($result);
}