Issue #2742995 by Jo Fitzgerald, claudiu.cristea, naveenvalecha, klausi, dawehner, bighappyface: Convert web tests to browser tests for contact module

8.4.x
Alex Pott 2017-03-10 15:48:27 +00:00
parent 7d47a58998
commit ac7313dda0
3 changed files with 23 additions and 19 deletions

View File

@ -1,11 +1,13 @@
<?php <?php
namespace Drupal\contact\Tests; namespace Drupal\Tests\contact\Functional;
use Drupal\Component\Utility\SafeMarkup; use Drupal\Component\Utility\SafeMarkup;
use Drupal\Component\Render\PlainTextOutput; use Drupal\Component\Render\PlainTextOutput;
use Drupal\Core\Session\AccountInterface; use Drupal\Core\Session\AccountInterface;
use Drupal\simpletest\WebTestBase; use Drupal\Core\Test\AssertMailTrait;
use Drupal\system\Tests\Cache\AssertPageCacheContextsAndTagsTrait;
use Drupal\Tests\BrowserTestBase;
use Drupal\user\RoleInterface; use Drupal\user\RoleInterface;
/** /**
@ -13,7 +15,10 @@ use Drupal\user\RoleInterface;
* *
* @group contact * @group contact
*/ */
class ContactPersonalTest extends WebTestBase { class ContactPersonalTest extends BrowserTestBase {
use AssertMailTrait;
use AssertPageCacheContextsAndTagsTrait;
/** /**
* Modules to enable. * Modules to enable.
@ -67,7 +72,7 @@ class ContactPersonalTest extends WebTestBase {
$this->drupalGet('user/' . $this->contactUser->id() . '/contact'); $this->drupalGet('user/' . $this->contactUser->id() . '/contact');
$this->assertEscaped($mail); $this->assertEscaped($mail);
$message = $this->submitPersonalContact($this->contactUser); $message = $this->submitPersonalContact($this->contactUser);
$mails = $this->drupalGetMails(); $mails = $this->getMails();
$this->assertEqual(1, count($mails)); $this->assertEqual(1, count($mails));
$mail = $mails[0]; $mail = $mails[0];
$this->assertEqual($mail['to'], $this->contactUser->getEmail()); $this->assertEqual($mail['to'], $this->contactUser->getEmail());

View File

@ -1,26 +1,27 @@
<?php <?php
namespace Drupal\contact\Tests; namespace Drupal\Tests\contact\Functional;
use Drupal\Component\Utility\Unicode; use Drupal\Component\Utility\Unicode;
use Drupal\contact\Entity\ContactForm; use Drupal\contact\Entity\ContactForm;
use Drupal\Core\Mail\MailFormatHelper; use Drupal\Core\Mail\MailFormatHelper;
use Drupal\Core\Url; use Drupal\Core\Test\AssertMailTrait;
use Drupal\field_ui\Tests\FieldUiTestTrait; use Drupal\field_ui\Tests\FieldUiTestTrait;
use Drupal\simpletest\WebTestBase; use Drupal\Tests\BrowserTestBase;
use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\user\RoleInterface; use Drupal\user\RoleInterface;
/** /**
* Tests site-wide contact form functionality. * Tests site-wide contact form functionality.
* *
* @see \Drupal\contact\Tests\ContactStorageTest * @see \Drupal\Tests\contact\Functional\ContactStorageTest
* *
* @group contact * @group contact
*/ */
class ContactSitewideTest extends WebTestBase { class ContactSitewideTest extends BrowserTestBase {
use FieldUiTestTrait; use FieldUiTestTrait;
use AssertMailTrait;
/** /**
* Modules to enable. * Modules to enable.
@ -265,15 +266,13 @@ class ContactSitewideTest extends WebTestBase {
$this->assertTrue(!empty($view_link), 'Contact listing links to contact form.'); $this->assertTrue(!empty($view_link), 'Contact listing links to contact form.');
// Find out in which row the form we want to add a field to is. // Find out in which row the form we want to add a field to is.
$i = 0;
foreach ($this->xpath('//table/tbody/tr') as $row) { foreach ($this->xpath('//table/tbody/tr') as $row) {
if (((string) $row->td[0]->a) == $label) { if ($row->findLink($label)) {
$row->clickLink('Manage fields');
break; break;
} }
$i++;
} }
$this->clickLink(t('Manage fields'), $i);
$this->assertResponse(200); $this->assertResponse(200);
$this->clickLink(t('Add field')); $this->clickLink(t('Add field'));
$this->assertResponse(200); $this->assertResponse(200);
@ -299,7 +298,7 @@ class ContactSitewideTest extends WebTestBase {
$field_name . '[0][value]' => $this->randomMachineName(), $field_name . '[0][value]' => $this->randomMachineName(),
]; ];
$this->drupalPostForm(NULL, $edit, t('Send message')); $this->drupalPostForm(NULL, $edit, t('Send message'));
$mails = $this->drupalGetMails(); $mails = $this->getMails();
$mail = array_pop($mails); $mail = array_pop($mails);
$this->assertEqual($mail['subject'], t('[@label] @subject', ['@label' => $label, '@subject' => $edit['subject[0][value]']])); $this->assertEqual($mail['subject'], t('[@label] @subject', ['@label' => $label, '@subject' => $edit['subject[0][value]']]));
$this->assertTrue(strpos($mail['body'], $field_label)); $this->assertTrue(strpos($mail['body'], $field_label));
@ -377,7 +376,7 @@ class ContactSitewideTest extends WebTestBase {
$this->submitContact($this->randomMachineName(16), $email, $subject, 'foo', $this->randomString(128)); $this->submitContact($this->randomMachineName(16), $email, $subject, 'foo', $this->randomString(128));
// We are testing the auto-reply, so there should be one email going to the sender. // We are testing the auto-reply, so there should be one email going to the sender.
$captured_emails = $this->drupalGetMails(['id' => 'contact_page_autoreply', 'to' => $email]); $captured_emails = $this->getMails(['id' => 'contact_page_autoreply', 'to' => $email]);
$this->assertEqual(count($captured_emails), 1); $this->assertEqual(count($captured_emails), 1);
$this->assertEqual(trim($captured_emails[0]['body']), trim(MailFormatHelper::htmlToText($foo_autoreply))); $this->assertEqual(trim($captured_emails[0]['body']), trim(MailFormatHelper::htmlToText($foo_autoreply)));
@ -386,14 +385,14 @@ class ContactSitewideTest extends WebTestBase {
$this->submitContact($this->randomMachineName(16), $email, $this->randomString(64), 'bar', $this->randomString(128)); $this->submitContact($this->randomMachineName(16), $email, $this->randomString(64), 'bar', $this->randomString(128));
// Auto-reply for form 'bar' should result in one auto-reply email to the sender. // Auto-reply for form 'bar' should result in one auto-reply email to the sender.
$captured_emails = $this->drupalGetMails(['id' => 'contact_page_autoreply', 'to' => $email]); $captured_emails = $this->getMails(['id' => 'contact_page_autoreply', 'to' => $email]);
$this->assertEqual(count($captured_emails), 1); $this->assertEqual(count($captured_emails), 1);
$this->assertEqual(trim($captured_emails[0]['body']), trim(MailFormatHelper::htmlToText($bar_autoreply))); $this->assertEqual(trim($captured_emails[0]['body']), trim(MailFormatHelper::htmlToText($bar_autoreply)));
// Verify that no auto-reply is sent when the auto-reply field is left blank. // Verify that no auto-reply is sent when the auto-reply field is left blank.
$email = $this->randomMachineName(32) . '@example.com'; $email = $this->randomMachineName(32) . '@example.com';
$this->submitContact($this->randomMachineName(16), $email, $this->randomString(64), 'no_autoreply', $this->randomString(128)); $this->submitContact($this->randomMachineName(16), $email, $this->randomString(64), 'no_autoreply', $this->randomString(128));
$captured_emails = $this->drupalGetMails(['id' => 'contact_page_autoreply', 'to' => $email]); $captured_emails = $this->getMails(['id' => 'contact_page_autoreply', 'to' => $email]);
$this->assertEqual(count($captured_emails), 0); $this->assertEqual(count($captured_emails), 0);
// Verify that the current error message doesn't show, that the auto-reply // Verify that the current error message doesn't show, that the auto-reply
@ -404,7 +403,7 @@ class ContactSitewideTest extends WebTestBase {
->save(); ->save();
$this->submitContact($this->randomMachineName(16), $email, $this->randomString(64), 'foo', $this->randomString(128)); $this->submitContact($this->randomMachineName(16), $email, $this->randomString(64), 'foo', $this->randomString(128));
$this->assertNoText('Unable to send email. Contact the site administrator if the problem persists.'); $this->assertNoText('Unable to send email. Contact the site administrator if the problem persists.');
$captured_emails = $this->drupalGetMails(['id' => 'contact_page_autoreply', 'to' => $email]); $captured_emails = $this->getMails(['id' => 'contact_page_autoreply', 'to' => $email]);
$this->assertEqual(count($captured_emails), 0); $this->assertEqual(count($captured_emails), 0);
$this->drupalLogin($admin_user); $this->drupalLogin($admin_user);
$this->drupalGet('admin/reports/dblog'); $this->drupalGet('admin/reports/dblog');

View File

@ -1,6 +1,6 @@
<?php <?php
namespace Drupal\contact\Tests; namespace Drupal\Tests\contact\Functional;
use Drupal\Component\Utility\Unicode; use Drupal\Component\Utility\Unicode;
use Drupal\contact\Entity\Message; use Drupal\contact\Entity\Message;