class AssertLegacyTraitTest

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Core/Assert/AssertLegacyTraitTest.php \Drupal\Tests\Core\Assert\AssertLegacyTraitTest

@coversDefaultClass \Drupal\FunctionalTests\AssertLegacyTrait
@group Assert @group legacy

Hierarchy

Expanded class hierarchy of AssertLegacyTraitTest

File

core/tests/Drupal/Tests/Core/Assert/AssertLegacyTraitTest.php, line 19

Namespace

Drupal\Tests\Core\Assert
View source
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->expectException(ExpectationFailedException::class);
    $this->assertUniqueText('bar');
  }
  
  /**
   * @covers ::assertUniqueText
   */
  public function testAssertUniqueTextUnknown() {
    $this->page
      ->getText()
      ->willReturn('foo bar bar');
    $this->expectException(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->expectException(ExpectationFailedException::class);
    $this->assertNoUniqueText('foo');
  }
  
  /**
   * @covers ::assertNoUniqueText
   */
  public function testAssertNoUniqueTextUnknown() {
    $this->page
      ->getText()
      ->willReturn('foo bar bar');
    $this->expectException(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->expectException(ExpectationFailedException::class);
    $this->assertOptionSelected('myselect', 'two');
  }
  
  /**
   * @covers ::assertNoPattern
   * @expectedDeprecation AssertLegacyTrait::assertNoPattern() is deprecated in drupal:8.4.0 and is removed from drupal:10.0.0. Use $this->assertSession()->responseNotMatches() instead. See https://www.drupal.org/node/3129738
   */
  public function testAssertNoPattern() {
    $this->webAssert
      ->responseNotMatches('/.*foo$/')
      ->shouldBeCalled();
    $this->assertNoPattern('/.*foo$/');
  }
  
  /**
   * @covers ::assertNoCacheTag
   * @expectedDeprecation AssertLegacyTrait::assertNoCacheTag() is deprecated in drupal:8.4.0 and is removed from drupal:10.0.0. Use $this->assertSession()->responseHeaderNotContains() instead. See https://www.drupal.org/node/3129738
   */
  public function testAssertNoCacheTag() {
    $this->webAssert
      ->responseHeaderNotContains('X-Drupal-Cache-Tags', 'some-cache-tag')
      ->shouldBeCalled();
    $this->assertNoCacheTag('some-cache-tag');
  }
  
  /**
   * 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();
  }

}

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