You are here

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

Test WebformElementInfoAlterEvent.

File

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

Class

WebformElementEventTest
Class WebformElementEventTest.

Namespace

Drupal\Tests\webform_event_dispatcher\Unit\WebformElement

Code

public function testWebformElementInfoAlterEvent() {
  $definitions = [
    'textfield' => [
      'id' => 'textfield',
    ],
  ];
  $alters = [
    'textfield' => [
      '#test' => 'test',
    ],
  ];
  $expectedDefinitions = array_merge_recursive($definitions, $alters);

  // Create event subscriber to alter element info.
  $this->manager
    ->setEventCallbacks([
    'hook_event_dispatcher.webform.element.info.alter' => function (WebformElementInfoAlterEvent $event) {
      $definitions =& $event
        ->getDefinitions();
      $definitions['textfield']['#test'] = 'test';
    },
  ]);
  webform_event_dispatcher_webform_element_info_alter($definitions);

  /** @var \Drupal\webform_event_dispatcher\Event\WebformElement\WebformElementInfoAlterEvent $event */
  $event = $this->manager
    ->getRegisteredEvent('hook_event_dispatcher.webform.element.info.alter');
  self::assertInstanceOf(WebformElementInfoAlterEvent::class, $event);
  self::assertSame($expectedDefinitions, $event
    ->getDefinitions());
}