Skip to content

Commit 3f5752f

Browse files
syl20bnicolas-grekas
authored andcommitted
[BrowserKit] add serverParameters to click and clickLink method
1 parent a747429 commit 3f5752f

File tree

3 files changed

+56
-6
lines changed

3 files changed

+56
-6
lines changed

AbstractBrowser.php

+13-6
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 = 1 < \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
{
288+
$serverParameters = 1 < \func_num_args() ? func_get_arg(1) : [];
289+
283290
$crawler = $this->crawler ?? throw new BadMethodCallException(sprintf('The "request()" method must be called before "%s()".', __METHOD__));
284291

285-
return $this->click($crawler->selectLink($linkText)->link());
292+
return $this->click($crawler->selectLink($linkText)->link(), $serverParameters);
286293
}
287294

288295
/**

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
CHANGELOG
22
=========
33

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

Tests/AbstractBrowserTest.php

+38
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)