function WhoIsOnlineBlockTest::testWhoIsOnlineBlock
Same name in other branches
- 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\KernelCode
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.