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 @@
+<?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->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 @@
+<?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;
+  }
+
+
+}
