function EntityQueryAggregateTest::testAlterHook

Tests that entity query alter hooks are invoked for aggregate queries.

Hook functions in field_test.module add additional conditions to the query removing entities with specific ids.

File

core/tests/Drupal/KernelTests/Core/Entity/EntityQueryAggregateTest.php, line 630

Class

EntityQueryAggregateTest
Tests the Entity Query Aggregation API.

Namespace

Drupal\KernelTests\Core\Entity

Code

public function testAlterHook() : void {
  $basicQuery = $this->entityStorage
    ->getAggregateQuery()
    ->accessCheck(FALSE)
    ->groupBy('id');
  // Verify assumptions about the unaltered result.
  $query = clone $basicQuery;
  $this->queryResult = $query->execute();
  $this->assertResults([
    [
      'id' => 1,
    ],
    [
      'id' => 2,
    ],
    [
      'id' => 3,
    ],
    [
      'id' => 4,
    ],
    [
      'id' => 5,
    ],
    [
      'id' => 6,
    ],
  ]);
  // field_test_entity_query_alter() removes the entity with id '5'.
  $query = clone $basicQuery;
  $this->queryResult = $query->addTag('entity_query_alter_hook_test')
    ->execute();
  $this->assertResults([
    [
      'id' => 1,
    ],
    [
      'id' => 2,
    ],
    [
      'id' => 3,
    ],
    [
      'id' => 4,
    ],
    [
      'id' => 6,
    ],
  ]);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.