Commit 3e43de76 authored by alexpott's avatar alexpott

Issue #2331685 by pfrenssen, jibran, larowlan, cilefen: PHPUnit deprecated...

Issue #2331685 by pfrenssen, jibran, larowlan, cilefen: PHPUnit deprecated assertTag(), assertNotTag() and assertSelectEquals()
parent 8de42198
...@@ -331,15 +331,86 @@ public function testPrint() { ...@@ -331,15 +331,86 @@ public function testPrint() {
$content = $this->randomMachineName(); $content = $this->randomMachineName();
$html = '<div' . (string) $attribute . '>' . $content . '</div>'; $html = '<div' . (string) $attribute . '>' . $content . '</div>';
$this->assertSelectEquals('div.example-class', $content, 1, $html); $this->assertClass('example-class', $html);
$this->assertSelectEquals('div.example-class2', $content, 0, $html); $this->assertNoClass('example-class2', $html);
$this->assertSelectEquals('div#example-id', $content, 1, $html); $this->assertID('example-id', $html);
$this->assertSelectEquals('div#example-id2', $content, 0, $html); $this->assertNoID('example-id2', $html);
$this->assertTrue(strpos($html, 'enabled') !== FALSE); $this->assertTrue(strpos($html, 'enabled') !== FALSE);
} }
/**
* Checks that the given CSS class is present in the given HTML snippet.
*
* @param string $class
* The CSS class to check.
* @param string $html
* The HTML snippet to check.
*/
protected function assertClass($class, $html) {
$xpath = "//*[@class='$class']";
self::assertTrue((bool) $this->getXPathResultCount($xpath, $html));
}
/**
* Checks that the given CSS class is not present in the given HTML snippet.
*
* @param string $class
* The CSS class to check.
* @param string $html
* The HTML snippet to check.
*/
protected function assertNoClass($class, $html) {
$xpath = "//*[@class='$class']";
self::assertFalse((bool) $this->getXPathResultCount($xpath, $html));
}
/**
* Checks that the given CSS ID is present in the given HTML snippet.
*
* @param string $id
* The CSS ID to check.
* @param string $html
* The HTML snippet to check.
*/
protected function assertID($id, $html) {
$xpath = "//*[@id='$id']";
self::assertTrue((bool) $this->getXPathResultCount($xpath, $html));
}
/**
* Checks that the given CSS ID is not present in the given HTML snippet.
*
* @param string $id
* The CSS ID to check.
* @param string $html
* The HTML snippet to check.
*/
protected function assertNoID($id, $html) {
$xpath = "//*[@id='$id']";
self::assertFalse((bool) $this->getXPathResultCount($xpath, $html));
}
/**
* Counts the occurrences of the given XPath query in a given HTML snippet.
*
* @param string $query
* The XPath query to execute.
* @param string $html
* The HTML snippet to check.
*
* @return int
* The number of results that are found.
*/
protected function getXPathResultCount($query, $html) {
$document = new \DOMDocument;
$document->loadHTML($html);
$xpath = new \DOMXPath($document);
return $xpath->query($query)->length;
}
/** /**
* Tests the storage method. * Tests the storage method.
*/ */
......
...@@ -109,8 +109,7 @@ public function testGenerateHrefs($route_name, array $parameters, $absolute, $ex ...@@ -109,8 +109,7 @@ public function testGenerateHrefs($route_name, array $parameters, $absolute, $ex
$url = new Url($route_name, $parameters, array('absolute' => $absolute)); $url = new Url($route_name, $parameters, array('absolute' => $absolute));
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate('Test', $url); $result = $this->linkGenerator->generate('Test', $url);
$this->assertTag(array( $this->assertLink(array(
'tag' => 'a',
'attributes' => array('href' => $expected_url), 'attributes' => array('href' => $expected_url),
), $result); ), $result);
} }
...@@ -134,8 +133,7 @@ public function testGenerate() { ...@@ -134,8 +133,7 @@ public function testGenerate() {
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate('Test', $url); $result = $this->linkGenerator->generate('Test', $url);
$this->assertTag(array( $this->assertLink(array(
'tag' => 'a',
'attributes' => array( 'attributes' => array(
'href' => '/test-route-1#the-fragment', 'href' => '/test-route-1#the-fragment',
), ),
...@@ -172,8 +170,7 @@ public function testGenerateExternal() { ...@@ -172,8 +170,7 @@ public function testGenerateExternal() {
$url->setOption('set_active_class', TRUE); $url->setOption('set_active_class', TRUE);
$result = $this->linkGenerator->generate('Drupal', $url); $result = $this->linkGenerator->generate('Drupal', $url);
$this->assertTag(array( $this->assertLink(array(
'tag' => 'a',
'attributes' => array( 'attributes' => array(
'href' => 'http://drupal.org', 'href' => 'http://drupal.org',
), ),
...@@ -200,8 +197,7 @@ public function testGenerateAttributes() { ...@@ -200,8 +197,7 @@ public function testGenerateAttributes() {
)); ));
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate('Test', $url); $result = $this->linkGenerator->generate('Test', $url);
$this->assertTag(array( $this->assertLink(array(
'tag' => 'a',
'attributes' => array( 'attributes' => array(
'href' => '/test-route-1', 'href' => '/test-route-1',
'title' => 'Tooltip', 'title' => 'Tooltip',
...@@ -227,8 +223,7 @@ public function testGenerateQuery() { ...@@ -227,8 +223,7 @@ public function testGenerateQuery() {
)); ));
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate('Test', $url); $result = $this->linkGenerator->generate('Test', $url);
$this->assertTag(array( $this->assertLink(array(
'tag' => 'a',
'attributes' => array( 'attributes' => array(
'href' => '/test-route-1?test=value', 'href' => '/test-route-1?test=value',
), ),
...@@ -251,8 +246,7 @@ public function testGenerateParametersAsQuery() { ...@@ -251,8 +246,7 @@ public function testGenerateParametersAsQuery() {
$url = new Url('test_route_1', array('test' => 'value'), array()); $url = new Url('test_route_1', array('test' => 'value'), array());
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate('Test', $url); $result = $this->linkGenerator->generate('Test', $url);
$this->assertTag(array( $this->assertLink(array(
'tag' => 'a',
'attributes' => array( 'attributes' => array(
'href' => '/test-route-1?test=value', 'href' => '/test-route-1?test=value',
), ),
...@@ -277,8 +271,7 @@ public function testGenerateOptions() { ...@@ -277,8 +271,7 @@ public function testGenerateOptions() {
)); ));
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate('Test', $url); $result = $this->linkGenerator->generate('Test', $url);
$this->assertTag(array( $this->assertLink(array(
'tag' => 'a',
'attributes' => array( 'attributes' => array(
'href' => '/test-route-1?test=value', 'href' => '/test-route-1?test=value',
), ),
...@@ -302,13 +295,7 @@ public function testGenerateXss() { ...@@ -302,13 +295,7 @@ public function testGenerateXss() {
$url = new Url('test_route_4'); $url = new Url('test_route_4');
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate("<script>alert('XSS!')</script>", $url); $result = $this->linkGenerator->generate("<script>alert('XSS!')</script>", $url);
$this->assertNotTag(array( $this->assertNoXPathResults('//a[@href="/test-route-4"]/script', $result);
'tag' => 'a',
'attributes' => array('href' => '/test-route-4'),
'child' => array(
'tag' => 'script',
),
), $result);
} }
/** /**
...@@ -336,8 +323,7 @@ public function testGenerateWithHtml() { ...@@ -336,8 +323,7 @@ public function testGenerateWithHtml() {
)); ));
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate('Test', $url); $result = $this->linkGenerator->generate('Test', $url);
$this->assertTag(array( $this->assertLink(array(
'tag' => 'a',
'attributes' => array( 'attributes' => array(
'href' => '/test-route-5', 'href' => '/test-route-5',
'title' => 'HTML Tooltip', 'title' => 'HTML Tooltip',
...@@ -348,8 +334,7 @@ public function testGenerateWithHtml() { ...@@ -348,8 +334,7 @@ public function testGenerateWithHtml() {
$url = new Url('test_route_5', array(), array('html' => TRUE)); $url = new Url('test_route_5', array(), array('html' => TRUE));
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate('<em>HTML output</em>', $url); $result = $this->linkGenerator->generate('<em>HTML output</em>', $url);
$this->assertTag(array( $this->assertLink(array(
'tag' => 'a',
'attributes' => array('href' => '/test-route-5'), 'attributes' => array('href' => '/test-route-5'),
'child' => array( 'child' => array(
'tag' => 'em', 'tag' => 'em',
...@@ -390,8 +375,7 @@ public function testGenerateActive() { ...@@ -390,8 +375,7 @@ public function testGenerateActive() {
$url = new Url('test_route_1', array(), array('set_active_class' => TRUE)); $url = new Url('test_route_1', array(), array('set_active_class' => TRUE));
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate('Test', $url); $result = $this->linkGenerator->generate('Test', $url);
$this->assertTag(array( $this->assertLink(array(
'tag' => 'a',
'attributes' => array('data-drupal-link-system-path' => 'test-route-1'), 'attributes' => array('data-drupal-link-system-path' => 'test-route-1'),
), $result); ), $result);
...@@ -399,10 +383,7 @@ public function testGenerateActive() { ...@@ -399,10 +383,7 @@ public function testGenerateActive() {
$url = new Url('test_route_1', array(), array('set_active_class' => FALSE)); $url = new Url('test_route_1', array(), array('set_active_class' => FALSE));
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate('Test', $url); $result = $this->linkGenerator->generate('Test', $url);
$this->assertNotTag(array( $this->assertNoXPathResults('//a[@data-drupal-link-system-path="test-route-1"]', $result);
'tag' => 'a',
'attributes' => array('data-drupal-link-system-path' => 'test-route-1'),
), $result);
// Render a link with an associated language. // Render a link with an associated language.
$url = new Url('test_route_1', array(), array( $url = new Url('test_route_1', array(), array(
...@@ -411,8 +392,7 @@ public function testGenerateActive() { ...@@ -411,8 +392,7 @@ public function testGenerateActive() {
)); ));
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate('Test', $url); $result = $this->linkGenerator->generate('Test', $url);
$this->assertTag(array( $this->assertLink(array(
'tag' => 'a',
'attributes' => array( 'attributes' => array(
'data-drupal-link-system-path' => 'test-route-1', 'data-drupal-link-system-path' => 'test-route-1',
'hreflang' => 'de', 'hreflang' => 'de',
...@@ -426,11 +406,10 @@ public function testGenerateActive() { ...@@ -426,11 +406,10 @@ public function testGenerateActive() {
)); ));
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate('Test', $url); $result = $this->linkGenerator->generate('Test', $url);
$this->assertTag(array( $this->assertLink(array(
'tag' => 'a',
'attributes' => array( 'attributes' => array(
'data-drupal-link-system-path' => 'test-route-3', 'data-drupal-link-system-path' => 'test-route-3',
'data-drupal-link-query' => 'regexp:/.*value.*example_1.*/', 'data-drupal-link-query' => '{"value":"example_1"}',
), ),
), $result); ), $result);
...@@ -441,15 +420,72 @@ public function testGenerateActive() { ...@@ -441,15 +420,72 @@ public function testGenerateActive() {
)); ));
$url->setUrlGenerator($this->urlGenerator); $url->setUrlGenerator($this->urlGenerator);
$result = $this->linkGenerator->generate('Test', $url); $result = $this->linkGenerator->generate('Test', $url);
$this->assertTag(array( $this->assertLink(array(
'tag' => 'a',
'attributes' => array( 'attributes' => array(
'data-drupal-link-system-path' => 'test-route-4/1', 'data-drupal-link-system-path' => 'test-route-4/1',
'data-drupal-link-query' => 'regexp:/.*value.*example_1.*/', 'data-drupal-link-query' => '{"value":"example_1"}',
), ),
), $result); ), $result);
} }
/**
* Checks that a link with certain properties exists in a given HTML snippet.
*
* @param array $properties
* An associative array of link properties, with the following keys:
* - attributes: optional array of HTML attributes that should be present.
* - content: optional link content.
* @param string $html
* The HTML to check.
* @param int $count
* How many times the link should be present in the HTML. Defaults to 1.
*/
public static function assertLink(array $properties, $html, $count = 1) {
// Provide default values.
$properties += array('attributes' => array());
// Create an XPath query that selects a link element.
$query = '//a';
// Append XPath predicates for the attributes and content text.
$predicates = array();
foreach ($properties['attributes'] as $attribute => $value) {
$predicates[] = "@$attribute='$value'";
}
if (!empty($properties['content'])) {
$predicates[] = "contains(.,'{$properties['content']}')";
}
if (!empty($predicates)) {
$query .= '[' . implode(' and ', $predicates) . ']';
}
// Execute the query.
$document = new \DOMDocument;
$document->loadHTML($html);
$xpath = new \DOMXPath($document);
self::assertEquals($count, $xpath->query($query)->length);
}
/**
* Checks that the given XPath query has no results in a given HTML snippet.
*
* @param string $query
* The XPath query to execute.
* @param string $html
* The HTML snippet to check.
*
* @return int
* The number of results that are found.
*/
protected function assertNoXPathResults($query, $html) {
$document = new \DOMDocument;
$document->loadHTML($html);
$xpath = new \DOMXPath($document);
self::assertFalse((bool) $xpath->query($query)->length);
}
} }
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment