function WhoIsOnlineBlockTest::testWhoIsOnlineBlock

Same name and namespace in other branches
  1. 11.x core/modules/user/tests/src/Kernel/WhoIsOnlineBlockTest.php \Drupal\Tests\user\Kernel\WhoIsOnlineBlockTest::testWhoIsOnlineBlock()

Tests the Who's Online block.

File

core/modules/user/tests/src/Kernel/WhoIsOnlineBlockTest.php, line 78

Class

WhoIsOnlineBlockTest
Tests the Who's Online Block.

Namespace

Drupal\Tests\user\Kernel

Code

public function testWhoIsOnlineBlock() : void {
  // Generate users.
  $user1 = User::create([
    'name' => 'user1',
    'mail' => 'user1@example.com',
    'roles' => [
      $this->createRole([
        'access user profiles',
      ]),
    ],
  ]);
  $user1->activate();
  $requestTime = \Drupal::time()->getRequestTime();
  $user1->setLastAccessTime($requestTime);
  $user1->save();
  $user2 = User::create([
    'name' => 'user2',
    'mail' => 'user2@example.com',
  ]);
  $user2->activate();
  $user2->setLastAccessTime($requestTime + 1);
  $user2->save();
  $user3 = User::create([
    'name' => 'user3',
    'mail' => 'user2@example.com',
  ]);
  $user3->activate();
  // Insert an inactive user who should not be seen in the block.
  $inactive_time = $requestTime - 60 * 60;
  $user3->setLastAccessTime($inactive_time);
  $user3->save();
  // Test block output.
  \Drupal::currentUser()->setAccount($user1);
  // Test the rendering of a block.
  $entity = Block::load('views_block__who_s_online_who_s_online_block');
  $output = \Drupal::entityTypeManager()->getViewBuilder($entity->getEntityTypeId())
    ->view($entity, 'block');
  $this->setRawContent($this->renderer
    ->renderRoot($output));
  $this->assertRaw('2 users', 'Correct number of online users (2 users).');
  $this->assertText($user1->getAccountName(), 'Active user 1 found in online list.');
  $this->assertText($user2->getAccountName(), 'Active user 2 found in online list.');
  $this->assertNoText($user3->getAccountName(), 'Inactive user not found in online list.');
  // Verify that online users are ordered correctly.
  $raw_content = (string) $this->getRawContent();
  $this->assertGreaterThan(strpos($raw_content, $user2->getAccountName()), strpos($raw_content, $user1->getAccountName()));
}

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