Skip to content

Commit 6e55f5a

Browse files
mnapolifabpot
authored andcommitted
[DomCrawler] Add assertFormValue() and assertNoFormValue() in WebTestCase
1 parent 84719a6 commit 6e55f5a

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ CHANGELOG
1212
* Add `cache.adapter.redis_tag_aware` tag to use `RedisCacheAwareAdapter`
1313
* added `framework.http_client.retry_failing` configuration tree
1414
* added `assertCheckboxChecked()` and `assertCheckboxNotChecked()` in `WebTestCase`
15+
* added `assertFormValue()` and `assertNoFormValue()` in `WebTestCase`
1516

1617
5.1.0
1718
-----

Test/DomCrawlerAssertionsTrait.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,23 @@ public static function assertCheckboxNotChecked(string $fieldName, string $messa
101101
), $message);
102102
}
103103

104+
public static function assertFormValue(string $formSelector, string $fieldName, string $value, string $message = ''): void
105+
{
106+
$node = self::getCrawler()->filter($formSelector);
107+
self::assertNotEmpty($node, sprintf('Form "%s" not found.', $formSelector));
108+
$values = $node->form()->getValues();
109+
self::assertArrayHasKey($fieldName, $values, $message ?: sprintf('Field "%s" not found in form "%s".', $fieldName, $formSelector));
110+
self::assertSame($value, $values[$fieldName]);
111+
}
112+
113+
public static function assertNoFormValue(string $formSelector, string $fieldName, string $message = ''): void
114+
{
115+
$node = self::getCrawler()->filter($formSelector);
116+
self::assertNotEmpty($node, sprintf('Form "%s" not found.', $formSelector));
117+
$values = $node->form()->getValues();
118+
self::assertArrayNotHasKey($fieldName, $values, $message ?: sprintf('Field "%s" has a value in form "%s".', $fieldName, $formSelector));
119+
}
120+
104121
private static function getCrawler(): Crawler
105122
{
106123
if (!$crawler = self::getClient()->getCrawler()) {

Tests/Test/WebTestCaseTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,22 @@ public function testAssertCheckboxNotChecked()
236236
$this->getCrawlerTester(new Crawler('<html><body><form><input type="checkbox" name="rememberMe" checked>'))->assertCheckboxNotChecked('rememberMe');
237237
}
238238

239+
public function testAssertFormValue()
240+
{
241+
$this->getCrawlerTester(new Crawler('<html><body><form id="form"><input type="text" name="username" value="Fabien">', 'http://localhost'))->assertFormValue('#form', 'username', 'Fabien');
242+
$this->expectException(AssertionFailedError::class);
243+
$this->expectExceptionMessage('Failed asserting that two strings are identical.');
244+
$this->getCrawlerTester(new Crawler('<html><body><form id="form"><input type="text" name="username" value="Fabien">', 'http://localhost'))->assertFormValue('#form', 'username', 'Jane');
245+
}
246+
247+
public function testAssertNoFormValue()
248+
{
249+
$this->getCrawlerTester(new Crawler('<html><body><form id="form"><input type="checkbox" name="rememberMe">', 'http://localhost'))->assertNoFormValue('#form', 'rememberMe');
250+
$this->expectException(AssertionFailedError::class);
251+
$this->expectExceptionMessage('Field "rememberMe" has a value in form "#form".');
252+
$this->getCrawlerTester(new Crawler('<html><body><form id="form"><input type="checkbox" name="rememberMe" checked>', 'http://localhost'))->assertNoFormValue('#form', 'rememberMe');
253+
}
254+
239255
public function testAssertRequestAttributeValueSame()
240256
{
241257
$this->getRequestTester()->assertRequestAttributeValueSame('foo', 'bar');

0 commit comments

Comments
 (0)