Mercurial > hg > isophonics-drupal-site
view core/modules/search/tests/src/Functional/SearchTestBase.php @ 9:1fc0ff908d1f
Add another data file
author | Chris Cannam |
---|---|
date | Mon, 05 Feb 2018 12:34:32 +0000 |
parents | 4c8ae668cc8c |
children | 129ea1e6d783 |
line wrap: on
line source
<?php namespace Drupal\Tests\search\Functional; use Drupal\Tests\BrowserTestBase; use Drupal\Component\Utility\SafeMarkup; /** * Defines the common search test code. */ abstract class SearchTestBase extends BrowserTestBase { /** * 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(SafeMarkup::format('Failed to set field @name to @value', ['@name' => $name, '@value' => $value])); } $this->assertTrue($submit_matches, format_string('Found the @submit button', ['@submit' => $submit])); $this->fail(format_string('Found the requested form fields at @path', ['@path' => $path])); } } }