Skip to content

Commit a5572c4

Browse files
committed
Changed the constructor arguments of the elements to their dependencies
The constructor now receives the driver and the selectors handler instead of the session.
1 parent 64a56da commit a5572c4

8 files changed

Lines changed: 80 additions & 69 deletions

File tree

src/Driver/CoreDriver.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public function find($xpath)
108108
$elements = array();
109109

110110
foreach ($this->findElementXpaths($xpath) as $xpath) {
111-
$elements[] = new NodeElement($xpath, $this->session);
111+
$elements[] = new NodeElement($xpath, $this, $this->session->getSelectorsHandler());
112112
}
113113

114114
return $elements;

src/Element/Element.php

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
use Behat\Mink\Driver\DriverInterface;
1414
use Behat\Mink\Selector\SelectorsHandler;
1515
use Behat\Mink\Selector\Xpath\Manipulator;
16-
use Behat\Mink\Session;
1716

1817
/**
1918
* Base element.
@@ -42,14 +41,14 @@ abstract class Element implements ElementInterface
4241
/**
4342
* Initialize element.
4443
*
45-
* @param Session $session
44+
* @param DriverInterface $driver
45+
* @param SelectorsHandler $selectorsHandler
4646
*/
47-
public function __construct(Session $session)
47+
public function __construct(DriverInterface $driver, SelectorsHandler $selectorsHandler)
4848
{
4949
$this->xpathManipulator = new Manipulator();
50-
51-
$this->driver = $session->getDriver();
52-
$this->selectorsHandler = $session->getSelectorsHandler();
50+
$this->driver = $driver;
51+
$this->selectorsHandler = $selectorsHandler;
5352
}
5453

5554
/**

src/Element/NodeElement.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@
1212

1313
use Behat\Mink\Exception\DriverException;
1414
use Behat\Mink\KeyModifier;
15-
use Behat\Mink\Session;
15+
use Behat\Mink\Driver\DriverInterface;
1616
use Behat\Mink\Exception\ElementNotFoundException;
17+
use Behat\Mink\Selector\SelectorsHandler;
1718

1819
/**
1920
* Page element node.
@@ -30,14 +31,15 @@ class NodeElement extends TraversableElement
3031
/**
3132
* Initializes node element.
3233
*
33-
* @param string $xpath element xpath
34-
* @param Session $session session instance
34+
* @param string $xpath element xpath
35+
* @param DriverInterface $driver
36+
* @param SelectorsHandler $selectorsHandler
3537
*/
36-
public function __construct($xpath, Session $session)
38+
public function __construct($xpath, DriverInterface $driver, SelectorsHandler $selectorsHandler)
3739
{
3840
$this->xpath = $xpath;
3941

40-
parent::__construct($session);
42+
parent::__construct($driver, $selectorsHandler);
4143
}
4244

4345
/**

src/Session.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function __construct(DriverInterface $driver, SelectorsHandler $selectors
5050

5151
$this->driver = $driver;
5252
$this->selectorsHandler = $selectorsHandler;
53-
$this->page = new DocumentElement($this);
53+
$this->page = new DocumentElement($driver, $selectorsHandler);
5454
}
5555

5656
/**

tests/Driver/CoreDriverTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Behat\Mink\Tests\Driver;
44

55
use Behat\Mink\Element\NodeElement;
6+
use Behat\Mink\Selector\SelectorsHandler;
67
use PHPUnit\Framework\TestCase;
78

89
class CoreDriverTest extends TestCase
@@ -30,6 +31,8 @@ public function testCreateNodeElements()
3031
->disableOriginalConstructor()
3132
->getMock();
3233

34+
$session->method('getSelectorsHandler')->willReturn($this->createMock(SelectorsHandler::class));
35+
3336
$driver->setSession($session);
3437

3538
$driver->expects($this->once())

tests/Element/DocumentElementTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class DocumentElementTest extends ElementTest
1919
protected function prepareSession(): void
2020
{
2121
parent::prepareSession();
22-
$this->document = new DocumentElement($this->session);
22+
$this->document = new DocumentElement($this->driver, $this->selectors);
2323
}
2424

2525
public function testFindAll()

tests/Element/ElementTest.php

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,12 @@
33
namespace Behat\Mink\Tests\Element;
44

55
use Behat\Mink\Driver\DriverInterface;
6-
use Behat\Mink\Session;
76
use Behat\Mink\Selector\SelectorsHandler;
87
use PHPUnit\Framework\MockObject\MockObject;
98
use PHPUnit\Framework\TestCase;
109

1110
abstract class ElementTest extends TestCase
1211
{
13-
/**
14-
* Session.
15-
*
16-
* @var Session
17-
*/
18-
protected $session;
19-
2012
/**
2113
* @var DriverInterface&MockObject
2214
*/
@@ -35,12 +27,7 @@ abstract class ElementTest extends TestCase
3527
protected function prepareSession(): void
3628
{
3729
$this->driver = $this->getMockBuilder('Behat\Mink\Driver\DriverInterface')->getMock();
38-
$this->driver
39-
->expects($this->once())
40-
->method('setSession');
41-
4230
$this->selectors = $this->getMockBuilder('Behat\Mink\Selector\SelectorsHandler')->getMock();
43-
$this->session = new Session($this->driver, $this->selectors);
4431
}
4532

4633
protected function mockNamedFinder(string $xpath, array $results, array $locator, int $times = 2): void

0 commit comments

Comments
 (0)