Skip to content

Commit c73d508

Browse files
committed
Change the constructor arguments of the elements to their dependencies
The constructor now receives the driver and the element finder instead of the session.
1 parent 145a54e commit c73d508

8 files changed

Lines changed: 54 additions & 68 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->getElementFinder());
112112
}
113113

114114
return $elements;

src/Element/Element.php

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
namespace Behat\Mink\Element;
1212

1313
use Behat\Mink\Driver\DriverInterface;
14-
use Behat\Mink\Session;
1514

1615
/**
1716
* Base element.
@@ -32,15 +31,10 @@ abstract class Element implements ElementInterface
3231
*/
3332
private $elementFinder;
3433

35-
/**
36-
* Initialize element.
37-
*
38-
* @param Session $session
39-
*/
40-
public function __construct(Session $session)
34+
public function __construct(DriverInterface $driver, ElementFinder $elementFinder)
4135
{
42-
$this->driver = $session->getDriver();
43-
$this->elementFinder = $session->getElementFinder();
36+
$this->driver = $driver;
37+
$this->elementFinder = $elementFinder;
4438
}
4539

4640
/**

src/Element/NodeElement.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
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;
1717

1818
/**
@@ -30,14 +30,15 @@ class NodeElement extends TraversableElement
3030
/**
3131
* Initializes node element.
3232
*
33-
* @param string $xpath element xpath
34-
* @param Session $session session instance
33+
* @param string $xpath element xpath
34+
* @param DriverInterface $driver
35+
* @param ElementFinder $elementFinder
3536
*/
36-
public function __construct($xpath, Session $session)
37+
public function __construct($xpath, DriverInterface $driver, ElementFinder $elementFinder)
3738
{
3839
$this->xpath = $xpath;
3940

40-
parent::__construct($session);
41+
parent::__construct($driver, $elementFinder);
4142
}
4243

4344
/**

src/Session.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public function __construct(DriverInterface $driver, SelectorsHandler $selectors
3939
{
4040
$this->driver = $driver;
4141
$this->elementFinder = new ElementFinder($driver, $selectorsHandler ?? new SelectorsHandler());
42-
$this->page = new DocumentElement($this);
42+
$this->page = new DocumentElement($driver, $this->elementFinder);
4343

4444
$driver->setSession($this);
4545
}

tests/Driver/CoreDriverTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Behat\Mink\Tests\Driver;
44

5+
use Behat\Mink\Element\ElementFinder;
56
use Behat\Mink\Element\NodeElement;
67
use PHPUnit\Framework\TestCase;
78

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

34+
$session->method('getElementFinder')->willReturn($this->createMock(ElementFinder::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
@@ -20,7 +20,7 @@ class DocumentElementTest extends ElementTest
2020
protected function prepareSession(): void
2121
{
2222
parent::prepareSession();
23-
$this->document = new DocumentElement($this->session);
23+
$this->document = new DocumentElement($this->driver, $this->elementFinder);
2424
}
2525

2626
public function testFindAll()

tests/Element/ElementTest.php

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,11 @@
44

55
use Behat\Mink\Driver\DriverInterface;
66
use Behat\Mink\Element\ElementFinder;
7-
use Behat\Mink\Session;
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
*/
@@ -33,10 +25,6 @@ abstract class ElementTest extends TestCase
3325
protected function prepareSession(): void
3426
{
3527
$this->driver = $this->getMockBuilder('Behat\Mink\Driver\DriverInterface')->getMock();
36-
3728
$this->elementFinder = $this->createMock(ElementFinder::class);
38-
$this->session = $this->createStub(Session::class);
39-
$this->session->method('getDriver')->willReturn($this->driver);
40-
$this->session->method('getElementFinder')->willReturn($this->elementFinder);
4129
}
4230
}

0 commit comments

Comments
 (0)