enkessler/cuke_modeler

View on GitHub
testing/cucumber/features/modeling/rule_output.feature

Summary

Maintainability
Test Coverage
Feature: Rule output

  A rule model's string output is a Gherkin representation of itself and its most relevant attribute for
  inspection is the name of the rule that it models.


  @gherkin_min_version_18
  Scenario: Stringify a rule model
    Given the following gherkin:
      """
      @tag1@tag2
      @tag3
      Rule: A rule with everything it could have
      Including a description
      and then some.
      Background: a background
      Background
      description
      * a step
      |value1|
      |value2|
      * another step
      @scenario_tag
      Scenario: a scenario
      Scenario
      description
      * a step
      * another step
      \"\"\" with content type
        some text
      \"\"\"
      @outline_tag
      Scenario Outline: an outline
      Outline
      description
      * a step
      |value2|
      * another step
      \"\"\"
        some text
      \"\"\"
      @example_tag
      Examples:
      Example
      description
      |param|
      |value|
      Examples: additional example
      """
    And a rule model based on that gherkin
      """
      @model = CukeModeler::Rule.new(<source_text>)
      """
    When the model is output as a string
      """
      @model.to_s
      """
    Then the following text is provided:
      """
      @tag1 @tag2 @tag3
      Rule: A rule with everything it could have

      Including a description
      and then some.

        Background: a background

        Background
        description

          * a step
            | value1 |
            | value2 |
          * another step

        @scenario_tag
        Scenario: a scenario

        Scenario
        description

          * a step
          * another step
            \"\"\" with content type
              some text
            \"\"\"

        @outline_tag
        Scenario Outline: an outline

        Outline
        description

          * a step
            | value2 |
          * another step
            \"\"\"
              some text
            \"\"\"

        @example_tag
        Examples:

        Example
        description

          | param |
          | value |

        Examples: additional example
      """
    And the output can be used to make an equivalent model
      """
      CukeModeler::Rule.new(@model.to_s)
      """

  Scenario: Inspect a rule model
    Given the following gherkin:
      """
      Rule: some rule

        Scenario: a scenario
          * a step
      """
    And a rule model based on that gherkin
      """
      @model = CukeModeler::Rule.new(<source_text>)
      """
    When the model is inspected
      """
      @model.inspect
      """
    Then the following text is provided:
      """
      #<CukeModeler::Rule:<object_id> @name: "some rule">
      """