View source
<?php
namespace Drupal\Tests\session_example\Functional;
use Drupal\Core\Url;
use Drupal\Tests\BrowserTestBase;
class SessionExampleTest extends BrowserTestBase {
protected $defaultTheme = 'stark';
public static $modules = [
'session_example',
'block',
];
protected function setUp() {
parent::setUp();
$this
->drupalPlaceBlock('local_tasks_block', [
'region' => 'content',
]);
$this
->drupalPlaceBlock('system_menu_block:tools', []);
$this
->drupalLogin($this
->createUser([
'access content',
]));
}
public function testSessionExampleLinks() {
$assert = $this
->assertSession();
$routes_with_menu_links = [
'session_example.form' => [
'Save',
'Clear Session',
],
];
$this
->drupalGet('');
foreach (array_keys($routes_with_menu_links) as $route) {
$assert
->linkByHrefExists(Url::fromRoute($route)
->getInternalPath());
}
$routes = [
'session_example.view' => [],
];
$routes = array_merge($routes_with_menu_links, $routes);
foreach ($routes as $route => $buttons) {
$url = Url::fromRoute($route);
$this
->drupalGet($url);
$assert
->statusCodeEquals(200);
foreach ($buttons as $button) {
$this
->drupalPostForm($url, [], $button);
$assert
->statusCodeEquals(200);
}
}
}
public function testSessionExample() {
$assert = $this
->assertSession();
$this
->drupalGet(Url::fromRoute('session_example.form'));
$assert
->responseContains('placeholder="Your name."', 'Name placeholder contains Your name');
$assert
->responseContains('placeholder="Your email address."', 'Email placeholder contains Your email address.');
$assert
->responseContains('placeholder="What is your quest?"', 'Quest placeholder contains What is your quest?');
$this
->clickLink('View');
$assert
->pageTextContains('No name');
$assert
->pageTextContains('No email');
$assert
->pageTextContains('No quest');
$assert
->pageTextContains('No color');
$this
->drupalPostForm(Url::fromRoute('session_example.form'), [], 'Save');
$assert
->pageTextContains('The session has been saved successfully.');
$this
->clickLink('Check here');
$assert
->pageTextContains('No name');
$assert
->pageTextContains('No email');
$assert
->pageTextContains('No quest');
$assert
->pageTextContains('No color');
$form_data = [
'name' => 'Sir Lancelot',
'quest' => 'To seek the Grail',
'color' => 'blue',
];
$this
->drupalPostForm(Url::fromRoute('session_example.form'), $form_data, 'Save');
$this
->clickLink('Check here');
foreach ($form_data as $value) {
$assert
->pageTextContains($value);
}
$this
->drupalPostForm(Url::fromRoute('session_example.form'), [], 'Clear Session');
$assert
->pageTextContains('Session is cleared.');
$this
->clickLink('View');
$assert
->pageTextContains('No name');
$assert
->pageTextContains('No email');
$assert
->pageTextContains('No quest');
$assert
->pageTextContains('No color');
}
public function testUserIsolation() {
$assert = $this
->assertSession();
$form_data = [
'name' => 'Sir Lancelot',
'quest' => 'To seek the Grail',
'color' => 'blue',
];
$this
->drupalPostForm(Url::fromRoute('session_example.form'), $form_data, 'Save');
$this
->clickLink('Check here');
foreach ($form_data as $value) {
$assert
->pageTextContains($value);
}
$this
->drupalLogin($this
->createUser([
'access content',
]));
$this
->drupalGet(Url::fromRoute('session_example.view'));
$assert
->statusCodeEquals(200);
$assert
->pageTextContains('No name');
$assert
->pageTextContains('No email');
$assert
->pageTextContains('No quest');
$assert
->pageTextContains('No color');
}
}