def test_parse_tags_on_scenario_outline_examples(): "Parser should allow tags to be defined in examples" # Given a parser loaded with a document that contains tags on # scenario outline examples # @tagged-feature # Feature: Parse tags # @tag1 @tag2 # Scenario Outline: Test # @example-tag1 # @example-tag2 # Examples: # | Header | parser = Parser([ (1, gherkin.TOKEN_TAG, 'tagged-feature'), (1, gherkin.TOKEN_NEWLINE, '\n'), (2, gherkin.TOKEN_LABEL, 'Feature'), (2, gherkin.TOKEN_TEXT, 'Parse tags'), (2, gherkin.TOKEN_NEWLINE, '\n'), (3, gherkin.TOKEN_TAG, 'tag1'), (3, gherkin.TOKEN_TAG, 'tag2'), (3, gherkin.TOKEN_NEWLINE, '\n'), (4, gherkin.TOKEN_LABEL, 'Scenario Outline'), (4, gherkin.TOKEN_TEXT, 'Test'), (4, gherkin.TOKEN_NEWLINE, '\n'), (5, gherkin.TOKEN_TAG, 'example-tag1'), (5, gherkin.TOKEN_NEWLINE, '\n'), (6, gherkin.TOKEN_TAG, 'example-tag2'), (6, gherkin.TOKEN_NEWLINE, '\n'), (7, gherkin.TOKEN_LABEL, 'Examples'), (7, gherkin.TOKEN_NEWLINE, '\n'), (8, gherkin.TOKEN_TABLE_COLUMN, 'Header'), (8, gherkin.TOKEN_NEWLINE, '\n'), (9, gherkin.TOKEN_EOF, ''), ]) # When I parse the document feature = parser.parse_feature() # Then I see all the tags were found feature.should.equal( Ast.Feature(line=2, title=Ast.Text(line=2, text='Parse tags'), tags=['tagged-feature'], scenarios=[ Ast.ScenarioOutline( line=4, title=Ast.Text(line=4, text='Test'), tags=['tag1', 'tag2'], examples=Ast.Examples( line=7, tags=['example-tag1', 'example-tag2'], table=Ast.Table(line=8, fields=[['Header']])), ) ]))
def test_parse_scenario_outline_with_examples(): "" # Given a parser loaded with the following gherkin document: # # Scenario Outline: Plant a tree # Given the <name> of a garden # When I plant a tree # And wait for <num_days> days # Then I see it growing # Examples: # | name | num_days | # | Secret | 2 | # | Octopus | 5 | parser = Parser([(1, gherkin.TOKEN_LABEL, 'Scenario Outline'), (1, gherkin.TOKEN_TEXT, 'Plant a tree'), (1, gherkin.TOKEN_NEWLINE, '\n'), (2, gherkin.TOKEN_TEXT, 'Given the <name> of a garden'), (2, gherkin.TOKEN_NEWLINE, '\n'), (3, gherkin.TOKEN_TEXT, 'When I plant a tree'), (3, gherkin.TOKEN_NEWLINE, '\n'), (4, gherkin.TOKEN_TEXT, 'And wait for <num_days> days'), (4, gherkin.TOKEN_NEWLINE, '\n'), (5, gherkin.TOKEN_TEXT, 'Then I see it growing'), (5, gherkin.TOKEN_NEWLINE, '\n'), (6, gherkin.TOKEN_LABEL, 'Examples'), (6, gherkin.TOKEN_NEWLINE, '\n'), (7, gherkin.TOKEN_TABLE_COLUMN, 'name'), (7, gherkin.TOKEN_TABLE_COLUMN, 'num_days'), (7, gherkin.TOKEN_NEWLINE, '\n'), (8, gherkin.TOKEN_TABLE_COLUMN, 'Secret'), (8, gherkin.TOKEN_TABLE_COLUMN, '2'), (8, gherkin.TOKEN_NEWLINE, '\n'), (9, gherkin.TOKEN_TABLE_COLUMN, 'Octopus'), (9, gherkin.TOKEN_TABLE_COLUMN, '5'), (9, gherkin.TOKEN_NEWLINE, '\n'), (10, gherkin.TOKEN_EOF, '')]) scenarios = parser.parse_scenarios() scenarios.should.equal([ Ast.ScenarioOutline( line=1, title=Ast.Text(line=1, text='Plant a tree'), steps=[ Ast.Step(line=2, title=Ast.Text(line=2, text='Given the <name> of a garden')), Ast.Step(line=3, title=Ast.Text(line=3, text='When I plant a tree')), Ast.Step(line=4, title=Ast.Text(line=4, text='And wait for <num_days> days')), Ast.Step(line=5, title=Ast.Text(line=5, text='Then I see it growing')) ], examples=Ast.Examples(line=6, table=Ast.Table(line=7, fields=[ ['name', 'num_days'], ['Secret', '2'], ['Octopus', '5'], ]))) ])