You are here

public function DomainAliasActionsTest::testDomainActions in Domain Access 8

Tests bulk actions through the domain overview page.

File

domain_alias/tests/src/Functional/DomainAliasActionsTest.php, line 22

Class

DomainAliasActionsTest
Tests the domain record actions on environments.

Namespace

Drupal\Tests\domain_alias\Functional

Code

public function testDomainActions() {
  $this->admin_user = $this
    ->drupalCreateUser([
    'administer domains',
    'access administration pages',
  ]);
  $this
    ->drupalLogin($this->admin_user);

  // Create test domains.
  $this
    ->domainCreateTestDomains(3);
  $domain_storage = \Drupal::entityTypeManager()
    ->getStorage('domain');
  $alias_loader = \Drupal::entityTypeManager()
    ->getStorage('domain_alias');
  $domains = $domain_storage
    ->loadMultiple();

  // Save these for later testing.
  $original_domains = $domains;
  $base = $this->baseHostname;
  $hostnames = [
    $base,
    'one.' . $base,
    'two.' . $base,
  ];

  // Our patterns should map to example.com, one.example.com, two.example.com.
  $patterns = [
    '*.' . $base,
    'four.' . $base,
    'five.' . $base,
  ];
  $i = 0;
  foreach ($domains as $domain) {
    $this
      ->assert($domain
      ->getHostname() == $hostnames[$i], 'Hostnames set correctly');
    $this
      ->assert($domain
      ->getCanonical() == $hostnames[$i], 'Canonical domains set correctly');
    $values = [
      'domain_id' => $domain
        ->id(),
      'pattern' => array_shift($patterns),
      'redirect' => 0,
      'environment' => 'local',
    ];
    $this
      ->createDomainAlias($values);
    $i++;
  }
  $path = $domain
    ->getScheme() . 'five.' . $base . '/admin/config/domain';

  // Visit the domain overview administration page.
  $this
    ->drupalGet($path);
  $this
    ->assertResponse(200);

  // Test the domains.
  $domains = $domain_storage
    ->loadMultiple();
  $this
    ->assertCount(3, $domains, 'Three domain records found.');

  // Check the default domain.
  $default = $domain_storage
    ->loadDefaultId();
  $key = 'example_com';
  $this
    ->assertTrue($default == $key, 'Default domain set correctly.');

  // Test some text on the page.
  foreach ($domains as $domain) {
    $name = $domain
      ->label();
    $this
      ->assertText($name, 'Name found properly.');
  }

  // Test the list of actions.
  $actions = [
    'delete',
    'disable',
    'default',
  ];
  foreach ($actions as $action) {
    $this
      ->assertRaw("/domain/{$action}/", 'Actions found properly.');
  }

  // Check that all domains are active.
  $this
    ->assertNoRaw('Inactive', 'Inactive domain not found.');

  // Disable a domain and test the enable link.
  $this
    ->clickLink('Disable', 0);
  $this
    ->assertRaw('Inactive', 'Inactive domain found.');

  // Visit the domain overview administration page to clear cache.
  $this
    ->drupalGet($path);
  $this
    ->assertResponse(200);
  foreach ($domain_storage
    ->loadMultiple() as $domain) {
    if ($domain
      ->id() == 'one_example_com') {
      $this
        ->assertEmpty($domain
        ->status(), 'One domain inactive.');
    }
    else {
      $this
        ->assertNotEmpty($domain
        ->status(), 'Other domains active.');
    }
  }

  // Test the list of actions.
  $actions = [
    'enable',
    'delete',
    'disable',
    'default',
  ];
  foreach ($actions as $action) {
    $this
      ->assertRaw("/domain/{$action}/", 'Actions found properly.');
  }

  // Re-enable the domain.
  $this
    ->clickLink('Enable', 0);
  $this
    ->assertNoRaw('Inactive', 'Inactive domain not found.');

  // Visit the domain overview administration page to clear cache.
  $this
    ->drupalGet($path);
  $this
    ->assertResponse(200);
  foreach ($domain_storage
    ->loadMultiple() as $domain) {
    $this
      ->assertNotEmpty($domain
      ->status(), 'All domains active.');
  }

  // Set a new default domain.
  $this
    ->clickLink('Make default', 0);

  // Visit the domain overview administration page to clear cache.
  $this
    ->drupalGet($path);
  $this
    ->assertResponse(200);

  // Check the default domain.
  $domain_storage
    ->resetCache();
  $default = $domain_storage
    ->loadDefaultId();
  $key = 'one_example_com';
  $this
    ->assertTrue($default == $key, 'Default domain set correctly.');

  // Did the hostnames change accidentally?
  foreach ($domain_storage
    ->loadMultiple() as $id => $domain) {
    $this
      ->assertTrue($domain
      ->getHostname() == $original_domains[$id]
      ->getHostname(), 'Hostnames match.');
  }
}