Issue #2759879 by klausi, claudiu.cristea, dawehner, xjm, Lendude, jibran: Additional assertions for WebAssert and AssertLegacyTrait, part 2
parent
011d2c2949
commit
df1fe18178
|
@ -93,6 +93,58 @@ trait AssertLegacyTrait {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Passes if the text is found ONLY ONCE on the text version of the page.
|
||||
*
|
||||
* The text version is the equivalent of what a user would see when viewing
|
||||
* through a web browser. In other words the HTML has been filtered out of
|
||||
* the contents.
|
||||
*
|
||||
* @param string|\Drupal\Component\Render\MarkupInterface $text
|
||||
* Plain text to look for.
|
||||
* @param string $message
|
||||
* (optional) A message to display with the assertion. Do not translate
|
||||
* messages with t(). If left blank, a default message will be displayed.
|
||||
*
|
||||
* @deprecated Scheduled for removal in Drupal 9.0.0.
|
||||
* Use $this->getSession()->getPage()->getText() and substr_count() instead.
|
||||
*/
|
||||
protected function assertUniqueText($text, $message = NULL) {
|
||||
// Cast MarkupInterface objects to string.
|
||||
$text = (string) $text;
|
||||
|
||||
$message = $message ?: "'$text' found only once on the page";
|
||||
$page_text = $this->getSession()->getPage()->getText();
|
||||
$nr_found = substr_count($page_text, $text);
|
||||
$this->assertSame(1, $nr_found, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Passes if the text is found MORE THAN ONCE on the text version of the page.
|
||||
*
|
||||
* The text version is the equivalent of what a user would see when viewing
|
||||
* through a web browser. In other words the HTML has been filtered out of
|
||||
* the contents.
|
||||
*
|
||||
* @param string|\Drupal\Component\Render\MarkupInterface $text
|
||||
* Plain text to look for.
|
||||
* @param string $message
|
||||
* (optional) A message to display with the assertion. Do not translate
|
||||
* messages with t(). If left blank, a default message will be displayed.
|
||||
*
|
||||
* @deprecated Scheduled for removal in Drupal 9.0.0.
|
||||
* Use $this->getSession()->getPage()->getText() and substr_count() instead.
|
||||
*/
|
||||
protected function assertNoUniqueText($text, $message = '') {
|
||||
// Cast MarkupInterface objects to string.
|
||||
$text = (string) $text;
|
||||
|
||||
$message = $message ?: "'$text' found more than once on the page";
|
||||
$page_text = $this->getSession()->getPage()->getText();
|
||||
$nr_found = substr_count($page_text, $text);
|
||||
$this->assertGreaterThan(1, $nr_found, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts the page responds with the specified response code.
|
||||
*
|
||||
|
@ -128,6 +180,27 @@ trait AssertLegacyTrait {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that a field exists with the given name and value.
|
||||
*
|
||||
* @param string $name
|
||||
* Name of field to assert.
|
||||
* @param 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.
|
||||
*
|
||||
* @deprecated Scheduled for removal in Drupal 9.0.0.
|
||||
* Use $this->assertSession()->fieldNotExists() or
|
||||
* $this->assertSession()->fieldValueNotEquals() instead.
|
||||
*/
|
||||
protected function assertNoFieldByName($name, $value = NULL) {
|
||||
$this->assertSession()->fieldNotExists($name);
|
||||
if ($value !== NULL) {
|
||||
$this->assertSession()->fieldValueNotEquals($name, (string) $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that a field exists with the given ID and value.
|
||||
*
|
||||
|
@ -343,6 +416,53 @@ trait AssertLegacyTrait {
|
|||
return $this->assertSession()->optionNotExists($id, $option);
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that a select option in the current page is checked.
|
||||
*
|
||||
* @param string $id
|
||||
* ID of select field to assert.
|
||||
* @param string $option
|
||||
* Option to assert.
|
||||
* @param string $message
|
||||
* (optional) A message to display with the assertion. Do not translate
|
||||
* messages with t(). If left blank, a default message will be displayed.
|
||||
*
|
||||
* @deprecated Scheduled for removal in Drupal 9.0.0.
|
||||
* Use $this->assertSession()->optionExists() instead and check the
|
||||
* "selected" attribute yourself.
|
||||
*/
|
||||
protected function assertOptionSelected($id, $option, $message = NULL) {
|
||||
$option_field = $this->assertSession()->optionExists($id, $option);
|
||||
$message = $message ?: "Option $option for field $id is selected.";
|
||||
$this->assertTrue($option_field->hasAttribute('selected'), $message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that a checkbox field in the current page is checked.
|
||||
*
|
||||
* @param string $id
|
||||
* ID of field to assert.
|
||||
*
|
||||
* @deprecated Scheduled for removal in Drupal 9.0.0.
|
||||
* Use $this->assertSession()->checkboxChecked() instead.
|
||||
*/
|
||||
protected function assertFieldChecked($id) {
|
||||
$this->assertSession()->checkboxChecked($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that a checkbox field in the current page is not checked.
|
||||
*
|
||||
* @param string $id
|
||||
* ID of field to assert.
|
||||
*
|
||||
* @deprecated Scheduled for removal in Drupal 9.0.0.
|
||||
* Use $this->assertSession()->checkboxNotChecked() instead.
|
||||
*/
|
||||
protected function assertNoFieldChecked($id) {
|
||||
$this->assertSession()->checkboxNotChecked($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Passes if the raw text IS found escaped on the loaded page, fail otherwise.
|
||||
*
|
||||
|
@ -373,6 +493,19 @@ trait AssertLegacyTrait {
|
|||
$this->assertSession()->assertNoEscaped($raw);
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggers a pass if the Perl regex pattern is found in the raw content.
|
||||
*
|
||||
* @param string $pattern
|
||||
* Perl regex to look for including the regex delimiters.
|
||||
*
|
||||
* @deprecated Scheduled for removal in Drupal 9.0.0.
|
||||
* Use $this->assertSession()->responseMatches() instead.
|
||||
*/
|
||||
protected function assertPattern($pattern) {
|
||||
$this->assertSession()->responseMatches($pattern);
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts whether an expected cache tag was present in the last response.
|
||||
*
|
||||
|
|
|
@ -0,0 +1,173 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\Core\Assert;
|
||||
|
||||
use Behat\Mink\Element\DocumentElement;
|
||||
use Behat\Mink\Element\NodeElement;
|
||||
use Behat\Mink\Session;
|
||||
use Drupal\Component\Render\MarkupInterface;
|
||||
use Drupal\FunctionalTests\AssertLegacyTrait;
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
use Drupal\Tests\WebAssert;
|
||||
use PHPUnit_Framework_ExpectationFailedException;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \Drupal\FunctionalTests\AssertLegacyTrait
|
||||
* @group Assert
|
||||
*/
|
||||
class AssertLegacyTraitTest extends UnitTestCase {
|
||||
|
||||
use AssertLegacyTrait;
|
||||
|
||||
/**
|
||||
* The mocked Mink session object used for testing.
|
||||
*
|
||||
* @var \Behat\Mink\Session|\Prophecy\Prophecy\ObjectProphecy
|
||||
*/
|
||||
protected $session;
|
||||
|
||||
/**
|
||||
* The mocked page element used for testing.
|
||||
*
|
||||
* @var Behat\Mink\Element\DocumentElement|\Prophecy\Prophecy\ObjectProphecy
|
||||
*/
|
||||
protected $page;
|
||||
|
||||
/**
|
||||
* The mocked web assert class.
|
||||
*
|
||||
* @var \Drupal\Tests\WebAssert|\Prophecy\Prophecy\ObjectProphecy
|
||||
*/
|
||||
protected $webAssert;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
$this->page = $this->prophesize(DocumentElement::class);
|
||||
$this->session = $this->prophesize(Session::class);
|
||||
$this->session->getPage()->willReturn($this->page->reveal());
|
||||
$this->webAssert = $this->prophesize(WebAssert::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::assertUniqueText
|
||||
*/
|
||||
public function testAssertUniqueText() {
|
||||
$this->page->getText()->willReturn('foo bar bar');
|
||||
$this->assertUniqueText('foo');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::assertUniqueText
|
||||
*/
|
||||
public function testAssertUniqueTextFail() {
|
||||
$this->page->getText()->willReturn('foo bar bar');
|
||||
$this->setExpectedException(PHPUnit_Framework_ExpectationFailedException::class);
|
||||
$this->assertUniqueText('bar');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::assertUniqueText
|
||||
*/
|
||||
public function testAssertUniqueTextUnknown() {
|
||||
$this->page->getText()->willReturn('foo bar bar');
|
||||
$this->setExpectedException(PHPUnit_Framework_ExpectationFailedException::class);
|
||||
$this->assertUniqueText('alice');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::assertUniqueText
|
||||
*/
|
||||
public function testAssertUniqueTextMarkup() {
|
||||
$this->page->getText()->willReturn('foo bar bar');
|
||||
$markupObject = $this->prophesize(MarkupInterface::class);
|
||||
$markupObject->__toString()->willReturn('foo');
|
||||
$this->assertUniqueText($markupObject->reveal());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::assertNoUniqueText
|
||||
*/
|
||||
public function testAssertNoUniqueText() {
|
||||
$this->page->getText()->willReturn('foo bar bar');
|
||||
$this->assertNoUniqueText('bar');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::assertNoUniqueText
|
||||
*/
|
||||
public function testAssertNoUniqueTextFail() {
|
||||
$this->page->getText()->willReturn('foo bar bar');
|
||||
$this->setExpectedException(PHPUnit_Framework_ExpectationFailedException::class);
|
||||
$this->assertNoUniqueText('foo');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::assertNoUniqueText
|
||||
*/
|
||||
public function testAssertNoUniqueTextUnknown() {
|
||||
$this->page->getText()->willReturn('foo bar bar');
|
||||
$this->setExpectedException(PHPUnit_Framework_ExpectationFailedException::class);
|
||||
$this->assertNoUniqueText('alice');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::assertNoUniqueText
|
||||
*/
|
||||
public function testAssertNoUniqueTextMarkup() {
|
||||
$this->page->getText()->willReturn('foo bar bar');
|
||||
$markupObject = $this->prophesize(MarkupInterface::class);
|
||||
$markupObject->__toString()->willReturn('bar');
|
||||
$this->assertNoUniqueText($markupObject->reveal());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::assertOptionSelected
|
||||
*/
|
||||
public function testAssertOptionSelected() {
|
||||
$option_field = $this->prophesize(NodeElement::class);
|
||||
$option_field->hasAttribute('selected')->willReturn(TRUE);
|
||||
|
||||
$this->webAssert
|
||||
->optionExists('myselect', 'two')
|
||||
->willReturn($option_field->reveal());
|
||||
|
||||
$this->assertOptionSelected('myselect', 'two');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::assertOptionSelected
|
||||
*/
|
||||
public function testAssertOptionSelectedFail() {
|
||||
$option_field = $this->prophesize(NodeElement::class);
|
||||
$option_field->hasAttribute('selected')->willReturn(FALSE);
|
||||
|
||||
$this->webAssert
|
||||
->optionExists('myselect', 'two')
|
||||
->willReturn($option_field->reveal());
|
||||
|
||||
$this->setExpectedException(PHPUnit_Framework_ExpectationFailedException::class);
|
||||
$this->assertOptionSelected('myselect', 'two');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a mocked behat session object.
|
||||
*
|
||||
* @return \Behat\Mink\Session
|
||||
* The mocked session.
|
||||
*/
|
||||
protected function getSession() {
|
||||
return $this->session->reveal();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function assertSession($name = NULL) {
|
||||
return $this->webAssert->reveal();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue