Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 69e29ae

Browse files
syl20bnicolas-grekas
authored andcommitted
[BrowserKit] add serverParameters to click and clickLink method
1 parent a830ccc commit 69e29ae

File tree

4 files changed

+61
-6
lines changed

4 files changed

+61
-6
lines changed

UPGRADE-6.4.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
UPGRADE FROM 6.3 to 6.4
22
=======================
33

4+
BrowserKit
5+
----------
6+
7+
* Methods `AbstractBrowser::click()` and `AbstractBrowser::clickLink()` will have a new $serverParameters argument in version 6.4, not defining it is deprecated
8+
49
Cache
510
-----
611

src/Symfony/Component/BrowserKit/AbstractBrowser.php

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -263,26 +263,33 @@ public function getRequest(): object
263263

264264
/**
265265
* Clicks on a given link.
266+
*
267+
* @param array $serverParameters An array of server parameters
266268
*/
267-
public function click(Link $link): Crawler
269+
public function click(Link $link/* , array $serverParameters = [] */): Crawler
268270
{
271+
$serverParameters = 2 === \func_num_args() ? func_get_arg(1) : [];
272+
269273
if ($link instanceof Form) {
270-
return $this->submit($link);
274+
return $this->submit($link, [], $serverParameters);
271275
}
272276

273-
return $this->request($link->getMethod(), $link->getUri());
277+
return $this->request($link->getMethod(), $link->getUri(), [], [], $serverParameters);
274278
}
275279

276280
/**
277281
* Clicks the first link (or clickable image) that contains the given text.
278282
*
279-
* @param string $linkText The text of the link or the alt attribute of the clickable image
283+
* @param string $linkText The text of the link or the alt attribute of the clickable image
284+
* @param array $serverParameters An array of server parameters
280285
*/
281-
public function clickLink(string $linkText): Crawler
286+
public function clickLink(string $linkText/* , array $serverParameters = [] */): Crawler
282287
{
283288
$crawler = $this->crawler ?? throw new BadMethodCallException(sprintf('The "request()" method must be called before "%s()".', __METHOD__));
284289

285-
return $this->click($crawler->selectLink($linkText)->link());
290+
$serverParameters = 2 === \func_num_args() ? func_get_arg(1) : [];
291+
292+
return $this->click($crawler->selectLink($linkText)->link(), $serverParameters);
286293
}
287294

288295
/**

src/Symfony/Component/BrowserKit/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
CHANGELOG
22
=========
33

4+
6.4
5+
---
6+
7+
* Added `$serverParameters` argument to `AbstractBrowser::click()` and `AbstractBrowser::clickLink()` methods
8+
49
6.3
510
---
611

src/Symfony/Component/BrowserKit/Tests/AbstractBrowserTest.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,19 @@ public function testClick()
279279
$this->assertSame('http://www.example.com/foo', $client->getRequest()->getUri(), '->click() clicks on links');
280280
}
281281

282+
public function testClickPreserveHeaders()
283+
{
284+
$client = $this->getBrowser();
285+
$client->setNextResponse(new Response('<html><a href="/foo">foo</a></html>'));
286+
$crawler = $client->request('GET', 'http://www.example.com/foo/foobar');
287+
288+
$client->click($crawler->filter('a')->link(), ['X-Special-Header' => 'Special Header Value']);
289+
290+
$server = $client->getRequest()->getServer();
291+
$this->assertArrayHasKey('X-Special-Header', $server);
292+
$this->assertSame('Special Header Value', $server['X-Special-Header']);
293+
}
294+
282295
public function testClickLink()
283296
{
284297
$client = $this->getBrowser();
@@ -299,6 +312,18 @@ public function testClickLinkNotFound()
299312
$client->clickLink('foo');
300313
}
301314

315+
public function testClickLinkPreserveHeaders()
316+
{
317+
$client = $this->getBrowser();
318+
$client->setNextResponse(new Response('<html><a href="/foo">foo</a></html>'));
319+
$client->request('GET', 'http://www.example.com/foo/foobar');
320+
$client->clickLink('foo', ['X-Special-Header' => 'Special Header Value']);
321+
322+
$server = $client->getRequest()->getServer();
323+
$this->assertArrayHasKey('X-Special-Header', $server);
324+
$this->assertSame('Special Header Value', $server['X-Special-Header']);
325+
}
326+
302327
public function testClickForm()
303328
{
304329
$client = $this->getBrowser();
@@ -310,6 +335,19 @@ public function testClickForm()
310335
$this->assertSame('http://www.example.com/foo', $client->getRequest()->getUri(), '->click() Form submit forms');
311336
}
312337

338+
public function testClickFormPreserveHeaders()
339+
{
340+
$client = $this->getBrowser();
341+
$client->setNextResponse(new Response('<html><form action="/foo"><input type="submit" /></form></html>'));
342+
$crawler = $client->request('GET', 'http://www.example.com/foo/foobar');
343+
344+
$client->click($crawler->filter('input')->form(), ['X-Special-Header' => 'Special Header Value']);
345+
346+
$server = $client->getRequest()->getServer();
347+
$this->assertArrayHasKey('X-Special-Header', $server);
348+
$this->assertSame('Special Header Value', $server['X-Special-Header']);
349+
}
350+
313351
public function testSubmit()
314352
{
315353
$client = $this->getBrowser();

0 commit comments

Comments
 (0)