IconPackExtractorFormTest.php

Namespace

Drupal\Tests\Core\Theme\Icon

File

core/tests/Drupal/Tests/Core/Theme/Icon/IconPackExtractorFormTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\Core\Theme\Icon;

use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\PluginWithFormsInterface;
use Drupal\Tests\UnitTestCase;
use Drupal\Core\Theme\Icon\IconPackExtractorForm;

/**
 * @coversDefaultClass \Drupal\Core\Theme\Icon\IconPackExtractorForm
 *
 * @group icon
 */
class IconPackExtractorFormTest extends UnitTestCase {
  
  /**
   * The icon pack form.
   *
   * @var \Drupal\Core\Theme\Icon\IconPackExtractorForm
   */
  private IconPackExtractorForm $iconPackForm;
  
  /**
   * The plugin form.
   *
   * @var \Drupal\Core\Plugin\PluginWithFormsInterface
   */
  private PluginWithFormsInterface $plugin;
  
  /**
   * The form state.
   *
   * @var \Drupal\Core\Form\FormStateInterface|\Prophecy\Prophecy\ObjectProphecy
   */
  private $formState;
  
  /**
   * {@inheritdoc}
   */
  protected function setUp() : void {
    parent::setUp();
    $this->plugin = new TestPluginWithForm();
    $this->formState = $this->prophesize(FormStateInterface::class);
    $this->iconPackForm = new IconPackExtractorForm();
    $this->iconPackForm
      ->setPlugin($this->plugin);
  }
  
  /**
   * Test the IconPackExtractorForm::buildConfigurationForm method.
   */
  public function testBuildConfigurationForm() : void {
    $form = [
      'test_form' => 'test_form',
    ];
    /** @var \Drupal\Core\Form\FormStateInterface $formState */
    $formState = $this->formState
      ->reveal();
    $result = $this->iconPackForm
      ->buildConfigurationForm($form, $formState);
    $this->assertSame('plugin_build_form', $result['plugin_build_form']);
    $this->assertSame($form['test_form'], $result['test_form']);
  }
  
  /**
   * Test the IconPackExtractorForm::validateConfigurationForm method.
   */
  public function testValidateConfigurationForm() : void {
    $form = [];
    /** @var \Drupal\Core\Form\FormStateInterface $formState */
    $formState = $this->formState
      ->reveal();
    $this->iconPackForm
      ->validateConfigurationForm($form, $formState);
    $this->assertArrayHasKey('plugin_validate_form', $form);
  }
  
  /**
   * Test the IconPackExtractorForm::submitConfigurationForm method.
   */
  public function testSubmitConfigurationForm() : void {
    $form = [];
    /** @var \Drupal\Core\Form\FormStateInterface $formState */
    $formState = $this->formState
      ->reveal();
    $this->iconPackForm
      ->submitConfigurationForm($form, $formState);
    $this->assertArrayHasKey('plugin_submit_form', $form);
  }

}

/**
 * Test class for form.
 */
class TestPluginWithForm implements PluginWithFormsInterface {
  
  /**
   * {@inheritdoc}
   */
  public function getPluginId() : string {
    return 'test';
  }
  
  /**
   * {@inheritdoc}
   */
  public function getPluginDefinition() : array {
    return [];
  }
  
  /**
   * {@inheritdoc}
   */
  public function hasFormClass($operation) : bool {
    return TRUE;
  }
  
  /**
   * {@inheritdoc}
   */
  public function getFormClass($operation) : string {
    return 'form_class';
  }
  
  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state) : array {
    $form['plugin_build_form'] = 'plugin_build_form';
    return $form;
  }
  
  /**
   * {@inheritdoc}
   */
  public function validateConfigurationForm(array &$form, FormStateInterface $form_state) : void {
    $form['plugin_validate_form'] = 'plugin_validate_form';
  }
  
  /**
   * {@inheritdoc}
   */
  public function submitConfigurationForm(array &$form, FormStateInterface $form_state) : void {
    $form['plugin_submit_form'] = 'plugin_submit_form';
  }

}

Classes

Title Deprecated Summary
IconPackExtractorFormTest @coversDefaultClass \Drupal\Core\Theme\Icon\IconPackExtractorForm[[api-linebreak]]
TestPluginWithForm Test class for form.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.