WebAssertArgumentsTest.php

Namespace

Drupal\Tests\Core\Assert

File

core/tests/Drupal/Tests/Core/Assert/WebAssertArgumentsTest.php

View source
<?php

namespace Drupal\Tests\Core\Assert;

use Behat\Mink\Element\DocumentElement;
use Behat\Mink\Element\Element;
use Behat\Mink\Element\NodeElement;
use Behat\Mink\Session;
use Drupal\Tests\UnitTestCase;
use Drupal\Tests\WebAssert;
use Prophecy\Argument;

/**
 * Tests that calling WebAssert methods with extra arguments leads to errors.
 *
 * NOTE: Do not drop this test class in Drupal 10, convert the tests to check
 * that \InvalidArgumentException are thrown instead of deprecations.
 *
 * @coversDefaultClass \Drupal\Tests\WebAssert
 * @group Assert
 * @group legacy
 */
class WebAssertArgumentsTest extends UnitTestCase {
    
    /**
     * 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
     */
    protected $webAssert;
    
    /**
     * {@inheritdoc}
     */
    public function setUp() : void {
        parent::setUp();
        $this->page = $this->prophesize(DocumentElement::class);
        $this->session = $this->prophesize(Session::class);
        $this->session
            ->getPage()
            ->willReturn($this->page
            ->reveal());
        $this->webAssert = new WebAssert($this->getSession());
    }
    
    /**
     * @covers ::buttonExists
     */
    public function testButtonExists() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::buttonExists with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->findButton(Argument::any())
            ->willReturn('bar');
        $this->webAssert
            ->buttonExists('foo', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::buttonNotExists
     */
    public function testButtonNotExists() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::buttonNotExists with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->findButton(Argument::any())
            ->willReturn(NULL);
        $this->webAssert
            ->buttonNotExists('qux', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::selectExists
     */
    public function testSelectExists() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::selectExists with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn('bar');
        $this->webAssert
            ->selectExists('foo', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::optionExists
     */
    public function testOptionExists() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::optionExists with more than three arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $select = $this->prophesize(Element::class);
        $select->find(Argument::any(), Argument::any())
            ->willReturn('bar');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn($select->reveal());
        $this->webAssert
            ->optionExists('foo', 'bar', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::optionNotExists
     */
    public function testOptionNotExists() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::optionNotExists with more than three arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $select = $this->prophesize(Element::class);
        $select->find(Argument::any(), Argument::any())
            ->willReturn(NULL);
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn($select->reveal());
        $this->webAssert
            ->optionNotExists('foo', 'qux', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::titleEquals
     */
    public function testTitleEquals() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::titleEquals with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $title = $this->prophesize(Element::class);
        $title->getText()
            ->willReturn('foo');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn($title->reveal());
        $this->webAssert
            ->titleEquals('foo', 'Extra argument');
    }
    
    /**
     * @covers ::assertNoEscaped
     */
    public function testAssertNoEscaped() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::assertNoEscaped with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->getContent()
            ->willReturn('foo bar bar');
        $this->webAssert
            ->assertNoEscaped('qux', 'Extra argument');
    }
    
    /**
     * @covers ::assertEscaped
     */
    public function testAssertEscaped() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::assertEscaped with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->getContent()
            ->willReturn('foo bar bar');
        $this->webAssert
            ->assertEscaped('foo', 'Extra argument');
    }
    
    /**
     * @covers ::responseContains
     */
    public function testResponseContains() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::responseContains with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->getContent()
            ->willReturn('foo bar bar');
        $this->webAssert
            ->responseContains('foo', 'Extra argument');
    }
    
    /**
     * @covers ::responseNotContains
     */
    public function testResponseNotContains() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::responseNotContains with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->getContent()
            ->willReturn('foo bar bar');
        $this->webAssert
            ->responseNotContains('qux', 'Extra argument');
    }
    
