tamper-8.x-1.x-dev/tests/src/Unit/Plugin/Tamper/RequiredTest.php

tests/src/Unit/Plugin/Tamper/RequiredTest.php
<?php

namespace Drupal\Tests\tamper\Unit\Plugin\Tamper;

use Drupal\tamper\Exception\SkipTamperItemException;
use Drupal\tamper\Plugin\Tamper\Required;

/**
 * Test the required plugin.
 *
 * @coversDefaultClass \Drupal\tamper\Plugin\Tamper\Required
 * @group tamper
 */
class RequiredTest extends TamperPluginTestBase {

  /**
   * Instantiates a plugin.
   *
   * @return \Drupal\tamper\TamperInterface
   *   A tamper plugin.
   */
  protected function instantiatePlugin() {
    return $this->getRequiredPlugin();
  }

  /**
   * Plugin instance, configured to require empty values.
   *
   * @var \Drupal\tamper\Plugin\Tamper\Required
   */
  protected $invertedPlugin;

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    $this->invertedPlugin = $this->getInvertedPlugin();
    parent::setUp();
  }

  /**
   * Test required with a string.
   */
  public function testRequiredWithSingleValue() {
    $this->assertEquals('Expected', $this->plugin->tamper('Expected'));
  }

  /**
   * Test required with a string.
   */
  public function testInvertedRequiredWithSingleValue() {
    $this->expectException(SkipTamperItemException::class);
    $this->invertedPlugin->tamper('Expected');
  }

  /**
   * Test required with empty string.
   */
  public function testRequiredWithEmptyString() {
    $this->expectException(SkipTamperItemException::class);
    $this->plugin->tamper('');
  }

  /**
   * Test required with empty string.
   */
  public function testInvertedRequiredWithEmptyString() {
    $this->assertEquals('', $this->invertedPlugin->tamper(''));
  }

  /**
   * Test required with an array.
   */
  public function testRequiredWithMultipleValues() {
    $expected = [
      'foo' => 'bar',
      'zip' => '',
      'baz' => FALSE,
    ];
    $this->assertEquals($expected, $this->plugin->tamper($expected));
  }

  /**
   * Test required with an array.
   */
  public function testInvertedRequiredWithMultipleValues() {
    $this->expectException(SkipTamperItemException::class);
    $expected = [
      'foo' => 'bar',
      'zip' => '',
      'baz' => FALSE,
    ];
    $this->invertedPlugin->tamper($expected);
  }

  /**
   * Test required with false.
   */
  public function testRequiredWithBool() {
    $this->expectException(SkipTamperItemException::class);
    $this->plugin->tamper(FALSE);
  }

  /**
   * Test required with false.
   */
  public function testInvertedRequiredWithBool() {
    $this->assertEquals(FALSE, $this->invertedPlugin->tamper(FALSE));
  }

  /**
   * Test required with empty array.
   */
  public function testRequiredWithEmptyArray() {
    $this->expectException(SkipTamperItemException::class);
    $this->plugin->tamper([]);
  }

  /**
   * Test required with empty array.
   */
  public function testInvertedRequiredWithEmptyArray() {
    $this->assertEquals([], $this->invertedPlugin->tamper([]));
  }

  /**
   * Test required with empty array.
   */
  public function testRequiredWithNull() {
    $this->expectException(SkipTamperItemException::class);
    $this->plugin->tamper(NULL);
  }

  /**
   * Test required with null.
   */
  public function testInvertedRequiredWithNull() {
    $this->assertEquals(NULL, $this->invertedPlugin->tamper(NULL));
  }

  /**
   * Get a plugin configured to require items.
   *
   * @return \Drupal\tamper\Plugin\Tamper\Required
   *   Plugin instance.
   */
  protected function getRequiredPlugin() {
    $config = [
      Required::SETTING_INVERT => FALSE,
    ];
    $plugin = new Required($config, 'required', [], $this->getMockSourceDefinition());
    return $plugin;
  }

  /**
   * Get a plugin configured to require empty items.
   *
   * @return \Drupal\tamper\Plugin\Tamper\Required
   *   Plugin instance.
   */
  protected function getInvertedPlugin() {
    $config = [
      Required::SETTING_INVERT => TRUE,
    ];
    $plugin = new Required($config, 'required', [], $this->getMockSourceDefinition());
    return $plugin;
  }

}

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

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