You are here

DomainAliasActionsTest.php in Domain Access 8

File

domain_alias/tests/src/Functional/DomainAliasActionsTest.php
View source
<?php

namespace Drupal\Tests\domain_alias\Functional;


/**
 * Tests the domain record actions on environments.
 *
 * @group domain_alias
 */
class DomainAliasActionsTest extends DomainAliasTestBase {

  /**
   * Modules to enable.
   *
   * @var array
   */
  public static $modules = [
    'domain',
    'domain_alias',
    'user',
  ];

  /**
   * Tests bulk actions through the domain overview page.
   */
  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.');
    }
  }

}

Classes

Namesort descending Description
DomainAliasActionsTest Tests the domain record actions on environments.