    /**
     * @covers ::fieldDisabled
     */
    public function testFieldDisabled() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::fieldDisabled with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $field = $this->prophesize(NodeElement::class);
        $field->hasAttribute('disabled')
            ->willReturn(TRUE);
        $this->page
            ->findField(Argument::any())
            ->willReturn($field->reveal());
        $this->webAssert
            ->fieldDisabled('foo', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::fieldEnabled
     */
    public function testFieldEnabled() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::fieldEnabled with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $field = $this->prophesize(NodeElement::class);
        $field->hasAttribute('disabled')
            ->willReturn(FALSE);
        $this->page
            ->findField(Argument::any())
            ->willReturn($field->reveal());
        $this->webAssert
            ->fieldEnabled('foo', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::hiddenFieldExists
     */
    public function testHiddenFieldExists() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::hiddenFieldExists with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn('bar');
        $this->webAssert
            ->hiddenFieldExists('foo', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::hiddenFieldNotExists
     */
    public function testHiddenFieldNotExists() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::hiddenFieldNotExists with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn(NULL);
        $this->webAssert
            ->hiddenFieldNotExists('qux', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::hiddenFieldValueEquals
     */
    public function testHiddenFieldValueEquals() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::hiddenFieldValueEquals with more than three arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $field = $this->prophesize(NodeElement::class);
        $field->getValue()
            ->willReturn('bar');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn($field->reveal());
        $this->webAssert
            ->hiddenFieldValueEquals('foo', 'bar', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::hiddenFieldValueNotEquals
     */
    public function testHiddenFieldValueNotEquals() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::hiddenFieldValueNotEquals with more than three arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $field = $this->prophesize(NodeElement::class);
        $field->getValue()
            ->willReturn('bar');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn($field->reveal());
        $this->webAssert
            ->hiddenFieldValueNotEquals('foo', 'qux', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::pageTextContainsOnce
     */
    public function testPageTextContainsOnce() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::pageTextContainsOnce with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->getText()
            ->willReturn('foo bar bar');
        $this->webAssert
            ->pageTextContainsOnce('foo', 'Extra argument');
    }
    
    /**
     * @covers ::addressEquals
     */
    public function testAddressEquals() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::addressEquals with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->session
            ->getCurrentUrl()
            ->willReturn('foo');
        $this->webAssert
            ->addressEquals('foo', 'Extra argument');
    }
    
    /**
     * @covers ::addressNotEquals
     */
    public function testAddressNotEquals() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::addressNotEquals with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->session
            ->getCurrentUrl()
            ->willReturn('foo');
        $this->webAssert
            ->addressNotEquals('qux', 'Extra argument');
    }
    
    /**
     * @covers ::addressMatches
     */
    public function testAddressMatches() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::addressMatches with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->session
            ->getCurrentUrl()
            ->willReturn('foo');
        $this->webAssert
            ->addressMatches('/foo/', 'Extra argument');
    }
    
    /**
     * @covers ::cookieEquals
     */
    public function testCookieEquals() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::cookieEquals with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->session
            ->getCookie('foo')
            ->willReturn('bar');
        $this->webAssert
            ->cookieEquals('foo', 'bar', 'Extra argument');
    }
    
    /**
     * @covers ::cookieExists
     */
    public function testCookieExists() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::cookieExists with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->session
            ->getCookie('foo')
            ->willReturn('bar');
        $this->webAssert
            ->cookieExists('foo', 'Extra argument');
    }
    
