Feature: Directories can be modeled.


  Acceptance criteria

  Directories containing feature files can be modeled:
    1. the directory's name
    2. the directory's full path
    3. all feature files contained
    4. all directories contained


  Background: Setup test directories
    Given a directory "feature_directory"
    And the following feature file "test_file_1.feature":
    """
    Feature: The test feature 1.

      Scenario: The first scenario's name.
        Given the first step
        When the second step
        Then the third step
    """
    And the following feature file "test_file_2.feature":
    """
    Feature: The test feature 2.

      Scenario: The first scenario's name.
        Given the first step
        When the second step
        Then the third step
    """
    And the following feature file "test_file_3.feature":
    """
    Feature: The test feature 3.

      Scenario: The first scenario's name.
        Given the first step
        When the second step
        Then the third step
    """
    And the following file "random.file":
    """
    Not a .feature file.
    """
    Given a directory "feature_directory/nested_directory"
    And the following feature file "test_file_4.feature":
    """
    Feature: The test feature 1.

      Scenario: The first scenario's name.
        Given the first step
        When the second step
        Then the third step
    """
    And the following feature file "test_file_5.feature":
    """
    Feature: The test feature 2.

      Scenario: The first scenario's name.
        Given the first step
        When the second step
        Then the third step
    """
    And the following file "another_random.file":
    """
    Not a .feature file.
    """
    When the directory "feature_directory" is read
    And the directory "feature_directory/nested_directory" is read

  Scenario: The directory's name is  modeled.
    Then directory "1" is found to have the following properties:
      | name | feature_directory |
    And directory "2" is found to have the following properties:
      | name | nested_directory |

  Scenario: The directory's full path is modeled.
    Then directory "1" is found to have the following properties:
      | path | path_to/feature_directory |
    And directory "2" is found to have the following properties:
      | path | path_to/feature_directory/nested_directory |

  Scenario: The directory's feature files are modeled.
    Then directory "1" is found to have the following properties:
      | feature_file_count | 3 |
    And directory "1" feature files are as follows:
      | test_file_1.feature |
      | test_file_2.feature |
      | test_file_3.feature |
    Then directory "2" is found to have the following properties:
      | feature_file_count | 2 |
    And directory "2" feature files are as follows:
      | test_file_4.feature |
      | test_file_5.feature |

  Scenario: The directory's directories are modeled.
    Then directory "1" is found to have the following properties:
      | directory_count | 1 |
    And directory "1" directories are as follows:
      | nested_directory |
    Then directory "2" is found to have the following properties:
      | directory_count | 0 |
    And directory "2" has no directories

  Scenario Outline: Directory models pass all other specifications
  Exact specifications detailing the API for directory models.
    Given that there are "<additional specifications>" detailing models
    When the corresponding specifications are run
    Then all of those specifications are met
  Examples:
    | additional specifications     |
    | directory_unit_spec.rb        |
    | directory_integration_spec.rb |