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. 10 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.