add multiline step parsing test
Этот коммит содержится в:
родитель
33805bca2b
коммит
32cad20e06
2 изменённых файлов: 36 добавлений и 1 удалений
|
@ -190,6 +190,7 @@ func (p *parser) parseSteps() (steps []*Step, err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// step text maybe multilined
|
// step text maybe multilined
|
||||||
|
// @TODO: think about use case when there is a different token matched instead of TEXT
|
||||||
for ; p.peek().OfType(lexer.TEXT); tok = p.next() {
|
for ; p.peek().OfType(lexer.TEXT); tok = p.next() {
|
||||||
step.Text += " " + tok.Value
|
step.Text += " " + tok.Value
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ var testStepSamples = map[string]string{
|
||||||
When I do something
|
When I do something
|
||||||
Then something should happen`,
|
Then something should happen`,
|
||||||
|
|
||||||
"step_group_multiline": `Given: an admin user "John Doe"
|
"step_group_multiline": `Given an admin user "John Doe"
|
||||||
And user "John Doe" belongs
|
And user "John Doe" belongs
|
||||||
to user group "editors"
|
to user group "editors"
|
||||||
When I do something
|
When I do something
|
||||||
|
@ -273,3 +273,37 @@ func Test_parse_step_group(t *testing.T) {
|
||||||
lexer.EOF,
|
lexer.EOF,
|
||||||
}, t)
|
}, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_parse_step_group_multiline(t *testing.T) {
|
||||||
|
p := &parser{
|
||||||
|
lx: lexer.New(strings.NewReader(testStepSamples["step_group_multiline"])),
|
||||||
|
path: "some.feature",
|
||||||
|
ast: newAST(),
|
||||||
|
}
|
||||||
|
steps, err := p.parseSteps()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error: %s", err)
|
||||||
|
}
|
||||||
|
if len(steps) != 4 {
|
||||||
|
t.Fatalf("expected four steps to be parsed, but got: %d", len(steps))
|
||||||
|
}
|
||||||
|
|
||||||
|
steps[0].assertType(Given, t)
|
||||||
|
steps[0].assertText(`an admin user "John Doe"`, t)
|
||||||
|
steps[1].assertType(Given, t)
|
||||||
|
steps[1].assertText(`user "John Doe" belongs user "John Doe" belongs`, t)
|
||||||
|
steps[2].assertType(When, t)
|
||||||
|
steps[2].assertText("I do something", t)
|
||||||
|
steps[3].assertType(Then, t)
|
||||||
|
steps[3].assertText("I expect the result", t)
|
||||||
|
|
||||||
|
p.next() // step over to eof
|
||||||
|
p.ast.assertMatchesTypes([]lexer.TokenType{
|
||||||
|
lexer.GIVEN,
|
||||||
|
lexer.AND,
|
||||||
|
lexer.TEXT,
|
||||||
|
lexer.WHEN,
|
||||||
|
lexer.THEN,
|
||||||
|
lexer.EOF,
|
||||||
|
}, t)
|
||||||
|
}
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче