Package org.jbehave.core.parsers.gherkin

Source Code of org.jbehave.core.parsers.gherkin.GherkinStoryParserBehaviour

package org.jbehave.core.parsers.gherkin;

import java.io.IOException;
import java.util.List;

import org.jbehave.core.model.Narrative;
import org.jbehave.core.model.Scenario;
import org.jbehave.core.model.Story;
import org.jbehave.core.parsers.StoryParser;
import org.junit.Test;

import static org.hamcrest.CoreMatchers.is;

import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasItem;

import static org.junit.Assert.assertThat;

public class GherkinStoryParserBehaviour {

  private StoryParser storyParser = new GherkinStoryParser();
 
  @Test
  public void shouldParseStoryWithTabularParameter() throws IOException{
    String storyAsText = "Feature: Hello Car\n"
          + "Scenario: Car can drive\n"
          + "Given I have a car\n"
          + "Then I can drive them according to:\n"
          + "| wheels | can_drive |\n"
          + "| 1 | false |\n"
          + "| 2 | false |\n"
          + "| 3 | false |\n"
          + "| 4 | true |\n";
    Story story = storyParser.parseStory(storyAsText);
    assertThat(story.getDescription().asString(), equalTo("Hello Car"));   
    List<Scenario> scenarios = story.getScenarios();
    assertThat(scenarios.size(), equalTo(1));
    Scenario scenario = scenarios.get(0);
    List<String> steps = scenario.getSteps();
    assertThat(scenario.getTitle(), equalTo("Car can drive"));   
    assertThat(steps.size(), equalTo(2));
    assertThat(steps.get(0), equalTo("Given I have a car"));
    assertThat(steps.get(1), equalTo("Then I can drive them according to:\n"
        + "|wheels|can_drive|\n"
        + "|1|false|\n"
        + "|2|false|\n"
        + "|3|false|\n"
        + "|4|true|"));
  }

  @Test
  public void shouldParseStoryWithExamples() throws IOException{
    String storyAsText = "Feature: Hello Car\n"
                + "@scenarioOutline\n"
          + "Scenario Outline: Car can drive\n"
          + "Given I have a car\n"
          + "When I add <wheels>\n"
          + "Then It <can_drive>\n"
          + "\n"
          + "Examples:\n"
          + "| wheels | can_drive |\n"
          + "| 1 | false |\n"
          + "| 2 | false |\n"
          + "| 3 | false |\n"
          + "| 4 | true |";
    Story story = storyParser.parseStory(storyAsText);   
    assertThat(story.getDescription().asString(), equalTo("Hello Car"));   
    List<Scenario> scenarios = story.getScenarios();
    assertThat(scenarios.size(), equalTo(1));
    Scenario scenario = scenarios.get(0);
    List<String> steps = scenario.getSteps();
    assertThat(scenario.getTitle(), equalTo("Car can drive"));   
    assertThat(scenario.getMeta().hasProperty("scenarioOutline"), is(true));
    assertThat(steps.size(), equalTo(3));
    assertThat(steps.get(0), equalTo("Given I have a car"));
    assertThat(steps.get(1), equalTo("When I add <wheels>"));
    assertThat(steps.get(2), equalTo("Then It <can_drive>"));
    assertThat(scenario.getExamplesTable().asString(), equalTo(
          "|wheels|can_drive|\n"
        + "|1|false|\n"
        + "|2|false|\n"
        + "|3|false|\n"
        + "|4|true|\n"));
  }
 
  @Test
  public void shouldParseStoryWithNarrative() throws IOException{
    String storyAsText = "Feature: Hello Car\n"
            + "Narrative:\n"
            + "In order to feel safer\n"
            + "As a car driver\n"
            + "I want to drive cars on 4 wheels\n"
          + "Scenario: Car can drive\n"
          + "Given I have a car with 4 wheels\n"
          + "Then I can drive it.\n";
    Story story = storyParser.parseStory(storyAsText);
    assertThat(story.getDescription().asString(), equalTo("Hello Car"));   
    Narrative narrative = story.getNarrative();
    assertThat(narrative.inOrderTo(), equalTo("feel safer"));
    assertThat(narrative.asA(), equalTo("car driver"));
    assertThat(narrative.iWantTo(), equalTo("drive cars on 4 wheels"));
  }

  @Test
  public void shouldParseStoryWithAlternativeNarrative() throws IOException{
    String storyAsText = "Feature: Hello Car\n"
            + "Narrative:\n"
            + "As a car driver\n"
            + "I want to drive cars on 4 wheels\n"
            + "So that I can feel safer\n"
          + "Scenario: Car can drive\n"
          + "Given I have a car with 4 wheels\n"
          + "Then I can drive it.\n";
    Story story = storyParser.parseStory(storyAsText);
        assertThat(story.getDescription().asString(), equalTo("Hello Car"));
        Narrative narrative = story.getNarrative();
        assertThat(narrative.asA(), equalTo("car driver"));
        assertThat(narrative.iWantTo(), equalTo("drive cars on 4 wheels"));
        assertThat(narrative.soThat(), equalTo("I can feel safer"));
  }

    @Test
    public void shouldParseStoryWithBackground() throws IOException{
        String storyAsText = "Feature: Hello Car\n\n"
                    + "Background:\n"
                    + "Given I have a license\n\n"
                    + "Scenario: Car can drive\n"
                    + "Given I have a car with 4 wheels\n"
                    + "Then I can drive it.\n";
        Story story = storyParser.parseStory(storyAsText);
        assertThat(story.getDescription().asString(), equalTo("Hello Car"));
        assertThat(story.getLifecycle().getBeforeSteps(), hasItem("Given I have a license"));
        assertThat(story.getScenarios().get(0).getSteps().size(), equalTo(2));
    }

    @Test
    public void shouldParseStoryWithTags() throws IOException{
        String storyAsText = "@feature\n"
                    + "Feature: Hello Car\n\n"
                    + "Background:\n"
                    + "Given I have a license\n\n"
                    + "@scenario\n"
                    + "Scenario: Car can drive\n"
                    + "Given I have a car with 4 wheels\n"
                    + "Then I can drive it.\n";
        Story story = storyParser.parseStory(storyAsText);
        assertThat(story.getDescription().asString(), equalTo("Hello Car"));
        assertThat(story.getMeta().hasProperty("feature"), is(true));       
        Scenario scenario = story.getScenarios().get(0);
        assertThat(scenario.getSteps().size(), equalTo(2));
        assertThat(scenario.getMeta().hasProperty("scenario"), is(true));       
    }

}
TOP

Related Classes of org.jbehave.core.parsers.gherkin.GherkinStoryParserBehaviour

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.