You are here

public function ScheduledTransitionModalFormTest::testAlterTargetRevisionIds in Scheduled Transitions 2.x

Tests ability to alter target revisions via query alter hook.

@covers \Drupal\scheduled_transitions\ScheduledTransitionsUtility::getTargetRevisionIds

See also

\Drupal\scheduled_transitions\ScheduledTransitionsUtility::QUERY_TAG_TARGET_REVISIONS

\scheduled_transitions_target_revisions_test_query_scheduled_transitions_target_revisions_alter()

File

tests/src/Functional/ScheduledTransitionModalFormTest.php, line 164

Class

ScheduledTransitionModalFormTest
Tests the route to add a new transition to an entity (modal form).

Namespace

Drupal\Tests\scheduled_transitions\Functional

Code

public function testAlterTargetRevisionIds() {
  $this
    ->enabledBundles([
    [
      'st_entity_test',
      'st_entity_test',
    ],
  ]);
  $workflow = $this
    ->createEditorialWorkflow();
  $workflow
    ->getTypePlugin()
    ->addEntityTypeAndBundle('st_entity_test', 'st_entity_test');
  $workflow
    ->save();
  $currentUser = $this
    ->drupalCreateUser([
    'administer st_entity_test entities',
    'use editorial transition create_new_draft',
    'use editorial transition publish',
    'use editorial transition archive',
    Permissions::addScheduledTransitionsPermission('st_entity_test', 'st_entity_test'),
  ]);
  $this
    ->drupalLogin($currentUser);

  /** @var \Drupal\scheduled_transitions_test\Entity\ScheduledTransitionsTestEntity $entity */
  $entity = ScheduledTransitionsTestEntity::create([
    'type' => 'st_entity_test',
  ]);

  // Create a revision which will be filtered out by alter hook.
  // Changing 'name' is required to counter
  // https://www.drupal.org/project/drupal/issues/2859042.
  $entity->name = 'rev 1';
  $entity
    ->setNewRevision();
  $entity
    ->setRevisionCreationTime((new \DateTime('1st June 2015'))
    ->getTimestamp());
  $entity
    ->setRevisionLogMessage('June 2015 Revision');
  $entity
    ->save();

  // Create a revision which will still be visible.
  $entity->name = 'rev 2';
  $entity
    ->setNewRevision();
  $entity
    ->setRevisionCreationTime((new \DateTime('1st August 2015'))
    ->getTimestamp());
  $entity
    ->setRevisionLogMessage('August 2015 Revision');
  $entity
    ->save();

  // Access the modal directly.
  $this
    ->drupalGet($entity
    ->toUrl(ScheduledTransitionsRouteProvider::LINK_TEMPLATE_ADD));
  $this
    ->assertSession()
    ->pageTextNotContains('June 2015 Revision');
  $this
    ->assertSession()
    ->pageTextContains('August 2015 Revision');
}