Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / modules / contrib / devel / tests / src / Functional / DevelControllerTest.php
diff --git a/web/modules/contrib/devel/tests/src/Functional/DevelControllerTest.php b/web/modules/contrib/devel/tests/src/Functional/DevelControllerTest.php
new file mode 100644 (file)
index 0000000..0fc375a
--- /dev/null
@@ -0,0 +1,122 @@
+<?php
+
+namespace Drupal\Tests\devel\Functional;
+
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Tests Devel controller.
+ *
+ * @group devel
+ */
+class DevelControllerTest extends BrowserTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['devel', 'node', 'entity_test', 'devel_entity_test', 'block'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    // Create a test entity.
+    $random_label = $this->randomMachineName();
+    $data = ['type' => 'entity_test', 'name' => $random_label];
+    $this->entity = entity_create('entity_test', $data);
+    $this->entity->save();
+
+    // Create a test entity with only canonical route.
+    $random_label = $this->randomMachineName();
+    $data = ['type' => 'devel_entity_test_canonical', 'name' => $random_label];
+    $this->entity_canonical = entity_create('devel_entity_test_canonical', $data);
+    $this->entity_canonical->save();
+
+    // Create a test entity with only edit route.
+    $random_label = $this->randomMachineName();
+    $data = ['type' => 'devel_entity_test_edit', 'name' => $random_label];
+    $this->entity_edit = entity_create('devel_entity_test_edit', $data);
+    $this->entity_edit->save();
+
+    // Create a test entity with no routes.
+    $random_label = $this->randomMachineName();
+    $data = ['type' => 'devel_entity_test_no_links', 'name' => $random_label];
+    $this->entity_no_links = entity_create('devel_entity_test_no_links', $data);
+    $this->entity_no_links->save();
+
+    $this->drupalPlaceBlock('local_tasks_block');
+
+    $web_user = $this->drupalCreateUser([
+      'view test entity',
+      'administer entity_test content',
+      'access devel information',
+    ]);
+    $this->drupalLogin($web_user);
+  }
+
+  function testRouteGeneration() {
+    // Test Devel load and render routes for entities with both route
+    // definitions.
+    $this->drupalGet('entity_test/' . $this->entity->id());
+    $this->assertText('Devel', 'Devel tab is present');
+    $this->drupalGet('devel/entity_test/' . $this->entity->id());
+    $this->assertResponse(200);
+    $this->assertText('Definition', 'Devel definition tab is present');
+    $this->assertText('Load', 'Devel load tab is present');
+    $this->assertText('Render', 'Devel load tab is present');
+    $this->assertLinkByHref('devel/entity_test/' . $this->entity->id() . '/render');
+    $this->drupalGet('devel/entity_test/' . $this->entity->id() . '/render');
+    $this->assertResponse(200);
+    $this->assertLinkByHref('devel/entity_test/' . $this->entity->id() . '/definition');
+    $this->drupalGet('devel/entity_test/' . $this->entity->id() . '/definition');
+    $this->assertResponse(200);
+
+    // Test Devel load and render routes for entities with only canonical route
+    // definitions.
+    $this->drupalGet('devel_entity_test_canonical/' . $this->entity_canonical->id());
+    $this->assertText('Devel', 'Devel tab is present');
+    //TODO this fail since assertNoLinkByHref search by partial value.
+    //$this->assertNoLinkByHref('devel/devel_entity_test_canonical/' . $this->entity_canonical->id());
+    $this->assertLinkByHref('devel/devel_entity_test_canonical/' . $this->entity_canonical->id() . '/render');
+    $this->drupalGet('devel/devel_entity_test_canonical/' . $this->entity_canonical->id());
+    $this->assertResponse(404);
+    $this->drupalGet('devel/devel_entity_test_canonical/' . $this->entity_canonical->id() . '/render');
+    $this->assertResponse(200);
+    $this->assertLinkByHref('devel/devel_entity_test_canonical/' . $this->entity_canonical->id() . '/definition');
+    $this->drupalGet('devel/devel_entity_test_canonical/' . $this->entity_canonical->id() . '/definition');
+    $this->assertResponse(200);
+
+    // Test Devel load and render routes for entities with only edit route
+    // definitions.
+    $this->drupalGet('devel_entity_test_edit/manage/' . $this->entity_edit->id());
+    $this->assertText('Devel', 'Devel tab is present');
+    $this->assertLinkByHref('devel/devel_entity_test_edit/' . $this->entity_edit->id());
+    $this->assertNoLinkByHref('devel/devel_entity_test_edit/' . $this->entity_edit->id() . '/render');
+    $this->assertNoLinkByHref('devel/devel_entity_test_edit/' . $this->entity_edit->id() . '/definition');
+    $this->drupalGet('devel/devel_entity_test_edit/' . $this->entity_edit->id());
+    $this->assertResponse(200);
+    $this->drupalGet('devel/devel_entity_test_edit/' . $this->entity_edit->id() . '/render');
+    $this->assertResponse(404);
+    $this->drupalGet('devel/devel_entity_test_edit/' . $this->entity_edit->id() . '/definition');
+    $this->assertResponse(200);
+
+    // Test Devel load and render routes for entities with no route
+    // definitions.
+    $this->drupalGet('devel_entity_test_no_links/' . $this->entity_edit->id());
+    $this->assertNoText('Devel', 'Devel tab is not present');
+    $this->assertNoLinkByHref('devel/devel_entity_test_no_links/' . $this->entity_no_links->id());
+    $this->assertNoLinkByHref('devel/devel_entity_test_no_links/' . $this->entity_no_links->id() . '/render');
+    $this->assertNoLinkByHref('devel/devel_entity_test_no_links/' . $this->entity_no_links->id() . '/definition');
+    $this->drupalGet('devel/devel_entity_test_no_links/' . $this->entity_no_links->id());
+    $this->assertResponse(404);
+    $this->drupalGet('devel/devel_entity_test_no_links/' . $this->entity_no_links->id() . '/render');
+    $this->assertResponse(404);
+    $this->drupalGet('devel/devel_entity_test_no_links/' . $this->entity_no_links->id() . '/definition');
+    $this->assertResponse(404);
+  }
+
+}