Completed
Pull Request — master (#112)
by Christophe
02:45
created

NameFilterTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 71
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 3
Bugs 0 Features 1
Metric Value
c 3
b 0
f 1
dl 0
loc 71
wmc 3
lcom 1
cbo 4
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testIsScenarioMatchFilter() 0 22 1
A testFilterFeature() 0 16 1
B testIsFeatureMatchFilter() 0 28 1
1
<?php
2
3
namespace Tests\Behat\Gherkin\Filter;
4
5
use Behat\Gherkin\Filter\NameFilter;
6
use Behat\Gherkin\Node\FeatureNode;
7
use Behat\Gherkin\Node\ScenarioNode;
8
9
class NameFilterTest extends \PHPUnit_Framework_TestCase
10
{
11
    public function testFilterFeature()
12
    {
13
        $feature = new FeatureNode('feature1', null, array(), null, array(), null, null, null, 1);
14
        $filter = new NameFilter('feature1');
15
        $this->assertSame($feature, $filter->filterFeature($feature));
16
17
        $scenarios = array(
18
            new ScenarioNode('scenario1', array(), array(), null, 2),
19
            $matchedScenario = new ScenarioNode('scenario2', array(), array(), null, 4)
20
        );
21
        $feature = new FeatureNode('feature1', null, array(), null, $scenarios, null, null, null, 1);
22
        $filter = new NameFilter('scenario2');
23
        $filteredFeature = $filter->filterFeature($feature);
24
25
        $this->assertSame(array($matchedScenario), $filteredFeature->getScenarios());
26
    }
27
28
    public function testIsFeatureMatchFilter()
29
    {
30
        $feature = new FeatureNode('random feature title', null, array(), null, array(), null, null, null, 1);
31
32
        $filter = new NameFilter('feature1');
33
        $this->assertFalse($filter->isFeatureMatch($feature));
34
35
        $feature = new FeatureNode('feature1', null, array(), null, array(), null, null, null, 1);
36
        $this->assertTrue($filter->isFeatureMatch($feature));
37
38
        $feature = new FeatureNode('feature1 title', null, array(), null, array(), null, null, null, 1);
39
        $this->assertTrue($filter->isFeatureMatch($feature));
40
41
        $feature = new FeatureNode('some feature1 title', null, array(), null, array(), null, null, null, 1);
42
        $this->assertTrue($filter->isFeatureMatch($feature));
43
44
        $feature = new FeatureNode('some feature title', null, array(), null, array(), null, null, null, 1);
45
        $this->assertFalse($filter->isFeatureMatch($feature));
46
47
        $filter = new NameFilter('/fea.ure/');
48
        $this->assertTrue($filter->isFeatureMatch($feature));
49
50
        $feature = new FeatureNode('some feaSure title', null, array(), null, array(), null, null, null, 1);
51
        $this->assertTrue($filter->isFeatureMatch($feature));
52
53
        $feature = new FeatureNode('some feture title', null, array(), null, array(), null, null, null, 1);
54
        $this->assertFalse($filter->isFeatureMatch($feature));
55
    }
56
57
    public function testIsScenarioMatchFilter()
58
    {
59
        $filter = new NameFilter('scenario1');
60
61
        $scenario = new ScenarioNode('UNKNOWN', array(), array(), null, 2);
62
        $this->assertFalse($filter->isScenarioMatch($scenario));
63
64
        $scenario = new ScenarioNode('scenario1', array(), array(), null, 2);
65
        $this->assertTrue($filter->isScenarioMatch($scenario));
66
67
        $scenario = new ScenarioNode('scenario1 title', array(), array(), null, 2);
68
        $this->assertTrue($filter->isScenarioMatch($scenario));
69
70
        $scenario = new ScenarioNode('some scenario title', array(), array(), null, 2);
71
        $this->assertFalse($filter->isScenarioMatch($scenario));
72
73
        $filter = new NameFilter('/sce.ario/');
74
        $this->assertTrue($filter->isScenarioMatch($scenario));
75
76
        $filter = new NameFilter('/scen.rio/');
77
        $this->assertTrue($filter->isScenarioMatch($scenario));
78
    }
79
}
80