Skip to content

Instantly share code, notes, and snippets.

@dawehner
Created September 9, 2016 19:05
Show Gist options
  • Select an option

  • Save dawehner/168325f2cdc2c5a428f367fcb69b19ba to your computer and use it in GitHub Desktop.

Select an option

Save dawehner/168325f2cdc2c5a428f367fcb69b19ba to your computer and use it in GitHub Desktop.
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