function DevelControllerTest::testRouteGeneration

Same name in other branches
  1. 4.x tests/src/Functional/DevelControllerTest.php \Drupal\Tests\devel\Functional\DevelControllerTest::testRouteGeneration()

Tests route generation.

File

tests/src/Functional/DevelControllerTest.php, line 95

Class

DevelControllerTest
Tests Devel controller.

Namespace

Drupal\Tests\devel\Functional

Code

public function testRouteGeneration() : void {
    // Test Devel load and render routes for entities with both route
    // definitions.
    $this->drupalGet('entity_test/' . $this->entity
        ->id());
    $this->assertSession()
        ->statusCodeEquals(200);
    $this->assertSession()
        ->LinkExists('View');
    $this->assertSession()
        ->LinkExists('Edit');
    $this->assertSession()
        ->LinkExists('Devel');
    $this->drupalGet('devel/entity_test/' . $this->entity
        ->id());
    $this->assertSession()
        ->statusCodeEquals(200);
    $this->assertSession()
        ->LinkExists('Definition');
    $this->assertSession()
        ->LinkExists('Render');
    $this->assertSession()
        ->LinkExists('Load');
    $this->assertSession()
        ->LinkExists('Load (with references)');
    $this->assertSession()
        ->LinkExists('Path alias');
    $this->assertSession()
        ->linkByHrefExists('devel/render/entity_test/' . $this->entity
        ->id());
    $this->drupalGet('devel/render/entity_test/' . $this->entity
        ->id());
    $this->assertSession()
        ->statusCodeEquals(200);
    $this->assertSession()
        ->linkByHrefExists('devel/definition/entity_test/' . $this->entity
        ->id());
    $this->drupalGet('devel/definition/entity_test/' . $this->entity
        ->id());
    $this->assertSession()
        ->statusCodeEquals(200);
    // Test Devel load and render routes for entities with only canonical route
    // definitions.
    $this->drupalGet('devel_entity_test_canonical/' . $this->entityCanonical
        ->id());
    $this->assertSession()
        ->statusCodeEquals(200);
    $this->assertSession()
        ->LinkExists('View');
    $this->assertSession()
        ->LinkNotExists('Edit');
    $this->assertSession()
        ->LinkExists('Devel');
    // Use xpath with equality check on @data-drupal-link-system-path because
    // assertNoLinkByHref matches on partial values and finds the other link.
    $this->assertSession()
        ->elementNotExists('xpath', '//a[@data-drupal-link-system-path = "devel/devel_entity_test_canonical/' . $this->entityCanonical
        ->id() . '"]');
    $this->assertSession()
        ->elementExists('xpath', '//a[@data-drupal-link-system-path = "devel/render/devel_entity_test_canonical/' . $this->entityCanonical
        ->id() . '"]');
    $this->drupalGet('devel/devel_entity_test_canonical/' . $this->entityCanonical
        ->id());
    // This url used to be '404 not found', but is now '200 OK' following the
    // generating of devel load links for all entity types.
    // @see https://gitlab.com/drupalspoons/devel/-/issues/377
    $this->assertSession()
        ->statusCodeEquals(200);
    $this->drupalGet('devel/render/devel_entity_test_canonical/' . $this->entityCanonical
        ->id());
    $this->assertSession()
        ->statusCodeEquals(200);
    $this->assertSession()
        ->LinkExists('Definition');
    $this->assertSession()
        ->LinkExists('Render');
    $this->assertSession()
        ->LinkNotExists('Load');
    $this->assertSession()
        ->LinkNotExists('Load (with references)');
    $this->assertSession()
        ->LinkExists('Path alias');
    $this->assertSession()
        ->linkByHrefExists('devel/definition/devel_entity_test_canonical/' . $this->entityCanonical
        ->id());
    $this->drupalGet('devel/definition/devel_entity_test_canonical/' . $this->entityCanonical
        ->id());
    $this->assertSession()
        ->statusCodeEquals(200);
    // Test Devel load and render routes for entities with only edit route
    // definitions.
    $this->drupalGet('devel_entity_test_edit/manage/' . $this->entityEdit
        ->id());
    $this->assertSession()
        ->statusCodeEquals(200);
    $this->assertSession()
        ->LinkNotExists('View');
    $this->assertSession()
        ->LinkExists('Edit');
    $this->assertSession()
        ->LinkExists('Devel');
    $this->assertSession()
        ->linkByHrefExists('devel/devel_entity_test_edit/' . $this->entityEdit
        ->id());
    $this->drupalGet('devel/devel_entity_test_edit/' . $this->entityEdit
        ->id());
    $this->assertSession()
        ->statusCodeEquals(200);
    $this->assertSession()
        ->LinkExists('Definition');
    $this->assertSession()
        ->LinkNotExists('Render');
    $this->assertSession()
        ->LinkExists('Load');
    $this->assertSession()
        ->LinkExists('Load (with references)');
    $this->assertSession()
        ->LinkExists('Path alias');
    $this->assertSession()
        ->linkByHrefExists('devel/definition/devel_entity_test_edit/' . $this->entityEdit
        ->id());
    $this->assertSession()
        ->linkByHrefNotExists('devel/render/devel_entity_test_edit/' . $this->entityEdit
        ->id());
    $this->drupalGet('devel/definition/devel_entity_test_edit/' . $this->entityEdit
        ->id());
    $this->assertSession()
        ->statusCodeEquals(200);
    $this->drupalGet('devel/render/devel_entity_test_edit/' . $this->entityEdit
        ->id());
    $this->assertSession()
        ->statusCodeEquals(404);
    // Test Devel load and render routes for entities with no route
    // definitions.
    $this->drupalGet('devel_entity_test_no_links/' . $this->entityEdit
        ->id());
    $this->assertSession()
        ->statusCodeEquals(404);
    $this->drupalGet('devel/devel_entity_test_no_links/' . $this->entityNoLinks
        ->id());
    $this->assertSession()
        ->statusCodeEquals(200);
    $this->drupalGet('devel/render/devel_entity_test_no_links/' . $this->entityNoLinks
        ->id());
    $this->assertSession()
        ->statusCodeEquals(404);
    $this->drupalGet('devel/definition/devel_entity_test_no_links/' . $this->entityNoLinks
        ->id());
    $this->assertSession()
        ->statusCodeEquals(404);
}