You are here

public function EasyEmailTemplatePreviewTest::testPreviewPlainOnly in Easy Email 8

Same name and namespace in other branches
  1. 2.0.x tests/src/Functional/EasyEmailTemplatePreviewTest.php \Drupal\Tests\easy_email\Functional\EasyEmailTemplatePreviewTest::testPreviewPlainOnly()

Tests template preview with only a plain text body

Throws

\Behat\Mink\Exception\ExpectationException

\Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException

\Drupal\Component\Plugin\Exception\PluginNotFoundException

\Drupal\Core\Entity\EntityStorageException

File

tests/src/Functional/EasyEmailTemplatePreviewTest.php, line 315

Class

EasyEmailTemplatePreviewTest
Class EasyEmailTemplatePreviewTest

Namespace

Drupal\Tests\easy_email\Functional

Code

public function testPreviewPlainOnly() {
  $template = $this
    ->createTemplate([
    'id' => 'test_plain_only',
    'label' => 'Test: Plain Only',
  ]);
  $this
    ->addUserField($template, 'field_user', 'User');
  $this
    ->addUserField($template, 'field_cc_user', 'CC User');
  $this
    ->addUserField($template, 'field_bcc_user', 'BCC User');
  $this
    ->removeField($template, 'body_html');
  $this
    ->drupalGet('admin/structure/email-templates/templates');
  $this
    ->assertSession()
    ->pageTextContains('test_plain_only');
  $this
    ->assertSession()
    ->pageTextContains('Test: Plain Only');
  $this
    ->drupalGet('admin/structure/email-templates/templates/' . $template
    ->id() . '/edit/fields');
  $this
    ->assertSession()
    ->pageTextContains('field_user');
  $this
    ->assertSession()
    ->pageTextContains('field_cc_user');
  $this
    ->assertSession()
    ->pageTextContains('field_bcc_user');
  $this
    ->assertSession()
    ->pageTextNotContains('body_html');
  $template
    ->setRecipient([
    'test@example.com',
    '[easy_email:field_user:0:entity:mail]',
  ])
    ->setCc([
    'cc@example.com',
    '[easy_email:field_cc_user:0:entity:mail]',
  ])
    ->setBcc([
    'bcc@example.com',
    '[easy_email:field_bcc_user:0:entity:mail]',
  ])
    ->setSubject('Test email for [easy_email:field_user:0:entity:display-name]')
    ->setBodyPlain('This is a test email (Plain Text) for user account [easy_email:field_user:0:entity:account-name].')
    ->setAttachment([
    '/core/misc/druplicon.png',
  ])
    ->save();
  $this
    ->drupalGet('admin/structure/email-templates/templates/' . $template
    ->id() . '/preview');
  $user1 = $this
    ->createUser();
  $user2 = $this
    ->createUser();
  $user3 = $this
    ->createUser();
  $this
    ->submitForm([
    'field_user[0][target_id]' => $user1
      ->getAccountName() . ' (' . $user1
      ->id() . ')',
    'field_cc_user[0][target_id]' => $user2
      ->getAccountName() . ' (' . $user2
      ->id() . ')',
    'field_bcc_user[0][target_id]' => $user3
      ->getAccountName() . ' (' . $user3
      ->id() . ')',
  ], 'Preview');

  /** @var \Drupal\Core\Config\ImmutableConfig $site_config */
  $site_config = \Drupal::config('system.site');
  $this
    ->assertSession()
    ->elementTextContains('css', '[data-drupal-selector="header-Return-Path"] span.value', $site_config
    ->get('mail'));
  $this
    ->assertSession()
    ->elementTextContains('css', '[data-drupal-selector="header-Sender"] span.value', $site_config
    ->get('mail'));
  $this
    ->assertSession()
    ->elementTextContains('css', '[data-drupal-selector="header-From"] span.value', $site_config
    ->get('name') . ' <' . $site_config
    ->get('mail') . '>');
  $this
    ->assertSession()
    ->elementTextContains('css', '[data-drupal-selector="header-Cc"] span.value', 'cc@example.com');
  $this
    ->assertSession()
    ->elementTextContains('css', '[data-drupal-selector="header-Cc"] span.value', $user2
    ->getEmail());
  $this
    ->assertSession()
    ->elementTextContains('css', '[data-drupal-selector="header-Bcc"] span.value', 'bcc@example.com');
  $this
    ->assertSession()
    ->elementTextContains('css', '[data-drupal-selector="header-Bcc"] span.value', $user3
    ->getEmail());
  $this
    ->assertSession()
    ->elementTextContains('css', '[data-drupal-selector="header-To"] span.value', 'test@example.com');
  $this
    ->assertSession()
    ->elementTextContains('css', '[data-drupal-selector="header-To"] span.value', $user1
    ->getEmail());
  $this
    ->assertSession()
    ->elementTextContains('css', '[data-drupal-selector="inbox-preview"] .from-name', $site_config
    ->get('name'));
  $this
    ->assertSession()
    ->elementTextContains('css', '[data-drupal-selector="inbox-preview"] .subject', 'Test email for ' . $user1
    ->getDisplayName());
  $this
    ->assertSession()
    ->elementTextContains('css', '[data-drupal-selector="inbox-preview"] .body-preview', 'This is a test email (Plain Text) for user account ' . $user1
    ->getDisplayName() . '.');
  $this
    ->assertSession()
    ->linkByHrefExists(file_create_url('/core/misc/druplicon.png'));
  $this
    ->assertSession()
    ->elementNotExists('css', '[data-drupal-selector="html-body"] iframe');
  $plain_body_iframe = $this
    ->assertSession()
    ->elementExists('css', '[data-drupal-selector="plain-body"] iframe');
  $plain_body_url = $this
    ->getIframeUrlAndQuery($plain_body_iframe);
  $this
    ->drupalGet($plain_body_url['path'], [
    'query' => $plain_body_url['query'],
  ]);
  $this
    ->assertSession()
    ->responseContains('This is a test email (Plain Text) for user account ' . $user1
    ->getAccountName() . '.');
}