Mercurial > hg > cmmr2012-drupal-site
diff core/tests/Drupal/Tests/WebAssert.php @ 4:a9cd425dd02b
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:11:55 +0000 |
parents | c75dbcec494b |
children | 12f9dff5fda9 |
line wrap: on
line diff
--- a/core/tests/Drupal/Tests/WebAssert.php Thu Feb 28 11:14:44 2019 +0000 +++ b/core/tests/Drupal/Tests/WebAssert.php Thu Feb 28 13:11:55 2019 +0000 @@ -3,6 +3,7 @@ namespace Drupal\Tests; use Behat\Mink\Exception\ExpectationException; +use Behat\Mink\Exception\ResponseTextException; use Behat\Mink\WebAssert as MinkWebAssert; use Behat\Mink\Element\TraversableElement; use Behat\Mink\Exception\ElementNotFoundException; @@ -115,7 +116,7 @@ $container = $container ?: $this->session->getPage(); $node = $container->find('named', [ 'select', - $this->session->getSelectorsHandler()->xpathLiteral($select), + $select, ]); if ($node === NULL) { @@ -145,7 +146,7 @@ $container = $container ?: $this->session->getPage(); $select_field = $container->find('named', [ 'select', - $this->session->getSelectorsHandler()->xpathLiteral($select), + $select, ]); if ($select_field === NULL) { @@ -155,7 +156,7 @@ $option_field = $select_field->find('named', ['option', $option]); if ($option_field === NULL) { - throw new ElementNotFoundException($this->session, 'select', 'id|name|label|value', $option); + throw new ElementNotFoundException($this->session->getDriver(), 'select', 'id|name|label|value', $option); } return $option_field; @@ -167,7 +168,7 @@ * @param string $select * One of id|name|label|value for the select field. * @param string $option - * The option value that shoulkd not exist. + * The option value that should not exist. * @param \Behat\Mink\Element\TraversableElement $container * (optional) The document to check against. Defaults to the current page. * @@ -178,7 +179,7 @@ $container = $container ?: $this->session->getPage(); $select_field = $container->find('named', [ 'select', - $this->session->getSelectorsHandler()->xpathLiteral($select), + $select, ]); if ($select_field === NULL) { @@ -305,7 +306,7 @@ * Link position counting from zero. * @param string $message * (optional) A message to display with the assertion. Do not translate - * messages: use \Drupal\Component\Utility\SafeMarkup::format() to embed + * messages: use \Drupal\Component\Render\FormattableMarkup to embed * variables in the message text, not t(). If left blank, a default message * will be displayed. * @@ -326,7 +327,7 @@ * The full or partial value of the 'href' attribute of the anchor tag. * @param string $message * (optional) A message to display with the assertion. Do not translate - * messages: use \Drupal\Component\Utility\SafeMarkup::format() to embed + * messages: use \Drupal\Component\Render\FormattableMarkup to embed * variables in the message text, not t(). If left blank, a default message * will be displayed. * @@ -488,7 +489,7 @@ } /** - * Checks that specific hidden field does not exists. + * Checks that specific hidden field does not exist. * * @param string $field * One of id|name|value for the hidden field. @@ -545,4 +546,31 @@ $this->assert(!preg_match($regex, $actual), $message); } + /** + * Checks that current page contains text only once. + * + * @param string $text + * The string to look for. + * + * @see \Behat\Mink\WebAssert::pageTextContains() + */ + public function pageTextContainsOnce($text) { + $actual = $this->session->getPage()->getText(); + $actual = preg_replace('/\s+/u', ' ', $actual); + $regex = '/' . preg_quote($text, '/') . '/ui'; + $count = preg_match_all($regex, $actual); + if ($count === 1) { + return; + } + + if ($count > 1) { + $message = sprintf('The text "%s" appears in the text of this page more than once, but it should not.', $text); + } + else { + $message = sprintf('The text "%s" was not found anywhere in the text of the current page.', $text); + } + + throw new ResponseTextException($message, $this->session->getDriver()); + } + }