function WorkspaceIntegrationTest::testNodeAccessDifferringRevisionIdsOnTarget

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

Tests workspace publishing is not sensitive to node access.

The node_access_test module makes anonymous nodes unviewable, so enable it and test getDifferringRevisionIdsOnTarget() with an anonymous node.

File

core/modules/workspaces/tests/src/Kernel/WorkspaceIntegrationTest.php, line 1117

Class

WorkspaceIntegrationTest
Tests a complete publishing scenario across different workspaces.

Namespace

Drupal\Tests\workspaces\Kernel

Code

public function testNodeAccessDifferringRevisionIdsOnTarget() : void {
  $this->initializeWorkspacesModule();
  \Drupal::service('module_installer')->install([
    'node_access_test',
  ]);
  node_access_rebuild();
  // Edit node 1 in 'stage'.
  $this->switchToWorkspace('stage');
  $node = $this->entityTypeManager
    ->getStorage('node')
    ->load(1);
  $node->setTitle('stage - 1 - r3 - unpublished');
  $node->save();
  // Edit node 1 in 'live', and ensure it's anonymous.
  $this->switchToWorkspace('live');
  $node = $this->entityTypeManager
    ->getStorage('node')
    ->load(1);
  $node->setTitle('live - 1 - r4 - unpublished');
  $node->set('uid', 0);
  $node->save();
  /** @var \Drupal\workspaces\WorkspacePublisher $workspace_publisher */
  $workspace_publisher = \Drupal::service('workspaces.operation_factory')->getPublisher($this->workspaces['stage']);
  // Check which revisions are tracked on stage but differ on target.
  $expected = [
    'node' => [
      4 => 1,
    ],
  ];
  $this->assertEquals($expected, $workspace_publisher->getDifferringRevisionIdsOnTarget());
  // Check that there are no more revisions to push after publishing.
  $this->workspaces['stage']
    ->publish();
  $this->assertEmpty($workspace_publisher->getDifferringRevisionIdsOnTarget());
}

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