You are here

public function WebformElementEventTest::testWebformElementAlterEvent 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::testWebformElementAlterEvent()
  2. 3.x modules/webform_event_dispatcher/tests/src/Unit/WebformElement/WebformElementEventTest.php \Drupal\Tests\webform_event_dispatcher\Unit\WebformElement\WebformElementEventTest::testWebformElementAlterEvent()

Test WebformElementAlterEvent.

File

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

Class

WebformElementEventTest
Class WebformElementEventTest.

Namespace

Drupal\Tests\webform_event_dispatcher\Unit\WebformElement

Code

public function testWebformElementAlterEvent() {
  $element = [
    '#type' => 'textfield',
  ];
  $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.
  $this->manager
    ->setEventCallbacks([
    'hook_event_dispatcher.webform.element.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\WebformElementAlterEvent $event */
  $event = $this->manager
    ->getRegisteredEvent('hook_event_dispatcher.webform.element.alter');
  self::assertInstanceOf(WebformElementAlterEvent::class, $event);
  self::assertSame($expectedElement, $event
    ->getElement());
  self::assertSame($formState, $event
    ->getFormState());
  self::assertSame($context, $event
    ->getContext());
}