You are here

public function DomainAccessCacheTest::testDomainResponse in Domain Access 8

Tests that a domain response is proper.

File

domain_access/tests/src/Functional/DomainAccessCacheTest.php, line 26

Class

DomainAccessCacheTest
Tests page caching results.

Namespace

Drupal\Tests\domain_access\Functional

Code

public function testDomainResponse() {

  // No domains should exist.
  $this
    ->domainTableIsEmpty();

  // Create a new domain programmatically.
  $this
    ->domainCreateTestDomains(5);
  $expected = [];
  $domains = \Drupal::entityTypeManager()
    ->getStorage('domain')
    ->loadMultiple(NULL, TRUE);
  foreach ($domains as $domain) {
    $this
      ->drupalGet($domain
      ->getPath());

    // The page cache includes a colon at the end.
    $expected[] = $domain
      ->getPath() . ':';
  }
  $database = \Drupal::database();
  $query = $database
    ->query("SELECT cid FROM {cache_page}");
  $result = $query
    ->fetchCol();
  $this
    ->assertEqual(sort($expected), sort($result), 'Cache returns as expected.');

  // Now create a node and test the cache.
  // Create an article node assigned to two domains.
  $ids = [
    'example_com',
    'four_example_com',
  ];
  $node1 = $this
    ->drupalCreateNode([
    'type' => 'article',
    'field_domain_access' => [
      $ids,
    ],
    'path' => '/test',
  ]);
  $original = $expected;
  foreach ($domains as $domain) {
    $this
      ->drupalGet($domain
      ->getPath() . 'test');

    // The page cache includes a colon at the end.
    $expected[] = $domain
      ->getPath() . 'test:';
  }
  $query = $database
    ->query("SELECT cid FROM {cache_page}");
  $result = $query
    ->fetchCol();
  $this
    ->assertEqual(sort($expected), sort($result), 'Cache returns as expected.');

  // When we delete the node, we want all cids removed.
  $node1
    ->delete();
  $query = $database
    ->query("SELECT cid FROM {cache_page}");
  $result = $query
    ->fetchCol();
  $this
    ->assertEqual(sort($original), sort($result), 'Cache returns as expected.');
}