-
-
Save dawehner/168325f2cdc2c5a428f367fcb69b19ba to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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..012b323 | |
| --- /dev/null | |
| +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityEventsTest.php | |
| @@ -0,0 +1,51 @@ | |
| +<?php | |
| + | |
| +namespace Drupal\KernelTests\Core\Entity; | |
| + | |
| +use Drupal\entity_test\Entity\EntityTest; | |
| +use Drupal\KernelTests\KernelTestBase; | |
| + | |
| +class EntityEventsTest extends KernelTestBase { | |
| + | |
| + /** | |
| + * {@inheritdoc} | |
| + */ | |
| + public static $modules = ['entity_test', 'entity_test_event']; | |
| + | |
| + public function testEventsInsert() { | |
| + $entity = EntityTest::create([ | |
| + 'name' => '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->save(); | |
| + | |
| + // 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 @@ | |
| +<?php | |
| + | |
| +namespace Drupal\entity_test_event\EventSubscriber; | |
| + | |
| +use Drupal\entity_test\Entity\EntityTest; | |
| +use Symfony\Component\EventDispatcher\EventSubscriberInterface; | |
| +use Drupal\Core\Entity\EntityEvents; | |
| +use Drupal\Core\Entity\EntityEvent; | |
| + | |
| +class TestEventSubscriber implements EventSubscriberInterface { | |
| + | |
| + public function onInsert(EntityEvent $event) { | |
| + if ($event->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; | |
| + } | |
| + | |
| + | |
| +} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment