tamper-8.x-1.x-dev/tests/src/Unit/ItemUsageTraitTest.php

tests/src/Unit/ItemUsageTraitTest.php
<?php

namespace Drupal\Tests\tamper\Unit;

use Drupal\Tests\UnitTestCase;
use Drupal\tamper\ItemUsage;
use Drupal\tamper\ItemUsageInterface;
use Drupal\tamper\ItemUsageTrait;

/**
 * @coversDefaultClass \Drupal\tamper\ItemUsageTrait
 * @group tamper
 */
class ItemUsageTraitTest extends UnitTestCase {

  /**
   * Tests the ItemUsageTrait methods.
   *
   * @param string|null $rawValue
   *   The raw value stored in the plugin definition.
   * @param string $expectedEffective
   *   The expected effective value.
   * @param bool $expectedRequires
   *   Whether requiresItem() should return TRUE.
   * @param bool $expectedUses
   *   Whether usesItem() should return TRUE.
   * @param bool $expectedIgnores
   *   Whether ignoresItem() should return TRUE.
   *
   * @covers ::getItemUsage
   * @covers ::getEffectiveItemUsage
   * @covers ::requiresItem
   * @covers ::usesItem
   * @covers ::ignoresItem
   *
   * @dataProvider providerItemUsageTrait
   */
  public function testItemUsageTrait(?string $rawValue, string $expectedEffective, bool $expectedRequires, bool $expectedUses, bool $expectedIgnores): void {
    $plugin = new DummyItemUsage($rawValue);

    $this->assertSame($rawValue, $plugin->getItemUsage());
    $this->assertSame($expectedEffective, $plugin->getEffectiveItemUsage());
    $this->assertSame($expectedRequires, $plugin->requiresItem());
    $this->assertSame($expectedUses, $plugin->usesItem());
    $this->assertSame($expectedIgnores, $plugin->ignoresItem());
  }

  /**
   * Data provider for ::testItemUsageTrait().
   *
   * Each case describes how the trait should behave for a given raw value.
   *
   * @return array[]
   *   An array of test cases. Each case contains:
   *   - rawValue: The raw value stored in the plugin definition.
   *   - expectedEffective: The expected effective value.
   *   - expectedRequires: Whether requiresItem() should return TRUE.
   *   - expectedUses: Whether usesItem() should return TRUE.
   *   - expectedIgnores: Whether ignoresItem() should return TRUE.
   */
  public static function providerItemUsageTrait(): array {
    return [
      'raw NULL, defaults to OPTIONAL' => [
        'rawValue' => NULL,
        'expectedEffective' => ItemUsage::OPTIONAL,
        'expectedRequires' => FALSE,
        'expectedUses' => TRUE,
        'expectedIgnores' => FALSE,
      ],
      'raw REQUIRED' => [
        'rawValue' => ItemUsage::REQUIRED,
        'expectedEffective' => ItemUsage::REQUIRED,
        'expectedRequires' => TRUE,
        'expectedUses' => TRUE,
        'expectedIgnores' => FALSE,
      ],
      'raw OPTIONAL' => [
        'rawValue' => ItemUsage::OPTIONAL,
        'expectedEffective' => ItemUsage::OPTIONAL,
        'expectedRequires' => FALSE,
        'expectedUses' => TRUE,
        'expectedIgnores' => FALSE,
      ],
      'raw IGNORED' => [
        'rawValue' => ItemUsage::IGNORED,
        'expectedEffective' => ItemUsage::IGNORED,
        'expectedRequires' => FALSE,
        'expectedUses' => FALSE,
        'expectedIgnores' => TRUE,
      ],
    ];
  }

}

/**
 * Dummy plugin implementing ItemUsageInterface.
 */
class DummyItemUsage implements ItemUsageInterface {

  use ItemUsageTrait;

  /**
   * The definition of the plugin.
   */
  protected array $pluginDefinition = [];

  /**
   * Constructs a new DummyItemUsage object.
   *
   * @param string|null $itemUsage
   *   The itemUsage value to set on the plugin definition.
   */
  public function __construct(?string $itemUsage) {
    $this->pluginDefinition['itemUsage'] = $itemUsage;
  }

}

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

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