8000 [DomCrawler] Add `assertFormValue()` and `assertNoFormValue()` in `We… · symfony/symfony@b135c47 · GitHub
[go: up one dir, main page]

Skip to content
Sign in

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit b135c47

Browse files
committed
[DomCrawler] Add assertFormValue() and assertNoFormValue() in WebTestCase
1 parent 9323b75 commit b135c47

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed

src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ CHANGELOG
1111
* Added `TemplateAwareDataCollectorInterface` and `AbstractDataCollector` to simplify custom data collector creation and leverage autoconfiguration
1212
* Add `cache.adapter.redis_tag_aware` tag to use `RedisCacheAwareAdapter`
1313
* added `framework.http_client.retry_failing` configuration tree
14+
* added `assertFormValue()` and `assertNoFormValue()` in `WebTestCase`
1415

1516
5.1.0
1617
-----

src/Symfony/Bundle/FrameworkBundle/Test/DomCrawlerAssertionsTrait.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,23 @@ public static function assertInputValueNotSame(string $fieldName, string $expect
8383
), $message);
8484
}
8585

86+
public static function assertFormValue(string $formSelector, string $fieldName, string $value, string $message = ''): void
87+
{
88+
$node = self::getCrawler()->filter($formSelector);
89+
self::assertNotEmpty($node, "Form '$formSelector' not found.");
90+
$values = $node->form()->getValues();
91+
self::assertArrayHasKey($fieldName, $values, $message ?: "Field '$fieldName' not found in form '$formSelector'.");
92+
self::assertSame($value, $values[$fieldName]);
93+
}
94+
95+
public static function assertNoFormValue(string $formSelector, string $fieldName, string $message = ''): void
96+
{
97+
$node = self::getCrawler()->filter($formSelector);
98+
self::assertNotEmpty($node, "Form '$formSelector' not found.");
99+
$values = $node->form()->getValues();
100+
self::assertArrayNotHasKey($fieldName, $values, $message ?: "Field '$fieldName' has a value in form '$formSelector'.");
101+
}
102+
86103
private static function getCrawler(): Crawler
87104
{
88105
if (!$crawler = self::getClient()->getCrawler()) {

src/Symfony/Bundle/FrameworkBundle/Tests/Test/WebTestCaseTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,22 @@ public function testAssertInputValueNotSame()
220220
$this->getCrawlerTester(new Crawler('<html><body><form><input type="text" name="password" value="pa$$">'))->assertInputValueNotSame('password', 'pa$$');
221221
}
222222

223+
public function testAssertFormValue()
224+
{
225+
$this->getCrawlerTester(new Crawler('<html><body><form id="form"><input type="text" name="username" value="Fabien">', 'http://localhost'))->assertFormValue('#form', 'username', 'Fabien');
226+
$this->expectException(AssertionFailedError::class);
227+
$this->expectExceptionMessage('Failed asserting that two strings are identical.');
228+
$this->getCrawlerTester(new Crawler('<html><body><form id="form"><input type="text" name="username" value="Fabien">', 'http://localhost'))->assertFormValue('#form', 'username', 'Jane');
229+
}
230+
231+
public function testAssertNoFormValue()
232+
{
233+
$this->getCrawlerTester(new Crawler('<html><body><form id="form"><input type="checkbox" name="rememberMe">', 'http://localhost'))->assertNoFormValue('#form', 'rememberMe');
234+
$this->expectException(AssertionFailedError::class);
235+
$this->expectExceptionMessage("Field 'rememberMe' has a value in form '#form'.");
236+
$this->getCrawlerTester(new Crawler('<html><body><form id="form"><input type="checkbox" name="rememberMe" checked>', 'http://localhost'))->assertNoFormValue('#form', 'rememberMe');
237+
}
238+
223239
public function testAssertRequestAttributeValueSame()
224240
{
225241
$this->getRequestTester()->assertRequestAttributeValueSame('foo', 'bar');

0 commit comments

Comments
 (0)
0