You are here

public function EntityAccessEventTest::testEntityAccessEventCombinedResults in Hook Event Dispatcher 8

EntityAccessEvent with combined results test.

This simulates multiple event listeners adding their own access results to this event.

File

tests/src/Unit/Entity/EntityAccessEventTest.php, line 177

Class

EntityAccessEventTest
Class EntityAccessEventTest.

Namespace

Drupal\Tests\hook_event_dispatcher\Unit\Entity

Code

public function testEntityAccessEventCombinedResults() {
  $accessResults = [
    new AccessResultNeutral(),
    new AccessResultAllowed(),
    new AccessResultForbidden(),
  ];
  $this->manager
    ->setEventCallbacks([
    HookEventDispatcherInterface::ENTITY_ACCESS => function (EntityAccessEvent $event) use ($accessResults) {
      foreach ($accessResults as $accessResult) {
        $event
          ->addAccessResult($accessResult);
      }
    },
  ]);
  $entity = $this
    ->createMock(EntityInterface::class);
  $operation = 'test';
  $account = $this
    ->createMock(AccountInterface::class);
  $hookAccessResult = hook_event_dispatcher_entity_access($entity, $operation, $account);
  self::assertFalse($hookAccessResult
    ->isNeutral());
  self::assertFalse($hookAccessResult
    ->isAllowed());
  self::assertTrue($hookAccessResult
    ->isForbidden());
}