You are here

public function PluginLabelTest::testViewElements in Plugin 8.2

@covers ::viewElements

File

tests/src/Unit/Plugin/Field/FieldFormatter/PluginLabelTest.php, line 48

Class

PluginLabelTest
@coversDefaultClass \Drupal\plugin\Plugin\Field\FieldFormatter\PluginLabel

Namespace

Drupal\Tests\plugin\Unit\Plugin\Field\FieldFormatter

Code

public function testViewElements() {
  $plugin_definition_label_a = $this
    ->randomMachineName();
  $plugin_definition_a = $this
    ->createMock(PluginLabelDefinitionInterface::class);
  $plugin_definition_a
    ->expects($this
    ->atLeastOnce())
    ->method('getLabel')
    ->willReturn($plugin_definition_label_a);
  $plugin_definition_id_b = $this
    ->randomMachineName();
  $plugin_definition_b = $this
    ->createMock(PluginDefinitionInterface::class);
  $plugin_definition_b
    ->expects($this
    ->atLeastOnce())
    ->method('getId')
    ->willReturn($plugin_definition_id_b);
  $plugin_instance_a = $this
    ->createMock(PluginInspectionInterface::class);
  $plugin_instance_a
    ->expects($this
    ->atLeastOnce())
    ->method('getPluginDefinition')
    ->willReturn($plugin_definition_a);
  $plugin_instance_b = $this
    ->createMock(PluginInspectionInterface::class);
  $plugin_instance_b
    ->expects($this
    ->atLeastOnce())
    ->method('getPluginDefinition')
    ->willReturn($plugin_definition_b);
  $item_a = $this
    ->createMock(PluginCollectionItemInterface::class);
  $item_a
    ->expects($this
    ->atLeastOnce())
    ->method('getContainedPluginInstance')
    ->willReturn($plugin_instance_a);
  $item_b = $this
    ->createMock(PluginCollectionItemInterface::class);
  $item_b
    ->expects($this
    ->atLeastOnce())
    ->method('getContainedPluginInstance')
    ->willReturn($plugin_instance_b);

  /** @var \Drupal\plugin\Plugin\Field\FieldType\PluginCollectionItemInterface[]|\PHPUnit_Framework_MockObject_MockObject[] $items */
  $items = [
    $item_a,
    $item_b,
  ];
  $plugin_type = $this
    ->createMock(PluginTypeInterface::class);
  $plugin_type
    ->expects($this
    ->atLeastOnce())
    ->method('ensureTypedPluginDefinition')
    ->willReturnArgument(0);
  foreach ($items as $item) {
    $item
      ->expects($this
      ->atLeastOnce())
      ->method('getPluginType')
      ->willReturn($plugin_type);
  }
  $iterator = new \ArrayIterator($items);
  $item_list = $this
    ->getMockBuilder(PluginCollectionItemList::class)
    ->disableOriginalConstructor()
    ->setMethods([
    'getEntity',
    'getIterator',
  ])
    ->getMock();
  $item_list
    ->expects($this
    ->atLeastOnce())
    ->method('getIterator')
    ->willReturn($iterator);
  $expected_build = [
    [
      '#markup' => $plugin_definition_label_a,
    ],
    [
      '#markup' => $plugin_definition_id_b,
    ],
  ];
  $langcode = 'UA';
  $this
    ->assertSame($expected_build, $this->sut
    ->viewElements($item_list, $langcode));
}