X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/c429cf78187e80deb63982a282a1c6889f30291a..refs/pull/3365/head:/tests/TestResponse.php diff --git a/tests/TestResponse.php b/tests/TestResponse.php index 39a9d796b..4e53aa020 100644 --- a/tests/TestResponse.php +++ b/tests/TestResponse.php @@ -2,7 +2,7 @@ namespace Tests; -use Illuminate\Foundation\Testing\TestResponse as BaseTestResponse; +use Illuminate\Testing\TestResponse as BaseTestResponse; use PHPUnit\Framework\Assert as PHPUnit; use Symfony\Component\DomCrawler\Crawler; @@ -26,6 +26,14 @@ class TestResponse extends BaseTestResponse return $this->crawlerInstance; } + /** + * Get the HTML of the first element at the given selector. + */ + public function getElementHtml(string $selector): string + { + return $this->crawler()->filter($selector)->first()->outerHtml(); + } + /** * Assert the response contains the specified element. * @@ -45,6 +53,26 @@ class TestResponse extends BaseTestResponse return $this; } + /** + * Assert the response contains the given count of elements + * that match the given css selector. + * + * @return $this + */ + public function assertElementCount(string $selector, int $count) + { + $elements = $this->crawler()->filter($selector); + PHPUnit::assertTrue( + $elements->count() === $count, + 'Unable to ' . $count . ' element(s) matching the selector: ' . PHP_EOL . PHP_EOL . + "[{$selector}]" . PHP_EOL . PHP_EOL . + 'found ' . $elements->count() . ' within' . PHP_EOL . PHP_EOL . + "[{$this->getContent()}]." + ); + + return $this; + } + /** * Assert the response does not contain the specified element. *