public function testDefinitionEvents() { /** @var \Drupal\entity_test\EntityTestDefinitionSubscriber $event_subscriber */
$event_subscriber =
$this->container->
get('entity_test.definition.subscriber'
);
$event_subscriber->
enableEventTracking();
$event_subscriber->
enableLiveDefinitionUpdates();
// Test field storage definition events.
$storage_definition = FieldStorageDefinition::
create('string'
) ->
setName('field_storage_test'
) ->
setLabel(new TranslatableMarkup('Field storage test'
)) ->
setTargetEntityTypeId('entity_test_rev'
);
$this->
assertFalse($event_subscriber->
hasEventFired(FieldStorageDefinitionEvents::CREATE
), 'Entity type create was not dispatched yet.'
);
\Drupal::
service('field_storage_definition.listener'
)->
onFieldStorageDefinitionCreate($storage_definition);
$this->
assertTrue($event_subscriber->
hasEventFired(FieldStorageDefinitionEvents::CREATE
), 'Entity type create event successfully dispatched.'
);
$this->
assertTrue($event_subscriber->
hasDefinitionBeenUpdated(FieldStorageDefinitionEvents::CREATE
), 'Last installed field storage definition was created before the event was fired.'
);
// Check that the newly added field can be retrieved from the live field
// storage definitions.
$field_storage_definitions =
$this->entityFieldManager->
getFieldStorageDefinitions('entity_test_rev'
);
$this->
assertArrayHasKey('field_storage_test',
$field_storage_definitions);