    /**
     * @covers ::statusCodeEquals
     */
    public function testStatusCodeEquals() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::statusCodeEquals with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->session
            ->getStatusCode()
            ->willReturn(200);
        $this->webAssert
            ->statusCodeEquals(200, 'Extra argument');
    }
    
    /**
     * @covers ::statusCodeNotEquals
     */
    public function testStatusCodeNotEquals() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::statusCodeNotEquals with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->session
            ->getStatusCode()
            ->willReturn(200);
        $this->webAssert
            ->statusCodeNotEquals(403, 'Extra argument');
    }
    
    /**
     * @covers ::responseHeaderEquals
     */
    public function testResponseHeaderEquals() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::responseHeaderEquals with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->session
            ->getResponseHeader('foo')
            ->willReturn('bar');
        $this->webAssert
            ->responseHeaderEquals('foo', 'bar', 'Extra argument');
    }
    
    /**
     * @covers ::responseHeaderNotEquals
     */
    public function testResponseHeaderNotEquals() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::responseHeaderNotEquals with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->session
            ->getResponseHeader('foo')
            ->willReturn('bar');
        $this->webAssert
            ->responseHeaderNotEquals('foo', 'qux', 'Extra argument');
    }
    
    /**
     * @covers ::responseHeaderContains
     */
    public function testResponseHeaderContains() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::responseHeaderContains with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->session
            ->getResponseHeader('foo')
            ->willReturn('bar');
        $this->webAssert
            ->responseHeaderContains('foo', 'ar', 'Extra argument');
    }
    
    /**
     * @covers ::responseHeaderNotContains
     */
    public function testResponseHeaderNotContains() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::responseHeaderNotContains with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->session
            ->getResponseHeader('foo')
            ->willReturn('bar');
        $this->webAssert
            ->responseHeaderNotContains('foo', 'qu', 'Extra argument');
    }
    
    /**
     * @covers ::responseHeaderMatches
     */
    public function testResponseHeaderMatches() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::responseHeaderMatches with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->session
            ->getResponseHeader('foo')
            ->willReturn('bar');
        $this->webAssert
            ->responseHeaderMatches('foo', '/bar/', 'Extra argument');
    }
    
    /**
     * @covers ::responseHeaderNotMatches
     */
    public function testResponseHeaderNotMatches() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::responseHeaderNotMatches with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->session
            ->getResponseHeader('foo')
            ->willReturn('bar');
        $this->webAssert
            ->responseHeaderNotMatches('foo', '/qux/', 'Extra argument');
    }
    
    /**
     * @covers ::pageTextContains
     */
    public function testPageTextContains() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::pageTextContains with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->getText()
            ->willReturn('foo bar bar');
        $this->webAssert
            ->pageTextContains('foo', 'Extra argument');
    }
    
    /**
     * @covers ::pageTextNotContains
     */
    public function testPageTextNotContains() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::pageTextNotContains with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->getText()
            ->willReturn('foo bar bar');
        $this->webAssert
            ->pageTextNotContains('qux', 'Extra argument');
    }
    
    /**
     * @covers ::pageTextMatches
     */
    public function testPageTextMatches() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::pageTextMatches with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->getText()
            ->willReturn('foo bar bar');
        $this->webAssert
            ->pageTextMatches('/foo/', 'Extra argument');
    }
    
    /**
     * @covers ::pageTextNotMatches
     */
    public function testPageTextNotMatches() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::pageTextNotMatches with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->getText()
            ->willReturn('foo bar bar');
        $this->webAssert
            ->pageTextNotMatches('/qux/', 'Extra argument');
    }
    
    /**
     * @covers ::responseMatches
     */
    public function testResponseMatches() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::responseMatches with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->getContent()
            ->willReturn('foo bar bar');
        $this->webAssert
            ->responseMatches('/foo/', 'Extra argument');
    }
    
    /**
     * @covers ::responseNotMatches
     */
    public function testResponseNotMatches() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::responseNotMatches with more than one argument is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->getContent()
            ->willReturn('foo bar bar');
        $this->webAssert
            ->responseNotMatches('/qux/', 'Extra argument');
    }
    
    /**
     * @covers ::elementsCount
     */
    public function testElementsCount() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::elementsCount with more than four arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->findAll(Argument::any(), Argument::any())
            ->willReturn([
            'bar',
        ]);
        $this->webAssert
            ->elementsCount('xpath', '//foo', 1, NULL, 'Extra argument');
    }
    
    /**
     * @covers ::elementExists
     */
    public function testElementExists() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::elementExists with more than three arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn('bar');
        $this->webAssert
            ->elementExists('xpath', '//foo', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::elementNotExists
     */
    public function testElementNotExists() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::elementNotExists with more than three arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn(NULL);
        $this->webAssert
            ->elementNotExists('xpath', '//foo', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::elementTextContains
     */
    public function testElementTextContains() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::elementTextContains with more than three arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $element = $this->prophesize(NodeElement::class);
        $element->getText()
            ->willReturn('bar');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn($element->reveal());
        $this->webAssert
            ->elementTextContains('xpath', '//foo', 'bar', 'Extra argument');
    }
    
    /**
     * @covers ::elementTextNotContains
     */
    public function testElementTextNotContains() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::elementTextNotContains with more than three arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $element = $this->prophesize(NodeElement::class);
        $element->getText()
            ->willReturn('bar');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn($element->reveal());
        $this->webAssert
            ->elementTextNotContains('xpath', '//foo', 'qux', 'Extra argument');
    }
    
    /**
     * @covers ::elementContains
     */
    public function testElementContains() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::elementContains with more than three arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $element = $this->prophesize(NodeElement::class);
        $element->getHtml()
            ->willReturn('bar');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn($element->reveal());
        $this->webAssert
            ->elementContains('xpath', '//foo', 'bar', 'Extra argument');
    }
    
    /**
     * @covers ::elementNotContains
     */
    public function testElementNotContains() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::elementNotContains with more than three arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $element = $this->prophesize(NodeElement::class);
        $element->getHtml()
            ->willReturn('bar');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn($element->reveal());
        $this->webAssert
            ->elementNotContains('xpath', '//foo', 'qux', 'Extra argument');
    }
    
    /**
     * @covers ::elementAttributeExists
     */
    public function testElementAttributeExists() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::elementAttributeExists with more than three arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $element = $this->prophesize(NodeElement::class);
        $element->hasAttribute('bar')
            ->willReturn(TRUE);
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn($element->reveal());
        $this->webAssert
            ->elementAttributeExists('xpath', '//foo', 'bar', 'Extra argument');
    }
    
    /**
     * @covers ::elementAttributeContains
     */
    public function testElementAttributeContains() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::elementAttributeContains with more than four arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $element = $this->prophesize(NodeElement::class);
        $element->hasAttribute('bar')
            ->willReturn(TRUE);
        $element->getAttribute('bar')
            ->willReturn('baz');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn($element->reveal());
        $this->webAssert
            ->elementAttributeContains('xpath', '//foo', 'bar', 'baz', 'Extra argument');
    }
    
    /**
     * @covers ::elementAttributeNotContains
     */
    public function testElementAttributeNotContains() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::elementAttributeNotContains with more than four arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $element = $this->prophesize(NodeElement::class);
        $element->hasAttribute('bar')
            ->willReturn(TRUE);
        $element->getAttribute('bar')
            ->willReturn('baz');
        $this->page
            ->find(Argument::any(), Argument::any())
            ->willReturn($element->reveal());
        $this->webAssert
            ->elementAttributeNotContains('xpath', '//foo', 'bar', 'qux', 'Extra argument');
    }
    
    /**
     * @covers ::fieldExists
     */
    public function testFieldExists() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::fieldExists with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->findField(Argument::any())
            ->willReturn('bar');
        $this->webAssert
            ->fieldExists('foo', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::fieldNotExists
     */
    public function testFieldNotExists() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::fieldNotExists with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $this->page
            ->findField(Argument::any())
            ->willReturn();
        $this->webAssert
            ->fieldNotExists('qux', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::fieldValueEquals
     */
    public function testFieldValueEquals() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::fieldValueEquals with more than three arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $field = $this->prophesize(NodeElement::class);
        $field->getValue()
            ->willReturn('bar');
        $this->page
            ->findField(Argument::any())
            ->willReturn($field->reveal());
        $this->webAssert
            ->fieldValueEquals('foo', 'bar', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::fieldValueNotEquals
     */
    public function testFieldValueNotEquals() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::fieldValueNotEquals with more than three arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $field = $this->prophesize(NodeElement::class);
        $field->getValue()
            ->willReturn('bar');
        $this->page
            ->findField(Argument::any())
            ->willReturn($field->reveal());
        $this->webAssert
            ->fieldValueNotEquals('foo', 'qux', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::checkboxChecked
     */
    public function testCheckboxChecked() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::checkboxChecked with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $field = $this->prophesize(NodeElement::class);
        $field->isChecked()
            ->willReturn(TRUE);
        $this->page
            ->findField(Argument::any())
            ->willReturn($field->reveal());
        $this->webAssert
            ->checkboxChecked('foo', NULL, 'Extra argument');
    }
    
    /**
     * @covers ::checkboxNotChecked
     */
    public function testCheckboxNotChecked() : void {
        $this->expectDeprecation('Calling Drupal\\Tests\\WebAssert::checkboxNotChecked with more than two arguments is deprecated in drupal:9.1.0 and will throw an \\InvalidArgumentException in drupal:10.0.0. See https://www.drupal.org/node/3162537');
        $field = $this->prophesize(NodeElement::class);
        $field->isChecked()
            ->willReturn(FALSE);
        $this->page
            ->findField(Argument::any())
            ->willReturn($field->reveal());
        $this->webAssert
            ->checkboxNotChecked('qux', NULL, 'Extra argument');
    }
    
    /**
     * Returns a mocked behat session object.
     *
     * @return \Behat\Mink\Session
     *   The mocked session.
     */
    protected function getSession() : Session {
        return $this->session
            ->reveal();
    }

}

Classes

Title Deprecated Summary
WebAssertArgumentsTest Tests that calling WebAssert methods with extra arguments leads to errors.

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