You are here

public function WebformElementEventTest::testWebformElementTypeAlterEvent in Hook Event Dispatcher 8

Same name and namespace in other branches
  1. 8.2 modules/webform_event_dispatcher/tests/src/Unit/WebformElement/WebformElementEventTest.php \Drupal\Tests\webform_event_dispatcher\Unit\WebformElement\WebformElementEventTest::testWebformElementTypeAlterEvent()
  2. 3.x modules/webform_event_dispatcher/tests/src/Unit/WebformElement/WebformElementEventTest.php \Drupal\Tests\webform_event_dispatcher\Unit\WebformElement\WebformElementEventTest::testWebformElementTypeAlterEvent()

Test WebformElementTypeAlterEvent.

File

modules/webform_event_dispatcher/tests/src/Unit/WebformElement/WebformElementEventTest.php, line 96

Class

WebformElementEventTest
Class WebformElementEventTest.

Namespace

Drupal\Tests\webform_event_dispatcher\Unit\WebformElement

Code

public function testWebformElementTypeAlterEvent() {
  $elementType = 'textfield';
  $element = [
    '#type' => $elementType,
  ];
  $alters = [
    '#test' => 'test',
  ];
  $expectedElement = array_merge($element, $alters);
  $formState = $this
    ->createMock(FormStateInterface::class);
  $context = [
    'form' => [
      '#webform_id' => 'test_form',
    ],
  ];

  // Create event subscriber to alter element of given type.
  $this->manager
    ->setEventCallbacks([
    "hook_event_dispatcher.webform.element_{$elementType}.alter" => function (WebformElementAlterEvent $event) {
      $element =& $event
        ->getElement();
      $element['#test'] = 'test';
    },
  ]);
  webform_event_dispatcher_webform_element_alter($element, $formState, $context);

  /** @var \Drupal\webform_event_dispatcher\Event\WebformElement\WebformElementTypeAlterEvent $event */
  $event = $this->manager
    ->getRegisteredEvent("hook_event_dispatcher.webform.element_{$elementType}.alter");
  self::assertInstanceOf(WebformElementTypeAlterEvent::class, $event);
  self::assertSame($expectedElement, $event
    ->getElement());
  self::assertSame($elementType, $event
    ->getElementType());
  self::assertSame($formState, $event
    ->getFormState());
  self::assertSame($context, $event
    ->getContext());
}