diff core/modules/link/tests/src/Functional/LinkFieldUITest.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 1fec387a4317
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/link/tests/src/Functional/LinkFieldUITest.php	Wed Nov 29 16:09:58 2017 +0000
@@ -0,0 +1,92 @@
+<?php
+
+namespace Drupal\Tests\link\Functional;
+
+use Drupal\Component\Utility\Unicode;
+use Drupal\field_ui\Tests\FieldUiTestTrait;
+use Drupal\link\LinkItemInterface;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Tests link field UI functionality.
+ *
+ * @group link
+ */
+class LinkFieldUITest extends BrowserTestBase {
+
+  use FieldUiTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['node', 'link', 'field_ui', 'block'];
+
+  /**
+   * A user that can edit content types.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $adminUser;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->adminUser = $this->drupalCreateUser(['administer content types', 'administer node fields', 'administer node display']);
+    $this->drupalLogin($this->adminUser);
+    $this->drupalPlaceBlock('system_breadcrumb_block');
+  }
+
+  /**
+   * Tests the link field UI.
+   */
+  public function testFieldUI() {
+    // Add a content type.
+    $type = $this->drupalCreateContentType();
+    $type_path = 'admin/structure/types/manage/' . $type->id();
+    $add_path = 'node/add/' . $type->id();
+
+    // Add a link field to the newly-created type. It defaults to allowing both
+    // internal and external links.
+    $label = $this->randomMachineName();
+    $field_name = Unicode::strtolower($label);
+    $this->fieldUIAddNewField($type_path, $field_name, $label, 'link');
+
+    // Load the formatter page to check that the settings summary does not
+    // generate warnings.
+    // @todo Mess with the formatter settings a bit here.
+    $this->drupalGet("$type_path/display");
+    $this->assertText(t('Link text trimmed to @limit characters', ['@limit' => 80]));
+
+    // Test the help text displays when the link field allows both internal and
+    // external links.
+    $this->drupalLogin($this->drupalCreateUser(['create ' . $type->id() . ' content']));
+    $this->drupalGet($add_path);
+    $this->assertRaw('You can also enter an internal path such as <em class="placeholder">/node/add</em> or an external URL such as <em class="placeholder">http://example.com</em>.');
+
+    // Log in an admin to set up the next content type.
+    $this->drupalLogin($this->adminUser);
+
+    // Add a different content type.
+    $type = $this->drupalCreateContentType();
+    $type_path = 'admin/structure/types/manage/' . $type->id();
+    $add_path = 'node/add/' . $type->id();
+
+    // Add a link field to the newly-created type. Specify it must allow
+    // external only links.
+    $label = $this->randomMachineName();
+    $field_name = Unicode::strtolower($label);
+    $field_edit = ['settings[link_type]' => LinkItemInterface::LINK_EXTERNAL];
+    $this->fieldUIAddNewField($type_path, $field_name, $label, 'link', [], $field_edit);
+
+    // Test the help text displays when link allows only external links.
+    $this->drupalLogin($this->drupalCreateUser(['create ' . $type->id() . ' content']));
+    $this->drupalGet($add_path);
+    $this->assertRaw('This must be an external URL such as <em class="placeholder">http://example.com</em>.');
+  }
+
+}