Skip to content

Commit f8e74a3

Browse files
committed
[BrowserKit] add $serverParameters to click and clickLink methods
1 parent bd57368 commit f8e74a3

File tree

4 files changed

+52
-6
lines changed

4 files changed

+52
-6
lines changed

UPGRADE-6.3.md

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

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

src/Symfony/Component/BrowserKit/AbstractBrowser.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -284,27 +284,28 @@ public function getRequest(): object
284284
/**
285285
* Clicks on a given link.
286286
*/
287-
public function click(Link $link): Crawler
287+
public function click(Link $link, array $serverParameters = []): Crawler
288288
{
289289
if ($link instanceof Form) {
290-
return $this->submit($link);
290+
return $this->submit($link, [], $serverParameters);
291291
}
292292

293-
return $this->request($link->getMethod(), $link->getUri());
293+
return $this->request($link->getMethod(), $link->getUri(), [], [], $serverParameters);
294294
}
295295

296296
/**
297297
* Clicks the first link (or clickable image) that contains the given text.
298298
*
299-
* @param string $linkText The text of the link or the alt attribute of the clickable image
299+
* @param string $linkText The text of the link or the alt attribute of the clickable image
300+
* @param array $serverParameters An array of server parameters
300301
*/
301-
public function clickLink(string $linkText): Crawler
302+
public function clickLink(string $linkText, array $serverParameters = []): Crawler
302303
{
303304
if (null === $this->crawler) {
304305
throw new BadMethodCallException(sprintf('The "request()" method must be called before "%s()".', __METHOD__));
305306
}
306307

307-
return $this->click($this->crawler->selectLink($linkText)->link());
308+
return $this->click($this->crawler->selectLink($linkText)->link(), $serverParameters);
308309
}
309310

310311
/**

src/Symfony/Component/BrowserKit/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ CHANGELOG
55
---
66

77
* Add `AbstractBrowser::useHtml5Parser()`
8+
* Methods `AbstractBrowser::click()` and `AbstractBrowser::clickLink()` will have a new `$serverParameters` argument
9+
in version 6.3, not defining it is deprecated
810

911
6.1
1012
---

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