You are here

public function LayoutRestrictionsTest::testLayoutRestriction in Layout Builder Restrictions 8.2

Verify that the UI can restrict layouts in Layout Builder settings tray.

File

tests/src/FunctionalJavascript/LayoutRestrictionsTest.php, line 15

Class

LayoutRestrictionsTest
Demonstrate that blocks can be individually restricted.

Namespace

Drupal\Tests\layout_builder_restrictions\FunctionalJavascript

Code

public function testLayoutRestriction() {

  // Create 2 custom block types, with 3 block instances.
  $blocks = $this
    ->generateTestBlocks();
  $node_id = $this
    ->generateTestNode();
  $assert_session = $this
    ->assertSession();
  $page = $this
    ->getSession()
    ->getPage();

  // Baseline: 'One column' & 'Two column' layouts are available.
  $this
    ->navigateToNodeSettingsTray($node_id);
  $this
    ->clickLink('Add section');
  $this
    ->assertNotEmpty($assert_session
    ->waitForText('Choose a layout for this section'));
  $assert_session
    ->linkExists('One column');
  $assert_session
    ->linkExists('Two column');

  // Allow only 'Two column' layout.
  $this
    ->navigateToManageDisplay();
  $element = $page
    ->find('xpath', '//*[@id="edit-layout-builder-restrictions-allowed-layouts"]/summary');
  $element
    ->click();
  $element = $page
    ->find('xpath', '//*[@id="edit-layout-builder-restrictions-allowed-layouts-layout-restriction-all"]');
  $assert_session
    ->checkboxChecked('edit-layout-builder-restrictions-allowed-layouts-layout-restriction-all');
  $assert_session
    ->checkboxNotChecked('edit-layout-builder-restrictions-allowed-layouts-layout-restriction-restricted');
  $element = $page
    ->find('xpath', '//*[@id="edit-layout-builder-restrictions-allowed-layouts-layout-restriction-restricted"]');
  $element
    ->click();
  $element = $page
    ->find('xpath', '//*[@id="edit-layout-builder-restrictions-allowed-layouts-layouts-layout-twocol-section"]');
  $element
    ->click();
  $page
    ->pressButton('Save');

  // Verify 'Two column' is allowed, 'One column' restricted.
  $this
    ->navigateToNodeSettingsTray($node_id);
  $this
    ->clickLink('Add section');
  $this
    ->assertNotEmpty($assert_session
    ->waitForText('Choose a layout for this section'));
  $assert_session
    ->linkNotExists('One column');
  $assert_session
    ->linkExists('Two column');
}