function WorkspacesLayoutBuilderIntegrationTest::testBlocksInWorkspaces

Same name and namespace in other branches
  1. 11.x core/modules/workspaces/tests/src/FunctionalJavascript/WorkspacesLayoutBuilderIntegrationTest.php \Drupal\Tests\workspaces\FunctionalJavascript\WorkspacesLayoutBuilderIntegrationTest::testBlocksInWorkspaces()

Tests changing a layout/blocks inside a workspace.

File

core/modules/workspaces/tests/src/FunctionalJavascript/WorkspacesLayoutBuilderIntegrationTest.php, line 74

Class

WorkspacesLayoutBuilderIntegrationTest
Tests for layout editing in workspaces.

Namespace

Drupal\Tests\workspaces\FunctionalJavascript

Code

public function testBlocksInWorkspaces() : void {
  $assert_session = $this->assertSession();
  $this->drupalGet('node/1');
  $assert_session->pageTextContains('The DEFAULT block body');
  $this->drupalGet('node/2');
  $assert_session->pageTextContains('The DEFAULT block body');
  $stage = Workspace::load('stage');
  $this->switchToWorkspace($stage);
  // Confirm the block can be edited.
  $this->drupalGet('node/1/layout');
  $new_block_body = 'The NEW block body';
  $this->configureInlineBlock('The DEFAULT block body', $new_block_body);
  $this->assertSaveLayout();
  $this->drupalGet('node/1');
  $assert_session->pageTextContains($new_block_body);
  $assert_session->pageTextNotContains('The DEFAULT block body');
  $this->drupalGet('node/2');
  // Node 2 should use default layout.
  $assert_session->pageTextContains('The DEFAULT block body');
  $assert_session->pageTextNotContains($new_block_body);
  // Switch back to the live workspace and verify that the changes are not
  // visible there.
  $this->switchToLive();
  $this->drupalGet('node/1');
  $assert_session->pageTextNotContains($new_block_body);
  $assert_session->pageTextContains('The DEFAULT block body');
  $this->switchToWorkspace($stage);
  // Add a basic block with the body field set.
  $this->drupalGet('node/1/layout');
  $second_block_body = 'The 2nd block body';
  $this->addInlineBlockToLayout('2nd Block title', $second_block_body);
  $this->assertSaveLayout();
  $this->drupalGet('node/1');
  $assert_session->pageTextContains($second_block_body);
  $this->drupalGet('node/2');
  // Node 2 should use default layout.
  $assert_session->pageTextContains('The DEFAULT block body');
  $assert_session->pageTextNotContains($new_block_body);
  $assert_session->pageTextNotContains($second_block_body);
  // Switch back to the live workspace and verify that the new added block is
  // not visible there.
  $this->switchToLive();
  $this->drupalGet('node/1');
  $assert_session->pageTextNotContains($second_block_body);
  $assert_session->pageTextContains('The DEFAULT block body');
  // Check the concurrent editing protection on the Layout Builder form.
  $this->drupalGet('/node/1/layout');
  $assert_session->pageTextContains('The content is being edited in the Stage workspace. As a result, your changes cannot be saved.');
  $stage->publish();
  $this->drupalGet('node/1');
  $assert_session->pageTextNotContains('The DEFAULT block body');
  $assert_session->pageTextContains($new_block_body);
  $assert_session->pageTextContains($second_block_body);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.