diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityEventsTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityEventsTest.php new file mode 100644 index 0000000..60764e9 --- /dev/null +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityEventsTest.php @@ -0,0 +1,51 @@ + 'hei', + ]); + $entity->save(); + $this->assertEquals('hei ho', $entity->name->value); + } + + public function testEventsUpdate() { + $entity = EntityTest::create([ + 'name' => 'meh', + ]); + $entity->save(); + $this->assertEquals('meh', $entity->name->value); + + $entity->name->value = 'hei'; + $entity->save(); + $this->assertEquals('hei ho', $entity->name->value); + } + + public function testEventsDelete() { + $entities = \Drupal::entityTypeManager()->getStorage('entity_test') + ->loadByProperties(['name' => 'hei_ho']); + $this->assertCount(0, $entities); + + $entity = EntityTest::create([ + 'name' => 'hei', + ]); + $entity->delete(); + + // Note the delete event creates another entity. + $entities = \Drupal::entityTypeManager()->getStorage('entity_test') + ->loadByProperties(['name' => 'hei_ho']); + $this->assertCount(1, $entities); + } + +} diff --git a/core/tests/Drupal/KernelTests/Core/Entity/modules/entity_test_event/entity_test_event.info.yml b/core/tests/Drupal/KernelTests/Core/Entity/modules/entity_test_event/entity_test_event.info.yml new file mode 100644 index 0000000..1a853a5 --- /dev/null +++ b/core/tests/Drupal/KernelTests/Core/Entity/modules/entity_test_event/entity_test_event.info.yml @@ -0,0 +1,3 @@ +name: entity_test_event +type: module +core: 8.x diff --git a/core/tests/Drupal/KernelTests/Core/Entity/modules/entity_test_event/entity_test_event.services.yml b/core/tests/Drupal/KernelTests/Core/Entity/modules/entity_test_event/entity_test_event.services.yml new file mode 100644 index 0000000..e20270c --- /dev/null +++ b/core/tests/Drupal/KernelTests/Core/Entity/modules/entity_test_event/entity_test_event.services.yml @@ -0,0 +1,5 @@ +services: + entity_test_event.event_subscriber: + class: \Drupal\entity_test_event\EventSubscriber\TestEventSubscriber + tags: + - { name: event_subscriber } diff --git a/core/tests/Drupal/KernelTests/Core/Entity/modules/entity_test_event/src/EventSubscriber/TestEventSubscriber.php b/core/tests/Drupal/KernelTests/Core/Entity/modules/entity_test_event/src/EventSubscriber/TestEventSubscriber.php new file mode 100644 index 0000000..af8d688 --- /dev/null +++ b/core/tests/Drupal/KernelTests/Core/Entity/modules/entity_test_event/src/EventSubscriber/TestEventSubscriber.php @@ -0,0 +1,44 @@ +getEntity()->name->value === 'hei') { + $event->getEntity()->name->value .= ' ho'; + } + } + + public function onUpdate(EntityEvent $event) { + if ($event->getEntity()->name->value === 'hei') { + $event->getEntity()->name->value .= ' ho'; + } + } + + public function onDelete(EntityEvent $event) { + if ($event->getEntity()->name->value === 'hei') { + EntityTest::create([ + 'name' => 'hei_ho' + ])->save(); + $event->getEntity()->name->value .= ' ho'; + } + } + + /** + * {@inheritdoc} + */ + public static function getSubscribedEvents() { + $events[EntityEvents::INSERT] = 'onInsert'; + $events[EntityEvents::UPDATE] = 'onUpdate'; + $events[EntityEvents::DELETE] = 'onDelete'; + return $events; + } + + +}