function EntityLinkTest::testToLink

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Core/Entity/EntityLinkTest.php \Drupal\Tests\Core\Entity\EntityLinkTest::testToLink()
  2. 8.9.x core/tests/Drupal/Tests/Core/Entity/EntityLinkTest.php \Drupal\Tests\Core\Entity\EntityLinkTest::testToLink()
  3. 11.x core/tests/Drupal/Tests/Core/Entity/EntityLinkTest.php \Drupal\Tests\Core\Entity\EntityLinkTest::testToLink()

Tests for the Entity::toLink() method.

@covers ::toLink

@dataProvider providerTestLink

File

core/tests/Drupal/Tests/Core/Entity/EntityLinkTest.php, line 65

Class

EntityLinkTest
@coversDefaultClass \Drupal\Core\Entity\EntityBase[[api-linebreak]] @group Entity

Namespace

Drupal\Tests\Core\Entity

Code

public function testToLink($entity_label, $link_text, $expected_text, $link_rel = 'canonical', array $link_options = []) : void {
  $language = new Language([
    'id' => 'es',
  ]);
  $link_options += [
    'language' => $language,
  ];
  $this->languageManager
    ->expects($this->any())
    ->method('getLanguage')
    ->with('es')
    ->willReturn($language);
  $route_name_map = [
    'canonical' => 'entity.test_entity_type.canonical',
    'edit-form' => 'entity.test_entity_type.edit_form',
  ];
  $route_name = $route_name_map[$link_rel];
  $entity_id = 'test_entity_id';
  $entity_type_id = 'test_entity_type';
  $entity_type = $this->createMock('Drupal\\Core\\Entity\\EntityTypeInterface');
  $entity_type->expects($this->once())
    ->method('getLinkTemplates')
    ->willReturn($route_name_map);
  $entity_type->expects($this->any())
    ->method('getKey')
    ->willReturnMap([
    [
      'label',
      'label',
    ],
    [
      'langcode',
      'langcode',
    ],
  ]);
  $this->entityTypeManager
    ->expects($this->any())
    ->method('getDefinition')
    ->with($entity_type_id)
    ->willReturn($entity_type);
  /** @var \Drupal\Core\Entity\Entity $entity */
  $entity = $this->getMockForAbstractClass(ConfigEntityBase::class, [
    [
      'id' => $entity_id,
      'label' => $entity_label,
      'langcode' => 'es',
    ],
    $entity_type_id,
  ]);
  $expected_link = Link::createFromRoute($expected_text, $route_name, [
    $entity_type_id => $entity_id,
  ], [
    'entity_type' => $entity_type_id,
    'entity' => $entity,
  ] + $link_options);
  $result_link = $entity->toLink($link_text, $link_rel, $link_options);
  $this->assertEquals($expected_link, $result_link);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.