Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / link / tests / src / Functional / LinkFieldTest.php
index 67aee9c3b9543e3ee54c3d6d24a6c369ceee69a8..c99ad0a931060dd097df970092a13408ec647239 100644 (file)
@@ -606,6 +606,49 @@ class LinkFieldTest extends BrowserTestBase {
     }
   }
 
+  /**
+   * Test '#link_type' property exists on 'link_default' widget.
+   *
+   * Make sure the 'link_default' widget exposes a '#link_type' property on
+   * its element. Modules can use it to understand if a text form element is
+   * a link and also which LinkItemInterface::LINK_* is (EXTERNAL, GENERIC,
+   * INTERNAL).
+   */
+  public function testLinkTypeOnLinkWidget() {
+
+    $link_type = LinkItemInterface::LINK_EXTERNAL;
+    $field_name = Unicode::strtolower($this->randomMachineName());
+
+    // Create a field with settings to validate.
+    $this->fieldStorage = FieldStorageConfig::create([
+      'field_name' => $field_name,
+      'entity_type' => 'entity_test',
+      'type' => 'link',
+      'cardinality' => 1,
+    ]);
+    $this->fieldStorage->save();
+    FieldConfig::create([
+      'field_storage' => $this->fieldStorage,
+      'label' => 'Read more about this entity',
+      'bundle' => 'entity_test',
+      'settings' => [
+        'title' => DRUPAL_OPTIONAL,
+        'link_type' => $link_type,
+      ],
+    ])->save();
+
+    $this->container->get('entity.manager')
+      ->getStorage('entity_form_display')
+      ->load('entity_test.entity_test.default')
+      ->setComponent($field_name, [
+        'type' => 'link_default',
+      ])
+      ->save();
+
+    $form = \Drupal::service('entity.form_builder')->getForm(EntityTest::create());
+    $this->assertEqual($form[$field_name]['widget'][0]['uri']['#link_type'], $link_type);
+  }
+
 
   /**
    * Tests editing a link to a non-node entity.