GlobalConfigTest.php in Layout Builder Component Attributes 1.2.x
File
tests/src/Functional/GlobalConfigTest.php
View source
<?php
namespace Drupal\Tests\layout_builder_component_attributes\Functional;
use Drupal\Tests\BrowserTestBase;
class GlobalConfigTest extends BrowserTestBase {
protected $defaultTheme = 'stark';
protected static $modules = [
'block',
'layout_builder_component_attributes',
];
protected function setUp() : void {
parent::setUp();
$this->authUser = $this
->drupalCreateUser([
'access administration pages',
]);
$this->adminUser = $this
->drupalCreateUser([
'access administration pages',
'administer layout builder component attributes',
]);
$this
->drupalPlaceBlock('system_messages_block');
}
public function testGlobalConfigForm() {
$assert_session = $this
->assertSession();
$page = $this
->getSession()
->getPage();
$this
->drupalLogin($this->authUser);
$this
->drupalGet('/admin/config/content/layout-builder-component-attributes');
$assert_session
->statusCodeEquals(403);
$this
->drupalLogin($this->adminUser);
$this
->drupalGet('/admin/config/content/layout-builder-component-attributes');
$assert_session
->pageTextContains('Layout Builder Component Attributes Settings');
$assert_session
->checkboxChecked('allowed_block_attributes[id]');
$assert_session
->checkboxChecked('allowed_block_attributes[class]');
$assert_session
->checkboxChecked('allowed_block_attributes[style]');
$assert_session
->checkboxChecked('allowed_block_attributes[data]');
$assert_session
->checkboxChecked('allowed_block_title_attributes[id]');
$assert_session
->checkboxChecked('allowed_block_title_attributes[class]');
$assert_session
->checkboxChecked('allowed_block_title_attributes[style]');
$assert_session
->checkboxChecked('allowed_block_title_attributes[data]');
$assert_session
->checkboxChecked('allowed_block_content_attributes[id]');
$assert_session
->checkboxChecked('allowed_block_content_attributes[class]');
$assert_session
->checkboxChecked('allowed_block_content_attributes[style]');
$assert_session
->checkboxChecked('allowed_block_content_attributes[data]');
$page
->findField('allowed_block_attributes[id]')
->uncheck();
$page
->findField('allowed_block_title_attributes[class]')
->uncheck();
$page
->findField('allowed_block_content_attributes[style]')
->uncheck();
$page
->findField('allowed_block_content_attributes[data]')
->uncheck();
$page
->pressButton('Save configuration');
$assert_session
->pageTextContains('The configuration options have been saved.');
$this
->drupalGet('/admin/config/content/layout-builder-component-attributes');
$assert_session
->checkboxNotChecked('allowed_block_attributes[id]');
$assert_session
->checkboxChecked('allowed_block_attributes[class]');
$assert_session
->checkboxChecked('allowed_block_attributes[style]');
$assert_session
->checkboxChecked('allowed_block_attributes[data]');
$assert_session
->checkboxChecked('allowed_block_title_attributes[id]');
$assert_session
->checkboxNotChecked('allowed_block_title_attributes[class]');
$assert_session
->checkboxChecked('allowed_block_title_attributes[style]');
$assert_session
->checkboxChecked('allowed_block_title_attributes[data]');
$assert_session
->checkboxChecked('allowed_block_content_attributes[id]');
$assert_session
->checkboxChecked('allowed_block_content_attributes[class]');
$assert_session
->checkboxNotChecked('allowed_block_content_attributes[style]');
$assert_session
->checkboxNotChecked('allowed_block_content_attributes[data]');
$config = \Drupal::service('config.factory')
->getEditable('layout_builder_component_attributes.settings');
$config
->set('langcode', 'en');
$config
->save();
$allowed_block_attributes = $config
->get('allowed_block_attributes');
$expected_value = [
'class' => TRUE,
'style' => TRUE,
'data' => TRUE,
'id' => FALSE,
];
$this
->assertIdentical($allowed_block_attributes, $expected_value);
$allowed_block_title_attributes = $config
->get('allowed_block_title_attributes');
$expected_value = [
'id' => TRUE,
'style' => TRUE,
'data' => TRUE,
'class' => FALSE,
];
$this
->assertIdentical($allowed_block_title_attributes, $expected_value);
$allowed_block_content_attributes = $config
->get('allowed_block_content_attributes');
$expected_value = [
'id' => TRUE,
'class' => TRUE,
'style' => FALSE,
'data' => FALSE,
];
$this
->assertIdentical($allowed_block_content_attributes, $expected_value);
$this
->drupalGet('/admin/config/content/layout-builder-component-attributes');
$page
->pressButton('Save configuration');
}
}