protected function ContentLockTimeoutTest::doTestForEntity in Content locking (anti-concurrent editing) 8
Same name and namespace in other branches
- 8.2 modules/content_lock_timeout/tests/src/Functional/ContentLockTimeoutTest.php \Drupal\Tests\content_lock_timeout\Functional\ContentLockTimeoutTest::doTestForEntity()
 
Run the same tests for node, block and term.
Parameters
\Drupal\Core\Entity\EntityInterface $entity: The entity to tests.
Throws
\Drupal\Core\Entity\EntityMalformedException
2 calls to ContentLockTimeoutTest::doTestForEntity()
- ContentLockTimeoutTest::testContentLockNode in modules/
content_lock_timeout/ tests/ src/ Functional/ ContentLockTimeoutTest.php  - Test content lock timeout with nodes.
 - ContentLockTimeoutTest::testContentLockTerm in modules/
content_lock_timeout/ tests/ src/ Functional/ ContentLockTimeoutTest.php  - Test content lock timeout with terms.
 
File
- modules/
content_lock_timeout/ tests/ src/ Functional/ ContentLockTimeoutTest.php, line 238  
Class
- ContentLockTimeoutTest
 - Test content_lock_timeout sub module.
 
Namespace
Drupal\Tests\content_lock_timeout\FunctionalCode
protected function doTestForEntity(EntityInterface $entity) {
  // We lock article1.
  $this
    ->drupalLogin($this->user2);
  $this
    ->lockContentByUser1($entity);
  // Content should be locked.
  $this
    ->drupalGet($entity
    ->toUrl('edit-form')
    ->toString());
  $this
    ->assertText(t('This content is being edited by the user @name and is therefore locked to prevent other users changes.', [
    '@name' => $this->user1
      ->getDisplayName(),
  ]));
  // Jump into future to release lock.
  \Drupal::time()
    ->setCurrentTime(time() + 60 * 60);
  $this
    ->cronRun();
  \Drupal::time()
    ->resetCurrentTime();
  // Content should be unlocked by cron.
  $this
    ->assertNoLockOnContent($entity);
  $this
    ->drupalGet($entity
    ->toUrl('edit-form')
    ->toString());
  $this
    ->assertText(t('This content is now locked against simultaneous editing.'));
  $this
    ->drupalLogout();
  // There should be no lock on the content after logout.
  $this
    ->assertNoLockOnContent($entity);
  $this
    ->lockContentByUser1($entity);
  $this
    ->drupalLogin($this->user2);
  // Content should be locked.
  $this
    ->drupalGet($entity
    ->toUrl('edit-form')
    ->toString());
  $this
    ->assertText(t('This content is being edited by the user @name and is therefore locked to prevent other users changes.', [
    '@name' => $this->user1
      ->getDisplayName(),
  ]));
  // Jump into the future.
  \Drupal::time()
    ->setCurrentTime(time() + 60 * 60);
  // Lock should be release by form prepare.
  $this
    ->drupalGet($entity
    ->toUrl('edit-form')
    ->toString());
  $this
    ->assertText(t('This content is now locked against simultaneous editing.'));
}