You are here

class HtmlEscapedTextTest in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/tests/Drupal/Tests/Component/Render/HtmlEscapedTextTest.php \Drupal\Tests\Component\Render\HtmlEscapedTextTest

Tests the HtmlEscapedText class.

@coversDefaultClass \Drupal\Component\Render\HtmlEscapedText @group utility

Hierarchy

Expanded class hierarchy of HtmlEscapedTextTest

File

core/tests/Drupal/Tests/Component/Render/HtmlEscapedTextTest.php, line 20
Contains \Drupal\Tests\Component\Render\HtmlEscapedTextTest.

Namespace

Drupal\Tests\Component\Render
View source
class HtmlEscapedTextTest extends UnitTestCase {

  /**
   * @covers ::__toString
   * @covers ::jsonSerialize
   *
   * @dataProvider providerToString
   */
  public function testToString($text, $expected, $message) {
    $escapeable_string = new HtmlEscapedText($text);
    $this
      ->assertEquals($expected, (string) $escapeable_string, $message);
    $this
      ->assertEquals($expected, $escapeable_string
      ->jsonSerialize());
  }

  /**
   * Data provider for testToString().
   *
   * @see testToString()
   */
  function providerToString() {

    // Checks that invalid multi-byte sequences are escaped.
    $tests[] = array(
      "",
      'Foo�barbaz',
      'Escapes invalid sequence "Foo\\xC0barbaz"',
    );
    $tests[] = array(
      "",
      '�"',
      'Escapes invalid sequence "\\xc2\\""',
    );
    $tests[] = array(
      "Fooÿñ",
      "Fooÿñ",
      'Does not escape valid sequence "Fooÿñ"',
    );

    // Checks that special characters are escaped.
    $script_tag = $this
      ->prophesize(MarkupInterface::class);
    $script_tag
      ->__toString()
      ->willReturn('<script>');
    $script_tag = $script_tag
      ->reveal();
    $tests[] = array(
      $script_tag,
      '&lt;script&gt;',
      'Escapes &lt;script&gt; even inside an object that implements MarkupInterface.',
    );
    $tests[] = array(
      "<script>",
      '&lt;script&gt;',
      'Escapes &lt;script&gt;',
    );
    $tests[] = array(
      '<>&"\'',
      '&lt;&gt;&amp;&quot;&#039;',
      'Escapes reserved HTML characters.',
    );
    $specialchars = $this
      ->prophesize(MarkupInterface::class);
    $specialchars
      ->__toString()
      ->willReturn('<>&"\'');
    $specialchars = $specialchars
      ->reveal();
    $tests[] = array(
      $specialchars,
      '&lt;&gt;&amp;&quot;&#039;',
      'Escapes reserved HTML characters even inside an object that implements MarkupInterface.',
    );
    return $tests;
  }

  /**
   * @covers ::count
   */
  public function testCount() {
    $string = 'Can I please have a <em>kitten</em>';
    $escapeable_string = new HtmlEscapedText($string);
    $this
      ->assertEquals(strlen($string), $escapeable_string
      ->count());
  }

}

Members

Namesort descending Modifiers Type Description Overrides
HtmlEscapedTextTest::providerToString function Data provider for testToString().
HtmlEscapedTextTest::testCount public function @covers ::count
HtmlEscapedTextTest::testToString public function @covers ::__toString @covers ::jsonSerialize
UnitTestCase::$randomGenerator protected property The random generator.
UnitTestCase::$root protected property The app root.
UnitTestCase::assertArrayEquals protected function Asserts if two arrays are equal by sorting them first.
UnitTestCase::getBlockMockWithMachineName protected function Mocks a block with a block plugin.
UnitTestCase::getClassResolverStub protected function Returns a stub class resolver.
UnitTestCase::getConfigFactoryStub public function Returns a stub config factory that behaves according to the passed in array.
UnitTestCase::getConfigStorageStub public function Returns a stub config storage that returns the supplied configuration.
UnitTestCase::getContainerWithCacheTagsInvalidator protected function Sets up a container with a cache tags invalidator.
UnitTestCase::getRandomGenerator protected function Gets the random generator for the utility methods.
UnitTestCase::getStringTranslationStub public function Returns a stub translation manager that just returns the passed string.
UnitTestCase::randomMachineName public function Generates a unique random string containing letters and numbers.
UnitTestCase::setUp protected function 259