You are here

public function LinkFieldTest::testLinkTypeOnLinkWidget in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/link/tests/src/Functional/LinkFieldTest.php \Drupal\Tests\link\Functional\LinkFieldTest::testLinkTypeOnLinkWidget()

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).

File

core/modules/link/tests/src/Functional/LinkFieldTest.php, line 657

Class

LinkFieldTest
Tests link field widgets and formatters.

Namespace

Drupal\Tests\link\Functional

Code

public function testLinkTypeOnLinkWidget() {
  $link_type = LinkItemInterface::LINK_EXTERNAL;
  $field_name = mb_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_type.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);
}