init
This commit is contained in:
184
vendor/behat/gherkin/tests/Behat/Gherkin/GherkinTest.php
vendored
Normal file
184
vendor/behat/gherkin/tests/Behat/Gherkin/GherkinTest.php
vendored
Normal file
@@ -0,0 +1,184 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Behat\Gherkin;
|
||||
|
||||
use Behat\Gherkin\Gherkin;
|
||||
use Behat\Gherkin\Node\FeatureNode;
|
||||
use Behat\Gherkin\Node\ScenarioNode;
|
||||
|
||||
class GherkinTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
public function testLoader()
|
||||
{
|
||||
$customFilter1 = $this->getCustomFilterMock();
|
||||
$customFilter2 = $this->getCustomFilterMock();
|
||||
|
||||
$gherkin = new Gherkin();
|
||||
$gherkin->addLoader($loader = $this->getLoaderMock());
|
||||
$gherkin->addFilter($nameFilter = $this->getNameFilterMock());
|
||||
$gherkin->addFilter($tagFilter = $this->getTagFilterMock());
|
||||
|
||||
$scenario = new ScenarioNode(null, array(), array(), null, null);
|
||||
$feature = new FeatureNode(null, null, array(), null, array($scenario), null, null, null, null);
|
||||
|
||||
$loader
|
||||
->expects($this->once())
|
||||
->method('supports')
|
||||
->with($resource = 'some/feature/resource')
|
||||
->will($this->returnValue(true));
|
||||
$loader
|
||||
->expects($this->once())
|
||||
->method('load')
|
||||
->with($resource)
|
||||
->will($this->returnValue(array($feature)));
|
||||
|
||||
$nameFilter
|
||||
->expects($this->once())
|
||||
->method('filterFeature')
|
||||
->with($this->identicalTo($feature))
|
||||
->will($this->returnValue($feature));
|
||||
$tagFilter
|
||||
->expects($this->once())
|
||||
->method('filterFeature')
|
||||
->with($this->identicalTo($feature))
|
||||
->will($this->returnValue($feature));
|
||||
$customFilter1
|
||||
->expects($this->once())
|
||||
->method('filterFeature')
|
||||
->with($this->identicalTo($feature))
|
||||
->will($this->returnValue($feature));
|
||||
$customFilter2
|
||||
->expects($this->once())
|
||||
->method('filterFeature')
|
||||
->with($this->identicalTo($feature))
|
||||
->will($this->returnValue($feature));
|
||||
|
||||
$features = $gherkin->load($resource, array($customFilter1, $customFilter2));
|
||||
$this->assertEquals(1, count($features));
|
||||
|
||||
$scenarios = $features[0]->getScenarios();
|
||||
$this->assertEquals(1, count($scenarios));
|
||||
$this->assertSame($scenario, $scenarios[0]);
|
||||
}
|
||||
|
||||
public function testNotFoundLoader()
|
||||
{
|
||||
$gherkin = new Gherkin();
|
||||
|
||||
$this->assertEquals(array(), $gherkin->load('some/feature/resource'));
|
||||
}
|
||||
|
||||
public function testLoaderFiltersFeatures()
|
||||
{
|
||||
$gherkin = new Gherkin();
|
||||
$gherkin->addLoader($loader = $this->getLoaderMock());
|
||||
$gherkin->addFilter($nameFilter = $this->getNameFilterMock());
|
||||
|
||||
$feature = new FeatureNode(null, null, array(), null, array(), null, null, null, null);
|
||||
|
||||
$loader
|
||||
->expects($this->once())
|
||||
->method('supports')
|
||||
->with($resource = 'some/feature/resource')
|
||||
->will($this->returnValue(true));
|
||||
$loader
|
||||
->expects($this->once())
|
||||
->method('load')
|
||||
->with($resource)
|
||||
->will($this->returnValue(array($feature)));
|
||||
|
||||
$nameFilter
|
||||
->expects($this->once())
|
||||
->method('filterFeature')
|
||||
->with($this->identicalTo($feature))
|
||||
->will($this->returnValue($feature));
|
||||
$nameFilter
|
||||
->expects($this->once())
|
||||
->method('isFeatureMatch')
|
||||
->with($this->identicalTo($feature))
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$features = $gherkin->load($resource);
|
||||
$this->assertEquals(0, count($features));
|
||||
}
|
||||
|
||||
public function testSetFiltersOverridesAllFilters()
|
||||
{
|
||||
$gherkin = new Gherkin();
|
||||
$gherkin->addLoader($loader = $this->getLoaderMock());
|
||||
$gherkin->addFilter($nameFilter = $this->getNameFilterMock());
|
||||
$gherkin->setFilters(array());
|
||||
|
||||
$feature = new FeatureNode(null, null, array(), null, array(), null, null, null, null);
|
||||
|
||||
$loader
|
||||
->expects($this->once())
|
||||
->method('supports')
|
||||
->with($resource = 'some/feature/resource')
|
||||
->will($this->returnValue(true));
|
||||
$loader
|
||||
->expects($this->once())
|
||||
->method('load')
|
||||
->with($resource)
|
||||
->will($this->returnValue(array($feature)));
|
||||
|
||||
$nameFilter
|
||||
->expects($this->never())
|
||||
->method('filterFeature');
|
||||
$nameFilter
|
||||
->expects($this->never())
|
||||
->method('isFeatureMatch');
|
||||
|
||||
$features = $gherkin->load($resource);
|
||||
$this->assertEquals(1, count($features));
|
||||
}
|
||||
|
||||
public function testSetBasePath()
|
||||
{
|
||||
$gherkin = new Gherkin();
|
||||
$gherkin->addLoader($loader1 = $this->getLoaderMock());
|
||||
$gherkin->addLoader($loader2 = $this->getLoaderMock());
|
||||
|
||||
$loader1
|
||||
->expects($this->once())
|
||||
->method('setBasePath')
|
||||
->with($basePath = '/base/path')
|
||||
->will($this->returnValue(null));
|
||||
|
||||
$loader2
|
||||
->expects($this->once())
|
||||
->method('setBasePath')
|
||||
->with($basePath = '/base/path')
|
||||
->will($this->returnValue(null));
|
||||
|
||||
$gherkin->setBasePath($basePath);
|
||||
}
|
||||
|
||||
protected function getLoaderMock()
|
||||
{
|
||||
return $this->getMockBuilder('Behat\Gherkin\Loader\GherkinFileLoader')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
}
|
||||
|
||||
protected function getCustomFilterMock()
|
||||
{
|
||||
return $this->getMockBuilder('Behat\Gherkin\Filter\FilterInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
}
|
||||
|
||||
protected function getNameFilterMock()
|
||||
{
|
||||
return $this->getMockBuilder('Behat\Gherkin\Filter\NameFilter')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
}
|
||||
|
||||
protected function getTagFilterMock()
|
||||
{
|
||||
return $this->getMockBuilder('Behat\Gherkin\Filter\TagFilter')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user