class ContactStorageTest in Contact Storage 8
Tests storing contact messages and viewing them through UI.
@group contact_storage
Hierarchy
- class \Drupal\Tests\BrowserTestBase extends \PHPUnit\Framework\TestCase uses FunctionalTestSetupTrait, TestSetupTrait, AssertLegacyTrait, BlockCreationTrait, ConfigTestTrait, ContentTypeCreationTrait, NodeCreationTrait, PhpunitCompatibilityTrait, RandomGeneratorTrait, TestRequirementsTrait, UiHelperTrait, UserCreationTrait, XdebugRequestTrait
- class \Drupal\Tests\contact_storage\Functional\ContactStorageTestBase
- class \Drupal\Tests\contact_storage\Functional\ContactStorageTest uses AssertMailTrait, FieldUiTestTrait, PathAliasTestTrait
- class \Drupal\Tests\contact_storage\Functional\ContactStorageTestBase
Expanded class hierarchy of ContactStorageTest
File
- tests/
src/ Functional/ ContactStorageTest.php, line 18
Namespace
Drupal\Tests\contact_storage\FunctionalView source
class ContactStorageTest extends ContactStorageTestBase {
use FieldUiTestTrait;
use AssertMailTrait {
getMails as drupalGetMails;
}
use PathAliasTestTrait;
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'classy';
/**
* An administrative user with permission to administer contact forms.
*
* @var \Drupal\user\UserInterface
*/
protected $adminUser;
/**
* Modules to enable.
*
* @var array
*/
public static $modules = [
'text',
'block',
'contact',
'language',
'field_ui',
'contact_test',
'contact_storage',
'filter',
];
protected function setUp() {
parent::setUp();
$this
->drupalPlaceBlock('system_breadcrumb_block');
$this
->drupalPlaceBlock('local_actions_block');
$this
->drupalPlaceBlock('page_title_block');
$full_html_format = FilterFormat::create([
'format' => 'full_html',
'name' => 'Full HTML',
]);
$full_html_format
->save();
// Create and login administrative user.
$this->adminUser = $this
->drupalCreateUser([
'access site-wide contact form',
'administer contact forms',
'administer users',
'administer account settings',
'administer contact_message fields',
'administer contact_message form display',
'administer contact_message display',
'use text format full_html',
]);
$this
->drupalLogin($this->adminUser);
}
/**
* Tests contact messages submitted through contact form.
*/
public function testContactStorage() {
// Create first valid contact form.
$mail = 'simpletest@example.com';
$this
->addContactForm('test_id', 'test_label', $mail, TRUE);
$this
->assertText('Contact form test_label has been added.');
// Ensure that anonymous can submit site-wide contact form.
user_role_grant_permissions(AccountInterface::ANONYMOUS_ROLE, [
'access site-wide contact form',
]);
$this
->drupalLogout();
$this
->drupalGet('contact');
$this
->assertText('Your email address');
$this
->assertNoText(t('Form'));
$this
->submitContact('Test_name', $mail, 'Test_subject', 'test_id', 'Test_message');
$this
->assertText('Your message has been sent.');
// Verify that only 1 message has been sent (by default, the "Send a copy
// to yourself" option is disabled.
$captured_emails = $this
->drupalGetMails();
$this
->assertTrue(count($captured_emails) === 1);
// Login as admin.
$this
->drupalLogin($this->adminUser);
// Verify that the global setting stating whether e-mails should be sent in
// HTML format is false by default.
$this
->assertFalse(\Drupal::config('contact_storage.settings')
->get('send_html'));
// Verify that this first e-mail was sent in plain text format.
$captured_emails = $this
->drupalGetMails();
$this
->assertTrue(strpos($captured_emails[0]['headers']['Content-Type'], 'text/plain') !== FALSE);
// Go to the settings form and enable sending messages in HTML format.
$this
->drupalGet('/admin/structure/contact/settings');
$enable_html = [
'send_html' => TRUE,
];
$this
->drupalPostForm(NULL, $enable_html, t('Save configuration'));
// Check that the form POST was successful.
$this
->assertText('The configuration options have been saved.');
// Check that the global setting is properly updated.
$this
->assertTrue(\Drupal::config('contact_storage.settings')
->get('send_html'));
$display_fields = [
"The sender's name",
"The sender's email",
"Subject",
];
// Check that the page title is correct.
$this
->drupalGet('contact/test_id');
$this
->assertTrue(!empty($this
->cssSelect('h1:contains(test_label)')));
$this
->assertTitle('test_label | Drupal');
// Check that the configuration edit page title is correct.
$this
->drupalGet('admin/structure/contact/manage/test_id');
$this
->assertTrue(!empty($this
->cssSelect('h1:contains(test_label)')));
$this
->assertTitle('Edit test_label | Drupal');
// Check that name, subject and mail are configurable on display.
$this
->drupalGet('admin/structure/contact/manage/test_id/display');
foreach ($display_fields as $label) {
$this
->assertText($label);
}
// Check that preview is configurable on form display.
$this
->drupalGet('admin/structure/contact/manage/test_id/form-display');
$this
->assertText('Preview');
// Check the message list overview.
$this
->drupalGet('admin/structure/contact/messages');
$rows = $this
->xpath('//tbody/tr');
// Make sure only 1 message is available.
$this
->assertEqual(count($rows), 1);
// Some fields should be present.
$this
->assertText('Test_subject');
$this
->assertText('Test_name');
$this
->assertText('test_label');
// Click the view link and make sure name, subject and email are displayed
// by default.
$this
->clickLink(t('View'));
foreach ($display_fields as $label) {
$this
->assertText($label);
}
// Make sure the stored message is correct.
$this
->drupalGet('admin/structure/contact/messages');
$this
->clickLink(t('Edit'));
$this
->assertFieldById('edit-name', 'Test_name');
$this
->assertFieldById('edit-mail', $mail);
$this
->assertFieldById('edit-subject-0-value', 'Test_subject');
$this
->assertFieldById('edit-message-0-value', 'Test_message');
// Submit should redirect back to listing.
$this
->drupalPostForm(NULL, [], t('Save'));
$this
->assertUrl('admin/structure/contact/messages');
// Delete the message.
$this
->clickLink(t('Delete'));
$this
->drupalPostForm(NULL, NULL, t('Delete'));
$this
->assertRaw(t('The @entity-type %label has been deleted.', [
// See \Drupal\Core\Entity\EntityDeleteFormTrait::getDeletionMessage().
'@entity-type' => 'contact message',
'%label' => 'Test_subject',
]));
// Make sure no messages are available.
$this
->assertText('There is no Contact message yet.');
// Fill the "Submit button text" field and assert the form can still be
// submitted.
$edit = [
'contact_storage_submit_text' => 'Submit the form',
'contact_storage_preview' => FALSE,
];
$this
->drupalPostForm('admin/structure/contact/manage/test_id', $edit, t('Save'));
$edit = [
'subject[0][value]' => 'Test subject',
'message[0][value]' => 'Test message',
];
$this
->drupalGet('contact');
$element = $this
->cssSelect('#edit-preview');
// Preview button is hidden.
$this
->assertTrue(empty($element));
$this
->drupalPostForm(NULL, $edit, t('Submit the form'));
$this
->assertText('Your message has been sent.');
// Add an Options email item field to the form.
$settings = [
'settings[allowed_values]' => "test_key1|test_label1|simpletest1@example.com\ntest_key2|test_label2|simpletest2@example.com",
];
$this
->fieldUIAddNewField('admin/structure/contact/manage/test_id', 'category', 'Category', 'contact_storage_options_email', $settings);
// Verify that the new field shows up correctly on the form.
$this
->drupalGet('contact');
$this
->assertText('Category');
$this
->assertOption('edit-field-category', '_none');
$this
->assertOption('edit-field-category', 'test_key1');
$this
->assertOption('edit-field-category', 'test_key2');
// Send a message using the Options email item field and enable the "Send a
// copy to yourself" option.
$captured_emails = $this
->drupalGetMails();
$emails_count_before = count($captured_emails);
$edit = [
'subject[0][value]' => 'Test subject',
'message[0][value]' => 'Test message',
'field_category' => 'test_key2',
'copy' => 'checked',
];
$this
->drupalPostForm(NULL, $edit, t('Submit the form'));
$this
->assertText('Your message has been sent.');
// Check that 2 messages were sent and that the body of the last
// message contains the added message.
$captured_emails = $this
->drupalGetMails();
$emails_count_after = count($captured_emails);
$this
->assertTrue($emails_count_after === $emails_count_before + 2);
$this
->assertMailString('body', 'test_key2', 2);
// The last message is the one sent as a copy, the one before it is the
// original. Check that the original contains the added recipients and that
// the copied one is only sent to the sender.
$logged_in_user_email = $this->loggedInUser
->getEmail();
$this
->assertTrue($captured_emails[$emails_count_after - 2]['to'] == "{$mail},simpletest2@example.com");
$this
->assertTrue($captured_emails[$emails_count_after - 1]['to'] == $logged_in_user_email);
// Test clone functionality - add field to existing form.
$this
->fieldUIAddNewField('admin/structure/contact/manage/test_id', 'text_field', 'Text field', 'text');
// Then clone it.
$this
->drupalGet('admin/structure/contact/manage/test_id/clone');
$this
->drupalPostForm(NULL, [
'id' => 'test_id_2',
'label' => 'Cloned',
], t('Clone'));
$edit = [
'subject[0][value]' => 'Test subject',
'message[0][value]' => 'Test message',
];
// The added field should be on the cloned form too.
$edit['field_text_field[0][value]'] = 'Some text';
$this
->drupalGet('contact/test_id_2');
$this
->drupalPostForm(NULL, $edit, t('Submit the form'));
$form = ContactForm::load('test_id_2');
$this
->assertNotEmpty($form
->uuid());
// Try changing the options email label, field default value and setting it
// to required.
$this
->drupalGet('/admin/structure/contact/manage/test_id/fields');
$this
->clickLink('Edit');
$this
->drupalPostForm(NULL, [
'label' => 'Category-2',
'required' => TRUE,
'default_value_input[field_category]' => 'test_key1',
], t('Save settings'));
// Verify that the changes are visible into the contact form.
$this
->drupalGet('contact');
$this
->assertText('Category-2');
$this
->assertOption('edit-field-category', 'test_key1');
$this
->assertOption('edit-field-category', 'test_key2');
$this
->assertNotEmpty($this
->xpath('//select[@id="edit-field-category" and @required="required"]//option[@value="test_key1" and @selected="selected"]'));
// Verify that the 'View messages' link exists for the 2 forms and that it
// links to the correct view.
$this
->drupalGet('/admin/structure/contact');
$this
->assertLinkByHref('/admin/structure/contact/messages?form=test_id');
$this
->assertLinkByHref('/admin/structure/contact/messages?form=test_id_2');
// Create a new contact form and assert that the disable link exists for
// each forms.
$this
->addContactForm('test_disable_id', 'test_disable_label', 'simpletest@example.com', FALSE);
$this
->drupalGet('/admin/structure/contact');
$contact_form_count = count(ContactForm::loadMultiple());
$this
->assertEqual(count($this
->cssSelect('li.disable a:contains(Disable)')), $contact_form_count);
// Disable the form and assert that there is 1 less "Disable" button and 1
// "Enable" button.
$this
->drupalPostForm('/admin/structure/contact/manage/test_disable_id/disable', NULL, t('Disable'));
$this
->assertText('Disabled contact form test_disable_label.');
$this
->drupalGet('/admin/structure/contact');
$this
->assertEqual(count($this
->cssSelect('li.disable a:contains(Disable)')), $contact_form_count - 1);
$this
->assertEqual(count($this
->cssSelect('li.enable a:contains(Enable)')), 1);
// Assert that the disabled form has no input or text area and the message.
$this
->drupalGet('contact/test_disable_id');
$this
->assertEqual(count($this
->cssSelect('input')), 0);
$this
->assertEqual(count($this
->cssSelect('textarea')), 0);
$this
->assertText('This contact form has been disabled.');
// Try to re-enable the form and assert that it can be accessed.
$this
->drupalPostForm('/admin/structure/contact/manage/test_disable_id/enable', NULL, t('Enable'));
$this
->assertText('Enabled contact form test_disable_label.');
$this
->drupalGet('contact/test_disable_id');
$this
->assertNoText('This contact form has been disabled.');
// Create a new contact form with a custom disabled message, disable it and
// assert that the message displayed is correct.
$this
->addContactForm('test_disable_id_2', 'test_disable_label_2', 'simpletest@example.com', FALSE, [
'contact_storage_disabled_form_message' => 'custom disabled message',
]);
$this
->drupalPostForm('/admin/structure/contact/manage/test_disable_id_2/disable', NULL, t('Disable'));
$this
->assertText('Disabled contact form test_disable_label_2.');
$this
->drupalGet('contact/test_disable_id_2');
$this
->assertText('custom disabled message');
}
/**
* Tests the url alias creation feature.
*/
public function testUrlAlias() {
// Add a second language to make sure aliases work with any language.
$language = ConfigurableLanguage::createFromLangcode('de');
$language
->save();
// Set the second language as default.
$this
->config('system.site')
->set('default_langcode', $language
->getId())
->save();
$this
->rebuildContainer();
$mail = 'simpletest@example.com';
// Test for alias without slash.
$this
->addContactForm('form_alias_1', 'contactForm', $mail, FALSE, [
'contact_storage_url_alias' => 'form51',
]);
$this
->assertText('The alias path has to start with a slash.');
$this
->drupalGet('form51');
$this
->assertResponse(404);
// Test for correct alias. Verify that we land on the correct contact form.
$this
->addContactForm('form_alias_2', 'contactForm', $mail, FALSE, [
'contact_storage_url_alias' => '/form51',
]);
$this
->assertText('Contact form contactForm has been added.');
$this
->drupalGet('form51');
$this
->assertResponse(200);
$this
->assertText('contactForm');
// Edit the contact form without changing anything. Verify that the existing
// alias continues to work.
$this
->drupalPostForm('admin/structure/contact/manage/form_alias_2', [], 'Save');
$this
->assertText('Contact form contactForm has been updated.');
$this
->drupalGet('form51');
$this
->assertResponse(200);
// Edit the contact form by changing the alias. Verify that the new alias
// is generated and the old one removed.
$this
->drupalPostForm('admin/structure/contact/manage/form_alias_2', [
'contact_storage_url_alias' => '/form52',
], 'Save');
$this
->assertText('Contact form contactForm has been updated.');
$this
->drupalGet('form51');
$this
->assertResponse(404);
$this
->drupalGet('form52');
$this
->assertResponse(200);
$this
->assertText('contactForm');
// Edit the contact form by removing the alias. Verify that is is deleted.
$this
->drupalPostForm('admin/structure/contact/manage/form_alias_2', [
'contact_storage_url_alias' => '',
], 'Save');
$this
->assertText('Contact form contactForm has been updated.');
$this
->drupalGet('form52');
$this
->assertResponse(404);
// Add an alias back and delete the contact form. Verify that the alias is
// deleted along with the contact form.
$this
->drupalPostForm('admin/structure/contact/manage/form_alias_2', [
'contact_storage_url_alias' => '/form52',
], 'Save');
$this
->assertText('Contact form contactForm has been updated.');
$this
->drupalGet('form52');
$this
->assertResponse(200);
$this
->assertText('contactForm');
$this
->drupalPostForm('admin/structure/contact/manage/form_alias_2/delete', [], 'Delete');
$alias = $this
->loadPathAliasByConditions([
'path' => '/contact/form_alias_2',
]);
$this
->assertNull($alias);
}
public function testMaximumSubmissionLimit() {
// Create a new contact form with a maximum submission limit of 2.
$this
->addContactForm('test_id_3', 'test_label', 'simpletest@example.com', FALSE, [
'contact_storage_maximum_submissions_user' => 2,
]);
$this
->assertText('Contact form test_label has been added.');
// Sends 2 messages with "Send yourself a copy" option activated, shouldn't
// reach the limit even if 2 messages are sent twice.
$this
->drupalGet('contact/test_id_3');
$edit = [
'subject[0][value]' => 'Test subject',
'message[0][value]' => 'Test message',
'copy' => 'checked',
];
$this
->drupalPostForm(NULL, $edit, t('Send message'));
$this
->assertText('Your message has been sent.');
$this
->drupalGet('contact/test_id_3');
$this
->drupalPostForm(NULL, $edit, t('Send message'));
$this
->assertText('Your message has been sent.');
// Try accessing the form after the limit has been reached.
$this
->drupalGet('contact/test_id_3');
$this
->assertText('You have reached the maximum submission limit of 2 for this form.');
}
/**
* Tests the Auto-reply field.
*/
public function testAutoReplyField() {
// Create a new contact form with an auto-reply.
$this
->addContactForm('test_auto_reply_id_1', 'test_auto_reply_label_1', 'simpletest@example.com', TRUE, [
'reply[value]' => "auto_reply_1\nsecond_line",
]);
$this
->assertText('Contact form test_auto_reply_label_1 has been added.');
// Verify that the auto-reply shows up in the field and only offers
// one format (plain text), since html e-mails are disabled.
$this
->drupalGet('admin/structure/contact/manage/test_auto_reply_id_1');
$this
->assertNotEmpty($this
->xpath('//textarea[@id="edit-reply-value" and text()=:text]', [
':text' => "auto_reply_1\nsecond_line",
]));
$this
->assertEmpty($this
->xpath('//select[@name="reply[format]"]'));
$this
->drupalGet('contact');
$edit = [
'subject[0][value]' => 'Test subject',
'message[0][value]' => 'Test message',
];
$this
->drupalPostForm('contact', $edit, t('Send message'));
$this
->assertText('Your message has been sent.');
$captured_emails = $this
->drupalGetMails();
// Checks that the last captured email is the auto-reply, has a correct
// body and is in html format.
$this
->assertEqual(end($captured_emails)['key'], 'page_autoreply');
$this
->assertStringContainsString("auto_reply_1\nsecond_line", end($captured_emails)['body']);
$this
->assertStringContainsString('text/plain', end($captured_emails)['headers']['Content-Type']);
// Enable sending messages in html format and verify that the available
// formats correctly show up on the contact form edit page.
$this
->drupalPostForm('/admin/structure/contact/settings', [
'send_html' => TRUE,
], t('Save configuration'));
$this
->drupalGet('admin/structure/contact/manage/test_auto_reply_id_1');
$this
->assertNotEmpty($this
->xpath('//select[@name="reply[format]"]//option[@value="plain_text" and @selected="selected"]'));
$this
->assertNotEmpty($this
->xpath('//select[@name="reply[format]"]//option[@value="full_html"]'));
// Use custom testing mail system to support HTML mails.
$mail_config = $this
->config('system.mail');
$mail_config
->set('interface.default', 'test_contact_storage_html_mail');
$mail_config
->save();
// Test sending a HTML mail.
$this
->drupalGet('contact');
$edit = [
'subject[0][value]' => 'Test subject',
'message[0][value]' => 'Test message',
];
$this
->drupalPostForm('contact', $edit, t('Send message'));
$this
->assertText('Your message has been sent.');
$captured_emails = $this
->drupalGetMails();
$this
->assertEqual(end($captured_emails)['key'], 'page_autoreply');
$this
->assertTrue(strpos(end($captured_emails)['body'], "auto_reply_1<br />\nsecond_line") !== FALSE);
$this
->assertEqual(end($captured_emails)['headers']['Content-Type'], 'text/html');
// Select full html format (not selected by default) and verify that it is
// properly set.
$this
->drupalPostForm('admin/structure/contact/manage/test_auto_reply_id_1', [
'reply[format]' => 'full_html',
], t('Save'));
$this
->drupalGet('admin/structure/contact/manage/test_auto_reply_id_1');
$this
->assertNotEmpty($this
->xpath('//select[@name="reply[format]"]//option[@value="full_html" and @selected="selected"]'));
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AssertHelperTrait:: |
protected static | function | Casts MarkupInterface objects into strings. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertTrue() instead. | |
AssertLegacyTrait:: |
protected | function | Asserts whether an expected cache tag was present in the last response. | |
AssertLegacyTrait:: |
protected | function | Asserts that the element with the given CSS selector is not present. | |
AssertLegacyTrait:: |
protected | function | Asserts that the element with the given CSS selector is present. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertEquals() instead. | |
AssertLegacyTrait:: |
protected | function | Passes if the raw text IS found escaped on the loaded page, fail otherwise. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field exists with the given name or ID. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field exists with the given ID and value. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field exists with the given name and value. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field exists in the current page by the given XPath. | |
AssertLegacyTrait:: |
protected | function | Asserts that a checkbox field in the current page is checked. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field exists in the current page with a given Xpath result. | |
AssertLegacyTrait:: |
protected | function | Checks that current response header equals value. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertSame() instead. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertEquals() instead. | |
AssertLegacyTrait:: |
protected | function | Passes if a link with the specified label is found. | |
AssertLegacyTrait:: |
protected | function | Passes if a link containing a given href (part) is found. | |
AssertLegacyTrait:: |
protected | function | Asserts whether an expected cache tag was absent in the last response. | |
AssertLegacyTrait:: |
protected | function | Passes if the raw text is not found escaped on the loaded page. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field does NOT exist with the given name or ID. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field does not exist with the given ID and value. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field does not exist with the given name and value. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field does not exist or its value does not match, by XPath. | |
AssertLegacyTrait:: |
protected | function | Asserts that a checkbox field in the current page is not checked. | |
AssertLegacyTrait:: |
protected | function | Passes if a link with the specified label is not found. | |
AssertLegacyTrait:: |
protected | function | Passes if a link containing a given href (part) is not found. | |
AssertLegacyTrait:: |
protected | function | Asserts that a select option does NOT exist in the current page. | |
AssertLegacyTrait:: |
protected | function | Triggers a pass if the Perl regex pattern is not found in the raw content. | |
AssertLegacyTrait:: |
protected | function | Passes if the raw text IS not found on the loaded page, fail otherwise. | 1 |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertNotEquals() instead. | |
AssertLegacyTrait:: |
protected | function | Passes if the page (with HTML stripped) does not contains the text. | 1 |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertNotSame() instead. | |
AssertLegacyTrait:: |
protected | function | Passes if the text is found MORE THAN ONCE on the text version of the page. | |
AssertLegacyTrait:: |
protected | function | Asserts that a select option in the current page exists. | |
AssertLegacyTrait:: |
protected | function | Asserts that a select option with the visible text exists. | |
AssertLegacyTrait:: |
protected | function | Asserts that a select option in the current page is checked. | |
AssertLegacyTrait:: |
protected | function | Triggers a pass if the Perl regex pattern is found in the raw content. | |
AssertLegacyTrait:: |
protected | function | Passes if the raw text IS found on the loaded page, fail otherwise. | 1 |
AssertLegacyTrait:: |
protected | function | Asserts the page responds with the specified response code. | 1 |
AssertLegacyTrait:: |
protected | function | Passes if the page (with HTML stripped) contains the text. | 1 |
AssertLegacyTrait:: |
protected | function | Helper for assertText and assertNoText. | |
AssertLegacyTrait:: |
protected | function | Pass if the page title is the given string. | |
AssertLegacyTrait:: |
protected | function | Passes if the text is found ONLY ONCE on the text version of the page. | |
AssertLegacyTrait:: |
protected | function | Passes if the internal browser's URL matches the given path. | |
AssertLegacyTrait:: |
protected | function | Builds an XPath query. | |
AssertLegacyTrait:: |
protected | function | Helper: Constructs an XPath for the given set of attributes and value. | |
AssertLegacyTrait:: |
protected | function | Get all option elements, including nested options, in a select. | |
AssertLegacyTrait:: |
protected | function | Gets the current raw content. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertTrue() instead. | |
AssertLegacyTrait:: |
protected | function | ||
AssertMailTrait:: |
protected | function | Asserts that the most recently sent email message has the given value. | |
AssertMailTrait:: |
protected | function | Asserts that the most recently sent email message has the pattern in it. | |
AssertMailTrait:: |
protected | function | Asserts that the most recently sent email message has the string in it. | |
AssertMailTrait:: |
protected | function | Gets an array containing all emails sent during this test case. Aliased as: drupalGetMails | |
AssertMailTrait:: |
protected | function | Outputs to verbose the most recent $count emails sent. | |
BlockCreationTrait:: |
protected | function | Creates a block instance based on default settings. Aliased as: drupalPlaceBlock | |
BrowserHtmlDebugTrait:: |
protected | property | The Base URI to use for links to the output files. | |
BrowserHtmlDebugTrait:: |
protected | property | Class name for HTML output logging. | |
BrowserHtmlDebugTrait:: |
protected | property | Counter for HTML output logging. | |
BrowserHtmlDebugTrait:: |
protected | property | Counter storage for HTML output logging. | |
BrowserHtmlDebugTrait:: |
protected | property | Directory name for HTML output logging. | |
BrowserHtmlDebugTrait:: |
protected | property | HTML output output enabled. | |
BrowserHtmlDebugTrait:: |
protected | property | The file name to write the list of URLs to. | |
BrowserHtmlDebugTrait:: |
protected | property | HTML output test ID. | |
BrowserHtmlDebugTrait:: |
protected | function | Formats HTTP headers as string for HTML output logging. | |
BrowserHtmlDebugTrait:: |
protected | function | Returns headers in HTML output format. | 1 |
BrowserHtmlDebugTrait:: |
protected | function | Logs a HTML output message in a text file. | |
BrowserHtmlDebugTrait:: |
protected | function | Creates the directory to store browser output. | |
BrowserTestBase:: |
protected | property | The base URL. | |
BrowserTestBase:: |
protected | property | The config importer that can be used in a test. | |
BrowserTestBase:: |
protected | property | An array of custom translations suitable for drupal_rewrite_settings(). | |
BrowserTestBase:: |
protected | property | The database prefix of this test run. | |
BrowserTestBase:: |
protected | property | Mink session manager. | |
BrowserTestBase:: |
protected | property | ||
BrowserTestBase:: |
protected | property | 1 | |
BrowserTestBase:: |
protected | property | The original container. | |
BrowserTestBase:: |
protected | property | The original array of shutdown function callbacks. | |
BrowserTestBase:: |
protected | property | ||
BrowserTestBase:: |
protected | property | The profile to install as a basis for testing. | 39 |
BrowserTestBase:: |
protected | property | The app root. | |
BrowserTestBase:: |
protected | property | Browser tests are run in separate processes to prevent collisions between code that may be loaded by tests. | |
BrowserTestBase:: |
protected | property | Time limit in seconds for the test. | |
BrowserTestBase:: |
protected | property | The translation file directory for the test environment. | |
BrowserTestBase:: |
protected | function | Clean up the Simpletest environment. | |
BrowserTestBase:: |
protected | function | Configuration accessor for tests. Returns non-overridden configuration. | |
BrowserTestBase:: |
protected | function | Translates a CSS expression to its XPath equivalent. | |
BrowserTestBase:: |
protected | function | Gets the value of an HTTP response header. | |
BrowserTestBase:: |
protected | function | Returns all response headers. | |
BrowserTestBase:: |
public static | function | Ensures test files are deletable. | |
BrowserTestBase:: |
protected | function | Gets an instance of the default Mink driver. | |
BrowserTestBase:: |
protected | function | Gets the JavaScript drupalSettings variable for the currently-loaded page. | 1 |
BrowserTestBase:: |
protected | function | Obtain the HTTP client for the system under test. | |
BrowserTestBase:: |
protected | function | Get the Mink driver args from an environment variable, if it is set. Can be overridden in a derived class so it is possible to use a different value for a subset of tests, e.g. the JavaScript tests. | 1 |
BrowserTestBase:: |
protected | function | Helper function to get the options of select field. | |
BrowserTestBase:: |
protected | function |
Provides a Guzzle middleware handler to log every response received. Overrides BrowserHtmlDebugTrait:: |
|
BrowserTestBase:: |
public | function | Returns Mink session. | |
BrowserTestBase:: |
protected | function | Get session cookies from current session. | |
BrowserTestBase:: |
protected | function |
Retrieves the current calling line in the class under test. Overrides BrowserHtmlDebugTrait:: |
|
BrowserTestBase:: |
protected | function | Visits the front page when initializing Mink. | 3 |
BrowserTestBase:: |
protected | function | Initializes Mink sessions. | 1 |
BrowserTestBase:: |
public | function | Installs Drupal into the Simpletest site. | 1 |
BrowserTestBase:: |
protected | function | Registers additional Mink sessions. | |
BrowserTestBase:: |
protected | function | 3 | |
BrowserTestBase:: |
protected | function | Transforms a nested array into a flat array suitable for drupalPostForm(). | |
BrowserTestBase:: |
protected | function | Performs an xpath search on the contents of the internal browser. | |
BrowserTestBase:: |
public | function | 1 | |
BrowserTestBase:: |
public | function | Prevents serializing any properties. | |
ConfigTestTrait:: |
protected | function | Returns a ConfigImporter object to import test configuration. | |
ConfigTestTrait:: |
protected | function | Copies configuration objects from source storage to target storage. | |
ContactStorageTest:: |
protected | property | An administrative user with permission to administer contact forms. | |
ContactStorageTest:: |
protected | property |
The theme to install as the default for testing. Overrides BrowserTestBase:: |
|
ContactStorageTest:: |
public static | property |
Modules to enable. Overrides BrowserTestBase:: |
|
ContactStorageTest:: |
protected | function |
Overrides BrowserTestBase:: |
|
ContactStorageTest:: |
public | function | Tests the Auto-reply field. | |
ContactStorageTest:: |
public | function | Tests contact messages submitted through contact form. | |
ContactStorageTest:: |
public | function | ||
ContactStorageTest:: |
public | function | Tests the url alias creation feature. | |
ContactStorageTestBase:: |
public | function | Adds a form. | |
ContactStorageTestBase:: |
public | function | Submits the contact form. | |
ContentTypeCreationTrait:: |
protected | function | Creates a custom content type based on default settings. Aliased as: drupalCreateContentType | 1 |
FieldUiTestTrait:: |
public | function | Adds an existing field through the Field UI. | |
FieldUiTestTrait:: |
public | function | Creates a new field through the Field UI. | |
FieldUiTestTrait:: |
public | function | Deletes a field through the Field UI. | |
FunctionalTestSetupTrait:: |
protected | property | The flag to set 'apcu_ensure_unique_prefix' setting. | 1 |
FunctionalTestSetupTrait:: |
protected | property | The class loader to use for installation and initialization of setup. | |
FunctionalTestSetupTrait:: |
protected | property | The config directories used in this test. | |
FunctionalTestSetupTrait:: |
protected | property | The "#1" admin user. | |
FunctionalTestSetupTrait:: |
protected | function | Execute the non-interactive installer. | 1 |
FunctionalTestSetupTrait:: |
protected | function | Returns all supported database driver installer objects. | |
FunctionalTestSetupTrait:: |
protected | function | Initialize various configurations post-installation. | 2 |
FunctionalTestSetupTrait:: |
protected | function | Initializes the kernel after installation. | |
FunctionalTestSetupTrait:: |
protected | function | Initialize settings created during install. | |
FunctionalTestSetupTrait:: |
protected | function | Initializes user 1 for the site to be installed. | |
FunctionalTestSetupTrait:: |
protected | function | Installs the default theme defined by `static::$defaultTheme` when needed. | |
FunctionalTestSetupTrait:: |
protected | function | Install modules defined by `static::$modules`. | 1 |
FunctionalTestSetupTrait:: |
protected | function | Returns the parameters that will be used when Simpletest installs Drupal. | 9 |
FunctionalTestSetupTrait:: |
protected | function | Prepares the current environment for running the test. | 23 |
FunctionalTestSetupTrait:: |
protected | function | Creates a mock request and sets it on the generator. | |
FunctionalTestSetupTrait:: |
protected | function | Prepares site settings and services before installation. | 2 |
FunctionalTestSetupTrait:: |
protected | function | Resets and rebuilds the environment after setup. | |
FunctionalTestSetupTrait:: |
protected | function | Rebuilds \Drupal::getContainer(). | |
FunctionalTestSetupTrait:: |
protected | function | Resets all data structures after having enabled new modules. | |
FunctionalTestSetupTrait:: |
protected | function | Changes parameters in the services.yml file. | |
FunctionalTestSetupTrait:: |
protected | function | Sets up the base URL based upon the environment variable. | |
FunctionalTestSetupTrait:: |
protected | function | Rewrites the settings.php file of the test site. | |
NodeCreationTrait:: |
protected | function | Creates a node based on default settings. Aliased as: drupalCreateNode | |
NodeCreationTrait:: |
public | function | Get a node from the database based on its title. Aliased as: drupalGetNodeByTitle | |
PathAliasTestTrait:: |
protected | function | Asserts that a path alias exists in the storage. | |
PathAliasTestTrait:: |
protected | function | Asserts that a path alias does not exist in the storage. | |
PathAliasTestTrait:: |
protected | function | Creates a new path alias. | |
PathAliasTestTrait:: |
protected | function | Gets the first result from a 'load by properties' storage call. | |
PhpunitCompatibilityTrait:: |
public | function | Returns a mock object for the specified class using the available method. | |
PhpunitCompatibilityTrait:: |
public | function | Compatibility layer for PHPUnit 6 to support PHPUnit 4 code. | |
RandomGeneratorTrait:: |
protected | property | The random generator. | |
RandomGeneratorTrait:: |
protected | function | Gets the random generator for the utility methods. | |
RandomGeneratorTrait:: |
protected | function | Generates a unique random string containing letters and numbers. | 1 |
RandomGeneratorTrait:: |
public | function | Generates a random PHP object. | |
RandomGeneratorTrait:: |
public | function | Generates a pseudo-random string of ASCII characters of codes 32 to 126. | |
RandomGeneratorTrait:: |
public | function | Callback for random string validation. | |
RefreshVariablesTrait:: |
protected | function | Refreshes in-memory configuration and state information. | 3 |
SessionTestTrait:: |
protected | property | The name of the session cookie. | |
SessionTestTrait:: |
protected | function | Generates a session cookie name. | |
SessionTestTrait:: |
protected | function | Returns the session name in use on the child site. | |
StorageCopyTrait:: |
protected static | function | Copy the configuration from one storage to another and remove stale items. | |
TestRequirementsTrait:: |
private | function | Checks missing module requirements. | |
TestRequirementsTrait:: |
protected | function | Check module requirements for the Drupal use case. | 1 |
TestRequirementsTrait:: |
protected static | function | Returns the Drupal root directory. | |
TestSetupTrait:: |
protected static | property | An array of config object names that are excluded from schema checking. | |
TestSetupTrait:: |
protected | property | The dependency injection container used in the test. | |
TestSetupTrait:: |
protected | property | The DrupalKernel instance used in the test. | |
TestSetupTrait:: |
protected | property | The site directory of the original parent site. | |
TestSetupTrait:: |
protected | property | The private file directory for the test environment. | |
TestSetupTrait:: |
protected | property | The public file directory for the test environment. | |
TestSetupTrait:: |
protected | property | The site directory of this test run. | |
TestSetupTrait:: |
protected | property | Set to TRUE to strict check all configuration saved. | 2 |
TestSetupTrait:: |
protected | property | The temporary file directory for the test environment. | |
TestSetupTrait:: |
protected | property | The test run ID. | |
TestSetupTrait:: |
protected | function | Changes the database connection to the prefixed one. | |
TestSetupTrait:: |
protected | function | Gets the config schema exclusions for this test. | |
TestSetupTrait:: |
public static | function | Returns the database connection to the site running Simpletest. | |
TestSetupTrait:: |
protected | function | Generates a database prefix for running tests. | 2 |
UiHelperTrait:: |
protected | property | The current user logged in using the Mink controlled browser. | |
UiHelperTrait:: |
protected | property | The number of meta refresh redirects to follow, or NULL if unlimited. | |
UiHelperTrait:: |
protected | property | The number of meta refresh redirects followed during ::drupalGet(). | |
UiHelperTrait:: |
public | function | Returns WebAssert object. | 1 |
UiHelperTrait:: |
protected | function | Builds an a absolute URL from a system path or a URL object. | |
UiHelperTrait:: |
protected | function | Checks for meta refresh tag and if found call drupalGet() recursively. | |
UiHelperTrait:: |
protected | function | Clicks the element with the given CSS selector. | |
UiHelperTrait:: |
protected | function | Follows a link by complete name. | |
UiHelperTrait:: |
protected | function | Searches elements using a CSS selector in the raw content. | |
UiHelperTrait:: |
protected | function | Retrieves a Drupal path or an absolute path. | 3 |
UiHelperTrait:: |
protected | function | Logs in a user using the Mink controlled browser. | |
UiHelperTrait:: |
protected | function | Logs a user out of the Mink controlled browser and confirms. | |
UiHelperTrait:: |
protected | function | Executes a form submission. | |
UiHelperTrait:: |
protected | function | Returns whether a given user account is logged in. | |
UiHelperTrait:: |
protected | function | Takes a path and returns an absolute path. | |
UiHelperTrait:: |
protected | function | Retrieves the plain-text content from the current page. | |
UiHelperTrait:: |
protected | function | Get the current URL from the browser. | |
UiHelperTrait:: |
protected | function | Prepare for a request to testing site. | 1 |
UiHelperTrait:: |
protected | function | Fills and submits a form. | |
UserCreationTrait:: |
protected | function | Checks whether a given list of permission names is valid. | |
UserCreationTrait:: |
protected | function | Creates an administrative role. | |
UserCreationTrait:: |
protected | function | Creates a role with specified permissions. Aliased as: drupalCreateRole | |
UserCreationTrait:: |
protected | function | Create a user with a given set of permissions. Aliased as: drupalCreateUser | |
UserCreationTrait:: |
protected | function | Grant permissions to a user role. | |
UserCreationTrait:: |
protected | function | Switch the current logged in user. | |
UserCreationTrait:: |
protected | function | Creates a random user account and sets it as current user. | |
XdebugRequestTrait:: |
protected | function | Adds xdebug cookies, from request setup. |