}
}
+ /**
+ * 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.