function WorkspaceTest::testWorkspaceManagePage

Same name and namespace in other branches
  1. 9 core/modules/workspaces/tests/src/Functional/WorkspaceTest.php \Drupal\Tests\workspaces\Functional\WorkspaceTest::testWorkspaceManagePage()
  2. 11.x core/modules/workspaces/tests/src/Functional/WorkspaceTest.php \Drupal\Tests\workspaces\Functional\WorkspaceTest::testWorkspaceManagePage()

Tests the manage workspace page.

File

core/modules/workspaces/tests/src/Functional/WorkspaceTest.php, line 174

Class

WorkspaceTest
Test the workspace entity.

Namespace

Drupal\Tests\workspaces\Functional

Code

public function testWorkspaceManagePage() : void {
  $this->drupalCreateContentType([
    'type' => 'test',
    'label' => 'Test',
  ]);
  $permissions = [
    'administer taxonomy',
    'administer workspaces',
    'create test content',
    'delete any test content',
  ];
  $this->drupalLogin($this->drupalCreateUser($permissions));
  $this->setupWorkspaceSwitcherBlock();
  $assert_session = $this->assertSession();
  $vocabulary = $this->createVocabulary();
  $test_1 = $this->createWorkspaceThroughUi('Test 1', 'test_1');
  $test_2 = $this->createWorkspaceThroughUi('Test 2', 'test_2');
  $this->switchToWorkspace($test_1);
  // Check that the 'test_1' workspace doesn't contain any changes initially.
  $this->drupalGet($test_1->toUrl()
    ->toString());
  $assert_session->pageTextContains('This workspace has no changes.');
  // Check that the 'Switch to this workspace' action link is not displayed on
  // the manage page of the currently active workspace.
  $assert_session->linkNotExists('Switch to this workspace');
  $this->drupalGet($test_2->toUrl()
    ->toString());
  $assert_session->linkExists('Switch to this workspace');
  // Create some test content.
  $this->createNodeThroughUi('Node 1', 'test');
  $this->createNodeThroughUi('Node 2', 'test');
  $edit = [
    'name[0][value]' => 'Term 1',
  ];
  $this->drupalGet('admin/structure/taxonomy/manage/' . $vocabulary->id() . '/add');
  $this->submitForm($edit, 'Save');
  $this->drupalGet($test_1->toUrl()
    ->toString());
  $assert_session->pageTextContains('2 content items, 1 taxonomy term');
  $assert_session->linkExists('Node 1');
  $assert_session->linkExists('Node 2');
  $assert_session->linkExists('Term 1');
  // Create 50 more nodes to test the pagination.
  for ($i = 3; $i < 53; $i++) {
    $this->createNodeThroughUi('Node ' . $i, 'test');
  }
  $this->drupalGet($test_1->toUrl()
    ->toString());
  $assert_session->pageTextContains('52 content items');
  $assert_session->pageTextContains('1 taxonomy term');
  $assert_session->linkExists('Node 52');
  $assert_session->linkExists('Node 3');
  $assert_session->linkNotExists('Term 1');
  $this->drupalGet($test_1->toUrl()
    ->toString(), [
    'query' => [
      'page' => '1',
    ],
  ]);
  $assert_session->linkExists('Node 1');
  $assert_session->linkExists('Node 2');
  $assert_session->linkExists('Term 1');
}

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