You are here

public function AccessResultTest::testAndOrCacheabilityPropagation in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 core/tests/Drupal/Tests/Core/Access/AccessResultTest.php \Drupal\Tests\Core\Access\AccessResultTest::testAndOrCacheabilityPropagation()

@covers ::andIf @covers ::orIf @covers ::inheritCacheability

@dataProvider andOrCacheabilityPropagationProvider

File

core/tests/Drupal/Tests/Core/Access/AccessResultTest.php, line 797
Contains \Drupal\Tests\Core\Access\AccessResultTest.

Class

AccessResultTest
@coversDefaultClass \Drupal\Core\Access\AccessResult @group Access

Namespace

Drupal\Tests\Core\Access

Code

public function testAndOrCacheabilityPropagation(AccessResultInterface $first, $op, AccessResultInterface $second, $implements_cacheable_dependency_interface, $is_cacheable) {
  if ($op === 'OR') {
    $result = $first
      ->orIf($second);
  }
  else {
    if ($op === 'AND') {
      $result = $first
        ->andIf($second);
    }
    else {
      throw new \LogicException('Invalid operator specified');
    }
  }
  if ($implements_cacheable_dependency_interface) {
    $this
      ->assertTrue($result instanceof CacheableDependencyInterface, 'Result is an instance of CacheableDependencyInterface.');
    if ($result instanceof CacheableDependencyInterface) {
      $this
        ->assertSame($is_cacheable, $result
        ->getCacheMaxAge() !== 0, 'getCacheMaxAge() matches expectations.');
    }
  }
  else {
    $this
      ->assertFalse($result instanceof CacheableDependencyInterface, 'Result is not an instance of CacheableDependencyInterface.');
  }
}