From f26758e1c02c94f10ab1abfb46b35b3af611214f Mon Sep 17 00:00:00 2001 From: Matthieu Napoli Date: Thu, 24 Sep 2020 10:24:27 +0200 Subject: [PATCH] [DomCrawler] Add `assertCheckboxChecked()` --- .../Bundle/FrameworkBundle/CHANGELOG.md | 1 + .../Test/DomCrawlerAssertionsTrait.php | 18 ++++++++++++++++++ .../Tests/Test/WebTestCaseTest.php | 16 ++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md index 0b13deed1e601..90671527f69c4 100644 --- a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md +++ b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md @@ -11,6 +11,7 @@ CHANGELOG * Added `TemplateAwareDataCollectorInterface` and `AbstractDataCollector` to simplify custom data collector creation and leverage autoconfiguration * Add `cache.adapter.redis_tag_aware` tag to use `RedisCacheAwareAdapter` * added `framework.http_client.retry_failing` configuration tree + * added `assertCheckboxChecked()` and `assertCheckboxNotChecked()` in `WebTestCase` 5.1.0 ----- diff --git a/src/Symfony/Bundle/FrameworkBundle/Test/DomCrawlerAssertionsTrait.php b/src/Symfony/Bundle/FrameworkBundle/Test/DomCrawlerAssertionsTrait.php index 465c265f6921d..659b7864e19fc 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Test/DomCrawlerAssertionsTrait.php +++ b/src/Symfony/Bundle/FrameworkBundle/Test/DomCrawlerAssertionsTrait.php @@ -15,6 +15,8 @@ use PHPUnit\Framework\Constraint\LogicalNot; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\DomCrawler\Test\Constraint as DomCrawlerConstraint; +use Symfony\Component\DomCrawler\Test\Constraint\CrawlerSelectorAttributeValueSame; +use Symfony\Component\DomCrawler\Test\Constraint\CrawlerSelectorExists; /** * Ideas borrowed from Laravel Dusk's assertions. @@ -83,6 +85,22 @@ public static function assertInputValueNotSame(string $fieldName, string $expect ), $message); } + public static function assertCheckboxChecked(string $fieldName, string $message = ''): void + { + self::assertThat(self::getCrawler(), LogicalAnd::fromConstraints( + new CrawlerSelectorExists("input[name=\"$fieldName\"]"), + new CrawlerSelectorAttributeValueSame("input[name=\"$fieldName\"]", 'checked', 'checked') + ), $message); + } + + public static function assertCheckboxNotChecked(string $fieldName, string $message = ''): void + { + self::assertThat(self::getCrawler(), LogicalAnd::fromConstraints( + new CrawlerSelectorExists("input[name=\"$fieldName\"]"), + new LogicalNot(new CrawlerSelectorAttributeValueSame("input[name=\"$fieldName\"]", 'checked', 'checked')) + ), $message); + } + private static function getCrawler(): Crawler { if (!$crawler = self::getClient()->getCrawler()) { diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Test/WebTestCaseTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Test/WebTestCaseTest.php index efa3fbfb1f677..ac9036baf7020 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Test/WebTestCaseTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Test/WebTestCaseTest.php @@ -220,6 +220,22 @@ public function testAssertInputValueNotSame() $this->getCrawlerTester(new Crawler('
'))->assertInputValueNotSame('password', 'pa$$'); } + public function testAssertCheckboxChecked() + { + $this->getCrawlerTester(new Crawler(''))->assertCheckboxChecked('rememberMe'); + $this->expectException(AssertionFailedError::class); + $this->expectExceptionMessage('matches selector "input[name="rememberMe"]" and has a node matching selector "input[name="rememberMe"]" with attribute "checked" of value "checked".'); + $this->getCrawlerTester(new Crawler(''))->assertCheckboxChecked('rememberMe'); + } + + public function testAssertCheckboxNotChecked() + { + $this->getCrawlerTester(new Crawler(''))->assertCheckboxNotChecked('rememberMe'); + $this->expectException(AssertionFailedError::class); + $this->expectExceptionMessage('matches selector "input[name="rememberMe"]" and does not have a node matching selector "input[name="rememberMe"]" with attribute "checked" of value "checked".'); + $this->getCrawlerTester(new Crawler(''))->assertCheckboxNotChecked('rememberMe'); + } + public function testAssertRequestAttributeValueSame() { $this->getRequestTester()->assertRequestAttributeValueSame('foo', 'bar'); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy