2015-04-07 13:15:22 +02:00
|
|
|
<?php
|
|
|
|
namespace SilverStripe\BehatExtension\Tests;
|
|
|
|
|
2016-08-10 03:35:13 +02:00
|
|
|
use SilverStripe\BehatExtension\Context\SilverStripeContext;
|
|
|
|
use Behat\Mink\Mink;
|
2015-04-07 13:15:22 +02:00
|
|
|
|
2016-08-10 03:35:13 +02:00
|
|
|
class SilverStripeContextTest extends \PHPUnit_Framework_TestCase
|
|
|
|
{
|
2015-04-07 13:15:22 +02:00
|
|
|
|
2016-08-10 03:35:13 +02:00
|
|
|
protected $backupGlobals = false;
|
2016-02-24 10:24:07 +01:00
|
|
|
|
2016-08-10 03:35:13 +02:00
|
|
|
/**
|
|
|
|
* @expectedException \LogicException
|
|
|
|
* @expectedExceptionMessage Cannot find 'region_map' in the behat.yml
|
|
|
|
*/
|
|
|
|
public function testGetRegionObjThrowsExceptionOnUnknownSelector()
|
|
|
|
{
|
|
|
|
$context = $this->getContextMock();
|
|
|
|
$context->getRegionObj('.unknown');
|
|
|
|
}
|
2015-04-07 13:15:22 +02:00
|
|
|
|
2016-08-10 03:35:13 +02:00
|
|
|
/**
|
|
|
|
* @expectedException \LogicException
|
|
|
|
* @expectedExceptionMessage Cannot find the specified region in the behat.yml
|
|
|
|
*/
|
|
|
|
public function testGetRegionObjThrowsExceptionOnUnknownRegion()
|
|
|
|
{
|
|
|
|
$context = $this->getContextMock();
|
|
|
|
$context->setRegionMap(array('MyRegion' => '.my-region'));
|
|
|
|
$context->getRegionObj('.unknown');
|
|
|
|
}
|
2015-04-07 13:15:22 +02:00
|
|
|
|
2016-08-10 03:35:13 +02:00
|
|
|
public function testGetRegionObjFindsBySelector()
|
|
|
|
{
|
|
|
|
$context = $this->getContextMock();
|
|
|
|
$context->getSession()->getPage()
|
|
|
|
->expects($this->any())
|
|
|
|
->method('find')
|
|
|
|
->will($this->returnValue($this->getElementMock()));
|
|
|
|
$obj = $context->getRegionObj('.some-selector');
|
|
|
|
$this->assertNotNull($obj);
|
|
|
|
}
|
2015-04-07 13:15:22 +02:00
|
|
|
|
2016-08-10 03:35:13 +02:00
|
|
|
public function testGetRegionObjFindsByRegion()
|
|
|
|
{
|
|
|
|
$context = $this->getContextMock();
|
|
|
|
$el = $this->getElementMock();
|
|
|
|
$context->getSession()->getPage()
|
|
|
|
->expects($this->any())
|
|
|
|
->method('find')
|
|
|
|
->will($this->returnCallback(function ($type, $selector) use ($el) {
|
|
|
|
return ($selector == '.my-region') ? $el : null;
|
|
|
|
}));
|
|
|
|
$context->setRegionMap(array('MyRegion' => '.my-asdf'));
|
|
|
|
$obj = $context->getRegionObj('.my-region');
|
|
|
|
$this->assertNotNull($obj);
|
|
|
|
}
|
2015-04-07 13:15:22 +02:00
|
|
|
|
2016-08-10 03:35:13 +02:00
|
|
|
protected function getContextMock()
|
|
|
|
{
|
|
|
|
$pageMock = $this->getMockBuilder('Behat\Mink\Element\DocumentElement')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->setMethods(array('find'))
|
|
|
|
->getMock();
|
|
|
|
$sessionMock = $this->getMockBuilder('Behat\Mink\Session')
|
|
|
|
->setConstructorArgs(array(
|
|
|
|
$this->getMock('Behat\Mink\Driver\DriverInterface'),
|
|
|
|
$this->getMock('Behat\Mink\Selector\SelectorsHandler')
|
|
|
|
))
|
|
|
|
->setMethods(array('getPage'))
|
|
|
|
->getMock();
|
|
|
|
$sessionMock->expects($this->any())
|
|
|
|
->method('getPage')
|
|
|
|
->will($this->returnValue($pageMock));
|
|
|
|
$mink = new Mink(array('default' => $sessionMock));
|
|
|
|
$mink->setDefaultSessionName('default');
|
2015-04-07 13:15:22 +02:00
|
|
|
|
2016-08-10 03:35:13 +02:00
|
|
|
$context = new SilverStripeContext(array());
|
|
|
|
$context->setMink($mink);
|
2015-04-07 13:15:22 +02:00
|
|
|
|
2016-08-10 03:35:13 +02:00
|
|
|
return $context;
|
|
|
|
}
|
2015-04-07 13:15:22 +02:00
|
|
|
|
2016-08-10 03:35:13 +02:00
|
|
|
protected function getElementMock()
|
|
|
|
{
|
|
|
|
return $this->getMockBuilder('Behat\Mink\Element\Element')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
}
|
|
|
|
}
|