Completed
Push — master ( b7ff30...254cd2 )
by Jefersson
03:33
created

StepTest::testCanFormatStepsWithPyString()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 46
Code Lines 23

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 46
rs 8.9411
cc 1
eloc 23
nc 1
nop 0
1
<?php
2
/*
3
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
6
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14
 *
15
 * This software consists of voluntary contributions made by many individuals
16
 * and is licensed under the MIT license.
17
 */
18
19
namespace KawaiiGherkinTest\Formatter;
20
21
use Behat\Gherkin\Node\PyStringNode;
22
use Behat\Gherkin\Node\ScenarioNode;
23
use Behat\Gherkin\Node\StepNode;
24
use Behat\Gherkin\Node\TableNode;
25
use KawaiiGherkin\Formatter\Step;
26
27
/**
28
 * Tests for {@see \KawaiiGherkin\Formatter\Step}
29
 *
30
 * @author Jefersson Nathan <[email protected]>
31
 * @covers \KawaiiGherkin\Formatter\Step
32
 * @group Coverage
33
 * @license MIT
34
 */
35
final class StepTest extends \PHPUnit_Framework_TestCase
36
{
37
    /**
38
     * @var Step
39
     */
40
    private $formatter;
41
42
    /**
43
     * {@inheritDoc}
44
     */
45
    public function setUp()
46
    {
47
        $this->formatter = new Step();
48
    }
49
50
    public function testCanFormatStepsToTheRight()
51
    {
52
        $expected = <<<EOS
53
        Given I am a Java programmer
54
          And I am not Kawaii
55
         When I start to contribute to a php project:
56
            | project                  |
57
            | malukenho/kawaii-gherkin |
58
         Then I start to love php
59
         When I go to a php events
60
         Then I start to become a Kawaii guy
61
62
EOS;
63
64
        $tableNode  = new TableNode([
65
            ['project'],
66
            ['malukenho/kawaii-gherkin'],
67
        ]);
68
        $scenario = new ScenarioNode(
69
            ' Not all people who program php are becoming kawaii ',
70
            [' kawaii ', ' kawaii-bug-12 '],
71
            [
72
                new StepNode('Given', '       I am a Java programmer ', [], 1, 'Given'),
73
                new StepNode('And', '  I am not Kawaii ', [], 2, 'And'),
74
                new StepNode('When', '  I start to contribute to a php project: ', [$tableNode], 3, 'And'),
75
                new StepNode('Then', '  I start to love php ', [], 4, 'And'),
76
                new StepNode('When', ' I go to a php events ', [], 5, 'And'),
77
                new StepNode('Then', 'I start to become a Kawaii guy ', [], 5, 'And'),
78
            ],
79
            'Scenario',
80
            1
81
        );
82
83
        self::assertSame($expected, $this->formatter->format($scenario->getSteps()));
84
    }
85
86
    public function testCanFormatStepsToTheLeft()
87
    {
88
        $this->formatter = new Step(Step::ALIGN_TO_LEFT);
89
90
        $expected = <<<EOS
91
        Given I am a Java programmer
92
        And I am not Kawaii
93
        When I start to contribute to a php project:
94
            | project                  |
95
            | malukenho/kawaii-gherkin |
96
        Then I start to love php
97
        When I go to a php events
98
        Then I start to become a Kawaii guy
99
100
EOS;
101
102
        $tableNode  = new TableNode([
103
            ['project'],
104
            ['malukenho/kawaii-gherkin'],
105
        ]);
106
        $scenario = new ScenarioNode(
107
            ' Not all people who program php are becoming kawaii ',
108
            [' kawaii ', ' kawaii-bug-12 '],
109
            [
110
                new StepNode('Given', '       I am a Java programmer ', [], 1, 'Given'),
111
                new StepNode('And', '  I am not Kawaii ', [], 2, 'And'),
112
                new StepNode('When', '  I start to contribute to a php project: ', [$tableNode], 3, 'And'),
113
                new StepNode('Then', '  I start to love php ', [], 4, 'And'),
114
                new StepNode('When', ' I go to a php events ', [], 5, 'And'),
115
                new StepNode('Then', 'I start to become a Kawaii guy ', [], 5, 'And'),
116
            ],
117
            'Scenario',
118
            1
119
        );
120
121
        self::assertSame($expected, $this->formatter->format($scenario->getSteps()));
122
    }
123
124
    public function testCanFormatStepsWithPyString()
125
    {
126
        $this->formatter = new Step(Step::ALIGN_TO_LEFT);
127
128
        $expected = <<<EOS
129
        Given I am a Java programmer
130
        And I am not Kawaii
131
        When I start to contribute to a php project:
132
        """
133
          This is a pyString
134
          Multi-line :D
135
136
          Meh... kawaii hu!?
137
        """
138
        Then I start to love php
139
        When I go to a php events
140
        Then I start to become a Kawaii guy
141
142
EOS;
143
144
        $tableNode  = new PyStringNode(
145
            [
146
                'This is a pyString',
147
                'Multi-line :D',
148
                '',
149
                'Meh... kawaii hu!?',
150
            ],
151
            1
152
        );
153
        $scenario = new ScenarioNode(
154
            ' Not all people who program php are becoming kawaii ',
155
            [' kawaii ', ' kawaii-bug-12 '],
156
            [
157
                new StepNode('Given', '       I am a Java programmer ', [], 1, 'Given'),
158
                new StepNode('And', '  I am not Kawaii ', [], 2, 'And'),
159
                new StepNode('When', '  I start to contribute to a php project: ', [$tableNode], 3, 'And'),
160
                new StepNode('Then', '  I start to love php ', [], 4, 'And'),
161
                new StepNode('When', ' I go to a php events ', [], 5, 'And'),
162
                new StepNode('Then', 'I start to become a Kawaii guy ', [], 5, 'And'),
163
            ],
164
            'Scenario',
165
            1
166
        );
167
168
        self::assertSame($expected, $this->formatter->format($scenario->getSteps()));
169
    }
170
}
171