plugin-8.x-2.8/tests/src/Unit/PluginDefinition/MergeablePluginDefinitionTraitTest.php

tests/src/Unit/PluginDefinition/MergeablePluginDefinitionTraitTest.php
<?php

namespace Drupal\Tests\plugin\Unit\PluginDefinition;

use Drupal\plugin\PluginDefinition\MergeablePluginDefinitionTrait;
use Drupal\plugin\PluginDefinition\PluginDefinitionInterface;
use Drupal\Tests\UnitTestCase;
use InvalidArgumentException;

/**
 * @coversDefaultClass \Drupal\plugin\PluginDefinition\MergeablePluginDefinitionTrait
 * @group Plugin
 */
class MergeablePluginDefinitionTraitTest extends UnitTestCase {

  /**
   * The class under test.
   *
   * @var \Drupal\plugin\PluginDefinition\MergeablePluginDefinitionTrait|\PHPUnit\Framework\MockObject\MockObject
   */
  protected $sut;

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();

    $this->sut = $this->getMockForTrait(MergeablePluginDefinitionTrait::class);
  }

  /**
   * @covers ::mergeDefaultDefinition
   * @covers ::isDefinitionCompatible
   * @covers ::doMergeDefaultDefinition
   */
  public function testMergeDefaultDefinition() {
    $other_definition = $this->createMock(PluginDefinitionInterface::class);

    $this->sut->expects($this->atLeastOnce())
      ->method('isDefinitionCompatible')
      ->willReturnCallback(function ($value) use ($other_definition) {
        return $value == $other_definition;
      });

    $this->assertSame($this->sut, $this->sut->mergeDefaultDefinition($other_definition));
  }

  /**
   * @covers ::mergeDefaultDefinition
   * @covers ::isDefinitionCompatible
   *
   * @depends testMergeDefaultDefinition
   */
  public function testMergeDefaultDefinitionWithInvalidOtherDefinition() {
    $this->expectException(InvalidArgumentException::class);
    $other_definition = $this->createMock(PluginDefinitionInterface::class);

    $this->sut->expects($this->atLeastOnce())
      ->method('isDefinitionCompatible')
      ->willReturn(FALSE);

    $this->sut->mergeDefaultDefinition($other_definition);
  }

  /**
   * @covers ::mergeOverrideDefinition
   * @covers ::isDefinitionCompatible
   * @covers ::doMergeOverrideDefinition
   */
  public function testMergeOverrideDefinition() {
    $other_definition = $this->createMock(PluginDefinitionInterface::class);

    $this->sut->expects($this->atLeastOnce())
      ->method('isDefinitionCompatible')
      ->willReturnCallback(function ($value) use ($other_definition) {
        return $value == $other_definition;
      });

    $this->assertSame($this->sut, $this->sut->mergeOverrideDefinition($other_definition));
  }

  /**
   * @covers ::mergeOverrideDefinition
   * @covers ::isDefinitionCompatible
   *
   * @depends testMergeOverrideDefinition
   */
  public function testMergeOverrideDefinitionWithInvalidOtherDefinition() {
    $this->expectException(InvalidArgumentException::class);
    $other_definition = $this->createMock(PluginDefinitionInterface::class);

    $this->sut->expects($this->atLeastOnce())
      ->method('isDefinitionCompatible')
      ->willReturn(FALSE);

    $this->sut->mergeOverrideDefinition($other_definition);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc