292 lines
5.5 KiB
PHP
292 lines
5.5 KiB
PHP
|
<?php
|
|||
|
|
|||
|
namespace Tests\Behat\Gherkin;
|
|||
|
|
|||
|
use Behat\Gherkin\Lexer;
|
|||
|
use Behat\Gherkin\Parser;
|
|||
|
use Behat\Gherkin\Keywords\ArrayKeywords;
|
|||
|
|
|||
|
class ParserExceptionsTest extends \PHPUnit_Framework_TestCase
|
|||
|
{
|
|||
|
/**
|
|||
|
* @var Parser
|
|||
|
*/
|
|||
|
private $gherkin;
|
|||
|
|
|||
|
protected function setUp()
|
|||
|
{
|
|||
|
$keywords = new ArrayKeywords(array(
|
|||
|
'en' => array(
|
|||
|
'feature' => 'Feature',
|
|||
|
'background' => 'Background',
|
|||
|
'scenario' => 'Scenario',
|
|||
|
'scenario_outline' => 'Scenario Outline',
|
|||
|
'examples' => 'Examples',
|
|||
|
'given' => 'Given',
|
|||
|
'when' => 'When',
|
|||
|
'then' => 'Then',
|
|||
|
'and' => 'And',
|
|||
|
'but' => 'But'
|
|||
|
),
|
|||
|
'ru' => array(
|
|||
|
'feature' => 'Функционал',
|
|||
|
'background' => 'Предыстория',
|
|||
|
'scenario' => 'Сценарий',
|
|||
|
'scenario_outline' => 'Структура сценария',
|
|||
|
'examples' => 'Примеры',
|
|||
|
'given' => 'Допустим',
|
|||
|
'when' => 'То',
|
|||
|
'then' => 'Если',
|
|||
|
'and' => 'И',
|
|||
|
'but' => 'Но'
|
|||
|
)
|
|||
|
));
|
|||
|
$this->gherkin = new Parser(new Lexer($keywords));
|
|||
|
}
|
|||
|
|
|||
|
public function testStepRightAfterFeature()
|
|||
|
{
|
|||
|
$feature = <<<GHERKIN
|
|||
|
Feature: Some feature
|
|||
|
|
|||
|
Given some step-like line
|
|||
|
GHERKIN;
|
|||
|
|
|||
|
$parsed = $this->gherkin->parse($feature);
|
|||
|
|
|||
|
$this->assertEquals("\n Given some step-like line", $parsed->getDescription());
|
|||
|
}
|
|||
|
|
|||
|
public function testTextInBackground()
|
|||
|
{
|
|||
|
$feature = <<<GHERKIN
|
|||
|
Feature: Behat bug test
|
|||
|
Background: remove X to couse bug
|
|||
|
Step is red form is not valid
|
|||
|
asd
|
|||
|
asd
|
|||
|
as
|
|||
|
da
|
|||
|
sd
|
|||
|
as
|
|||
|
das
|
|||
|
d
|
|||
|
|
|||
|
|
|||
|
Scenario: bug user edit date
|
|||
|
GHERKIN;
|
|||
|
|
|||
|
$this->gherkin->parse($feature);
|
|||
|
}
|
|||
|
|
|||
|
public function testTextInScenario()
|
|||
|
{
|
|||
|
$feature = <<<GHERKIN
|
|||
|
Feature: Behat bug test
|
|||
|
Scenario: remove X to cause bug
|
|||
|
Step is red form is not valid
|
|||
|
asd
|
|||
|
asd
|
|||
|
as
|
|||
|
da
|
|||
|
sd
|
|||
|
as
|
|||
|
das
|
|||
|
d
|
|||
|
|
|||
|
|
|||
|
Scenario Outline: bug user edit date
|
|||
|
Step is red form is not valid
|
|||
|
asd
|
|||
|
asd
|
|||
|
as
|
|||
|
da
|
|||
|
sd
|
|||
|
as
|
|||
|
das
|
|||
|
d
|
|||
|
Examples:
|
|||
|
||
|
|||
|
|
|||
|
GHERKIN;
|
|||
|
|
|||
|
$feature = $this->gherkin->parse($feature);
|
|||
|
|
|||
|
$this->assertCount(2, $scenarios = $feature->getScenarios());
|
|||
|
$firstTitle = <<<TEXT
|
|||
|
remove X to cause bug
|
|||
|
Step is red form is not valid
|
|||
|
asd
|
|||
|
asd
|
|||
|
as
|
|||
|
da
|
|||
|
sd
|
|||
|
as
|
|||
|
das
|
|||
|
d
|
|||
|
TEXT;
|
|||
|
$this->assertEquals($firstTitle, $scenarios[0]->getTitle());
|
|||
|
$secondTitle = <<<TEXT
|
|||
|
bug user edit date
|
|||
|
Step is red form is not valid
|
|||
|
asd
|
|||
|
asd
|
|||
|
as
|
|||
|
da
|
|||
|
sd
|
|||
|
as
|
|||
|
das
|
|||
|
d
|
|||
|
TEXT;
|
|||
|
$this->assertEquals($secondTitle, $scenarios[1]->getTitle());
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @expectedException \Behat\Gherkin\Exception\ParserException
|
|||
|
*/
|
|||
|
public function testAmbigiousLanguage()
|
|||
|
{
|
|||
|
$feature = <<<GHERKIN
|
|||
|
# language: en
|
|||
|
|
|||
|
# language: ru
|
|||
|
|
|||
|
Feature: Some feature
|
|||
|
|
|||
|
Given something wrong
|
|||
|
GHERKIN;
|
|||
|
|
|||
|
$this->gherkin->parse($feature);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @expectedException \Behat\Gherkin\Exception\ParserException
|
|||
|
*/
|
|||
|
public function testEmptyOutline()
|
|||
|
{
|
|||
|
$feature = <<<GHERKIN
|
|||
|
Feature: Some feature
|
|||
|
|
|||
|
Scenario Outline:
|
|||
|
GHERKIN;
|
|||
|
|
|||
|
$this->gherkin->parse($feature);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @expectedException \Behat\Gherkin\Exception\ParserException
|
|||
|
*/
|
|||
|
public function testWrongTagPlacement()
|
|||
|
{
|
|||
|
$feature = <<<GHERKIN
|
|||
|
Feature: Some feature
|
|||
|
|
|||
|
Scenario:
|
|||
|
Given some step
|
|||
|
@some_tag
|
|||
|
Then some additional step
|
|||
|
GHERKIN;
|
|||
|
|
|||
|
$this->gherkin->parse($feature);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @expectedException \Behat\Gherkin\Exception\ParserException
|
|||
|
*/
|
|||
|
public function testBackgroundWithTag()
|
|||
|
{
|
|||
|
$feature = <<<GHERKIN
|
|||
|
Feature: Some feature
|
|||
|
|
|||
|
@some_tag
|
|||
|
Background:
|
|||
|
Given some step
|
|||
|
GHERKIN;
|
|||
|
|
|||
|
$this->gherkin->parse($feature);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @expectedException \Behat\Gherkin\Exception\ParserException
|
|||
|
*/
|
|||
|
public function testEndlessPyString()
|
|||
|
{
|
|||
|
$feature = <<<GHERKIN
|
|||
|
Feature:
|
|||
|
|
|||
|
Scenario:
|
|||
|
Given something with:
|
|||
|
"""
|
|||
|
some text
|
|||
|
GHERKIN;
|
|||
|
|
|||
|
$this->gherkin->parse($feature);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @expectedException \Behat\Gherkin\Exception\ParserException
|
|||
|
*/
|
|||
|
public function testWrongStepType()
|
|||
|
{
|
|||
|
$feature = <<<GHERKIN
|
|||
|
Feature:
|
|||
|
|
|||
|
Scenario:
|
|||
|
Given some step
|
|||
|
|
|||
|
Aaand some step
|
|||
|
GHERKIN;
|
|||
|
|
|||
|
$this->gherkin->parse($feature);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @expectedException \Behat\Gherkin\Exception\ParserException
|
|||
|
*/
|
|||
|
public function testMultipleBackgrounds()
|
|||
|
{
|
|||
|
$feature = <<<GHERKIN
|
|||
|
Feature:
|
|||
|
|
|||
|
Background:
|
|||
|
Given some step
|
|||
|
|
|||
|
Background:
|
|||
|
Aaand some step
|
|||
|
GHERKIN;
|
|||
|
|
|||
|
$this->gherkin->parse($feature);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @expectedException \Behat\Gherkin\Exception\ParserException
|
|||
|
*/
|
|||
|
public function testMultipleFeatures()
|
|||
|
{
|
|||
|
$feature = <<<GHERKIN
|
|||
|
Feature:
|
|||
|
|
|||
|
Feature:
|
|||
|
GHERKIN;
|
|||
|
|
|||
|
$this->gherkin->parse($feature);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @expectedException \Behat\Gherkin\Exception\ParserException
|
|||
|
*/
|
|||
|
public function testTableWithoutRightBorder()
|
|||
|
{
|
|||
|
$feature = <<<GHERKIN
|
|||
|
Feature:
|
|||
|
|
|||
|
Scenario:
|
|||
|
Given something with:
|
|||
|
| foo | bar
|
|||
|
| 42 | 42
|
|||
|
GHERKIN;
|
|||
|
|
|||
|
$this->gherkin->parse($feature);
|
|||
|
}
|
|||
|
}
|