function AssertContentTrait::assertFieldsByValue

Same name and namespace in other branches
  1. 9 core/tests/Drupal/KernelTests/AssertContentTrait.php \Drupal\KernelTests\AssertContentTrait::assertFieldsByValue()
  2. 8.9.x core/tests/Drupal/KernelTests/AssertContentTrait.php \Drupal\KernelTests\AssertContentTrait::assertFieldsByValue()
  3. 10 core/tests/Drupal/KernelTests/AssertContentTrait.php \Drupal\KernelTests\AssertContentTrait::assertFieldsByValue()

Asserts that a field exists in the current page with a given Xpath result.

Parameters

\SimpleXmlElement[] $fields: Xml elements.

string $value: (optional) Value of the field to assert. You may pass in NULL (default) to skip checking the actual value, while still checking that the field exists.

string $message: (optional) A message to display with the assertion. Do not translate messages: use \Drupal\Component\Render\FormattableMarkup to embed variables in the message text, not t(). If left blank, a default message will be displayed.

Return value

bool TRUE on pass.

1 call to AssertContentTrait::assertFieldsByValue()
AssertContentTrait::assertFieldByXPath in core/tests/Drupal/KernelTests/AssertContentTrait.php
Asserts that a field exists in the current page by the given XPath.

File

core/tests/Drupal/KernelTests/AssertContentTrait.php, line 772

Class

AssertContentTrait
Provides test methods to assert content.

Namespace

Drupal\KernelTests

Code

protected function assertFieldsByValue($fields, $value = NULL, $message = '') {
    // If value specified then check array for match.
    $found = TRUE;
    if (isset($value)) {
        $found = FALSE;
        if ($fields) {
            foreach ($fields as $field) {
                if (isset($field['value']) && $field['value'] == $value) {
                    // Input element with correct value.
                    $found = TRUE;
                }
                elseif (isset($field->option) || isset($field->optgroup)) {
                    // Select element found.
                    $selected = $this->getSelectedItem($field);
                    if ($selected === FALSE) {
                        // No item selected so use first item.
                        $items = $this->getAllOptions($field);
                        if (!empty($items) && $items[0]['value'] == $value) {
                            $found = TRUE;
                        }
                    }
                    elseif ($selected == $value) {
                        $found = TRUE;
                    }
                }
                elseif ((string) $field == $value) {
                    // Text area with correct text.
                    $found = TRUE;
                }
            }
        }
    }
    $this->assertNotEmpty($fields);
    $this->assertTrue($found, $message);
    return TRUE;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.