You are here

public function LinkFieldTest::testNoLinkUri in Drupal 10

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

Tests <nolink> and <none> as link uri.

File

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

Class

LinkFieldTest
Tests link field widgets and formatters.

Namespace

Drupal\Tests\link\Functional

Code

public function testNoLinkUri() {
  $field_name = mb_strtolower($this
    ->randomMachineName());
  $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' => LinkItemInterface::LINK_INTERNAL,
    ],
  ])
    ->save();
  $this->container
    ->get('entity_type.manager')
    ->getStorage('entity_form_display')
    ->load('entity_test.entity_test.default')
    ->setComponent($field_name, [
    'type' => 'link_default',
  ])
    ->save();
  EntityViewDisplay::create([
    'targetEntityType' => 'entity_test',
    'bundle' => 'entity_test',
    'mode' => 'full',
    'status' => TRUE,
  ])
    ->setComponent($field_name, [
    'type' => 'link',
  ])
    ->save();

  // Test a link with <nolink> uri.
  $edit = [
    "{$field_name}[0][title]" => 'Title, no link',
    "{$field_name}[0][uri]" => '<nolink>',
  ];
  $this
    ->drupalGet('/entity_test/add');
  $this
    ->submitForm($edit, 'Save');
  preg_match('|entity_test/manage/(\\d+)|', $this
    ->getUrl(), $match);
  $id = $match[1];
  $output = $this
    ->renderTestEntity($id);
  $expected_link = (string) $this->container
    ->get('link_generator')
    ->generate('Title, no link', Url::fromUri('route:<nolink>'));
  $this
    ->assertStringContainsString($expected_link, $output);

  // Test a link with <none> uri.
  $edit = [
    "{$field_name}[0][title]" => 'Title, none',
    "{$field_name}[0][uri]" => '<none>',
  ];
  $this
    ->drupalGet('/entity_test/add');
  $this
    ->submitForm($edit, 'Save');
  preg_match('|entity_test/manage/(\\d+)|', $this
    ->getUrl(), $match);
  $id = $match[1];
  $output = $this
    ->renderTestEntity($id);
  $expected_link = (string) $this->container
    ->get('link_generator')
    ->generate('Title, none', Url::fromUri('route:<none>'));
  $this
    ->assertStringContainsString($expected_link, $output);

  // Test a link with a <button> uri.
  $edit = [
    "{$field_name}[0][title]" => 'Title, button',
    "{$field_name}[0][uri]" => '<button>',
  ];
  $this
    ->drupalGet('/entity_test/add');
  $this
    ->submitForm($edit, 'Save');
  preg_match('|entity_test/manage/(\\d+)|', $this
    ->getUrl(), $match);
  $id = $match[1];
  $output = $this
    ->renderTestEntity($id);
  $expected_link = (string) $this->container
    ->get('link_generator')
    ->generate('Title, button', Url::fromUri('route:<button>'));
  $this
    ->assertStringContainsString($expected_link, $output);
}