SearchTestBase.php
Same filename in this branch
Namespace
Drupal\search\TestsFile
-
core/
modules/ search/ src/ Tests/ SearchTestBase.php
View source
<?php
namespace Drupal\search\Tests;
@trigger_error(__NAMESPACE__ . '\\SearchTestBase is deprecated for removal before Drupal 9.0.0. Use \\Drupal\\Tests\\search\\Functional\\SearchTestBase instead. See https://www.drupal.org/node/2999939', E_USER_DEPRECATED);
use Drupal\simpletest\WebTestBase;
use Drupal\Component\Render\FormattableMarkup;
/**
* Defines the common search test code.
*
* @deprecated in drupal:8.?.? and is removed from drupal:9.0.0.
* Use \Drupal\Tests\search\Functional\SearchTestBase instead.
*
* @see https://www.drupal.org/node/2999939
*/
abstract class SearchTestBase extends WebTestBase {
/**
* Modules to enable.
*
* @var array
*/
public static $modules = [
'node',
'search',
'dblog',
];
protected function setUp() {
parent::setUp();
// Create Basic page and Article node types.
if ($this->profile != 'standard') {
$this->drupalCreateContentType([
'type' => 'page',
'name' => 'Basic page',
]);
$this->drupalCreateContentType([
'type' => 'article',
'name' => 'Article',
]);
}
}
/**
* Simulates submission of a form using GET instead of POST.
*
* Forms that use the GET method cannot be submitted with
* WebTestBase::drupalPostForm(), which explicitly uses POST to submit the
* form. So this method finds the form, verifies that it has input fields and
* a submit button matching the inputs to this method, and then calls
* WebTestBase::drupalGet() to simulate the form submission to the 'action'
* URL of the form (if set, or the current URL if not).
*
* See WebTestBase::drupalPostForm() for more detailed documentation of the
* function parameters.
*
* @param string $path
* Location of the form to be submitted: either a Drupal path, absolute
* path, or NULL to use the current page.
* @param array $edit
* Form field data to submit. Unlike drupalPostForm(), this does not support
* file uploads.
* @param string $submit
* Value of the submit button to submit clicking. Unlike drupalPostForm(),
* this does not support AJAX.
* @param string $form_html_id
* (optional) HTML ID of the form, to disambiguate.
*/
protected function submitGetForm($path, $edit, $submit, $form_html_id = NULL) {
if (isset($path)) {
$this->drupalGet($path);
}
if ($this->parse()) {
// Iterate over forms to find one that matches $edit and $submit.
$edit_save = $edit;
$xpath = '//form';
if (!empty($form_html_id)) {
$xpath .= "[@id='" . $form_html_id . "']";
}
$forms = $this->xpath($xpath);
foreach ($forms as $form) {
// Try to set the fields of this form as specified in $edit.
$edit = $edit_save;
$post = [];
$upload = [];
$submit_matches = $this->handleForm($post, $edit, $upload, $submit, $form);
if (!$edit && $submit_matches) {
// Everything matched, so "submit" the form.
$action = isset($form['action']) ? $this->getAbsoluteUrl((string) $form['action']) : NULL;
$this->drupalGet($action, [
'query' => $post,
]);
return;
}
}
// We have not found a form which contained all fields of $edit and
// the submit button.
foreach ($edit as $name => $value) {
$this->fail(new FormattableMarkup('Failed to set field @name to @value', [
'@name' => $name,
'@value' => $value,
]));
}
$this->assertTrue($submit_matches, new FormattableMarkup('Found the @submit button', [
'@submit' => $submit,
]));
$this->fail(new FormattableMarkup('Found the requested form fields at @path', [
'@path' => $path,
]));
}
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
SearchTestBase | in drupal:8.?.? and is removed from drupal:9.0.0. Use \Drupal\Tests\search\Functional\SearchTestBase instead. |
Defines the common search test code. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.