From 743bf7cd043112c846dcf5f6525a87cf4d1e5dbf Mon Sep 17 00:00:00 2001 From: Daniel Wehner <dawehner@googlemail.com> Date: Fri, 28 Jun 2019 18:51:29 +0100 Subject: [PATCH] Add test coverage for entity query implementation --- tests/src/Kernel/EntityQueryTest.php | 56 ++++++++++++++++++++++++ tests/src/Kernel/TrashKernelTest.php | 20 +-------- tests/src/Kernel/TrashKernelTestBase.php | 25 +++++++++++ 3 files changed, 82 insertions(+), 19 deletions(-) create mode 100644 tests/src/Kernel/EntityQueryTest.php create mode 100644 tests/src/Kernel/TrashKernelTestBase.php diff --git a/tests/src/Kernel/EntityQueryTest.php b/tests/src/Kernel/EntityQueryTest.php new file mode 100644 index 0000000..565dbb3 --- /dev/null +++ b/tests/src/Kernel/EntityQueryTest.php @@ -0,0 +1,56 @@ +<?php + +namespace Drupal\Tests\trash\Kernel; + +use Drupal\trash_test\Entity\TrashTest; + +class EntityQueryTest extends TrashKernelTestBase { + + public function testQueryWithoutDeletedAccess() { + $entities = []; + $entity_storage = \Drupal::entityTypeManager()->getStorage('trash_test_entity'); + + for ($i = 0; $i < 5; $i++) { + $entity = TrashTest::create(); + $entity->save(); + $entities[] = $entity; + } + + // Test whether they appear in an entity query. + $this->assertCount(5, $entity_storage->getQuery()->execute()); + + // Delete the first three of them. They should all be individual loadable + // but not longer accessible via the entity query. + for ($i = 0; $i < 3; $i++) { + $entities[$i]->delete(); + + $this->assertNotNull(TrashTest::load($entities[$i]->id())); + } + $this->assertCount(2, $entity_storage->getQuery()->execute()); + } + + public function testQueryWithDeletedAccess() { + $entities = []; + $entity_storage = \Drupal::entityTypeManager()->getStorage('trash_test_entity'); + + for ($i = 0; $i < 5; $i++) { + $entity = TrashTest::create(); + $entity->save(); + $entities[] = $entity; + } + + // Test whether they appear in an entity query. + $this->assertCount(5, $entity_storage->getQuery()->execute()); + + // Delete the first three of them. They should all be individual loadable + // but not longer accessible via the entity query. + for ($i = 0; $i < 3; $i++) { + $entities[$i]->delete(); + } + + $query = $entity_storage->getQuery() + ->addMetaData('_deleted', TRUE); + $this->assertCount(5, $query->execute()); + } + +} diff --git a/tests/src/Kernel/TrashKernelTest.php b/tests/src/Kernel/TrashKernelTest.php index 7d5c629..54ce567 100644 --- a/tests/src/Kernel/TrashKernelTest.php +++ b/tests/src/Kernel/TrashKernelTest.php @@ -3,26 +3,9 @@ namespace Drupal\Tests\trash\Kernel; use Drupal\Core\Entity\ContentEntityInterface; -use Drupal\KernelTests\KernelTestBase; use Drupal\trash_test\Entity\TrashTest; -class TrashKernelTest extends KernelTestBase { - - /** - * Modules to enable. - * - * @var array - */ - public static $modules = ['trash', 'trash_test', 'system']; - - /** - * {@inheritdoc} - */ - protected function setUp() { - parent::setUp(); - - $this->installEntitySchema('trash_test_entity'); - } +class TrashKernelTest extends TrashKernelTestBase { public function testDeletion() { $entity = TrashTest::create([ @@ -41,5 +24,4 @@ class TrashKernelTest extends KernelTestBase { $this->assertTrue($entity->getEntityKey('deleted')); } - } diff --git a/tests/src/Kernel/TrashKernelTestBase.php b/tests/src/Kernel/TrashKernelTestBase.php new file mode 100644 index 0000000..5d29c31 --- /dev/null +++ b/tests/src/Kernel/TrashKernelTestBase.php @@ -0,0 +1,25 @@ +<?php + +namespace Drupal\Tests\trash\Kernel; + +use Drupal\KernelTests\KernelTestBase; + +abstract class TrashKernelTestBase extends KernelTestBase { + + /** + * Modules to enable. + * + * @var array + */ + public static $modules = ['trash', 'trash_test', 'system']; + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + + $this->installEntitySchema('trash_test_entity'); + } + +} -- GitLab