function DevelRouteInfoTest::testRouteDetail
Same name in other branches
- 4.x tests/src/Functional/DevelRouteInfoTest.php \Drupal\Tests\devel\Functional\DevelRouteInfoTest::testRouteDetail()
Tests route detail page.
File
-
tests/
src/ Functional/ DevelRouteInfoTest.php, line 117
Class
- DevelRouteInfoTest
- Tests routes info pages and links.
Namespace
Drupal\Tests\devel\FunctionalCode
public function testRouteDetail() : void {
$expected_title = 'Route detail';
$xpath_warning_messages = '//div[@aria-label="Warning message"]';
// Ensures that devel route detail link in the menu works properly.
$url = $this->develUser
->toUrl();
$path = '/' . $url->getInternalPath();
$this->drupalGet($url);
$this->clickLink('Current route info');
$this->assertSession()
->statusCodeEquals(200);
$this->assertSession()
->pageTextContains($expected_title);
// Absolute needed due to https://www.drupal.org/project/drupal/issues/3398551#comment-15313236.
$expected_url = Url::fromRoute('devel.route_info.item', [], [
'absolute' => TRUE,
'query' => [
'path' => $path,
],
]);
$this->assertSession()
->addressEquals($expected_url->toString());
$this->assertSession()
->elementNotExists('xpath', $xpath_warning_messages);
// Ensures that devel route detail works properly even when dynamic cache
// is enabled.
$url = Url::fromRoute('devel.simple_page');
$path = '/' . $url->getInternalPath();
$this->drupalGet($url);
$this->clickLink('Current route info');
$this->assertSession()
->statusCodeEquals(200);
$this->assertSession()
->pageTextContains($expected_title);
$expected_url = Url::fromRoute('devel.route_info.item', [], [
'absolute' => TRUE,
'query' => [
'path' => $path,
],
]);
$this->assertSession()
->addressEquals($expected_url->toString());
$this->assertSession()
->elementNotExists('xpath', $xpath_warning_messages);
// Ensures that if a non existent path is passed as input, a warning
// message is shown.
$this->drupalGet('devel/routes/item', [
'query' => [
'path' => '/undefined',
],
]);
$this->assertSession()
->statusCodeEquals(200);
$this->assertSession()
->pageTextContains($expected_title);
$this->assertSession()
->elementExists('xpath', $xpath_warning_messages);
// Ensures that the route detail page works properly when a valid route
// name input is passed.
$this->drupalGet('devel/routes/item', [
'query' => [
'route_name' => 'devel.simple_page',
],
]);
$this->assertSession()
->statusCodeEquals(200);
$this->assertSession()
->pageTextContains($expected_title);
$this->assertSession()
->elementNotExists('xpath', $xpath_warning_messages);
// Ensures that if a non existent route name is passed as input a warning
// message is shown.
$this->drupalGet('devel/routes/item', [
'query' => [
'route_name' => 'not.exists',
],
]);
$this->assertSession()
->statusCodeEquals(200);
$this->assertSession()
->pageTextContains($expected_title);
$this->assertSession()
->elementExists('xpath', $xpath_warning_messages);
// Ensures that if no 'path' nor 'name' query string is passed as input,
// devel route detail page does not return errors.
$this->drupalGet('devel/routes/item');
$this->assertSession()
->statusCodeEquals(200);
$this->assertSession()
->pageTextContains($expected_title);
// Ensures that the page is accessible ony to the users with the adequate
// permissions.
$this->drupalLogout();
$this->drupalGet('devel/routes/item');
$this->assertSession()
->statusCodeEquals(403);
}