Same name and namespace in other branches
  1. 8.9.x core/tests/Drupal/Tests/Core/Entity/EntityLinkTest.php \Drupal\Tests\Core\Entity\EntityLinkTest::testToLink()
  2. 9 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 @group Entity

Namespace

Drupal\Tests\Core\Entity

Code

public function testToLink($entity_label, $link_text, $expected_text, $link_rel = 'canonical', array $link_options = []) {
  $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);
}