Feature: Project name validation data variation — Scenario Outline refactoring
  As a CleverAgents developer
  I want project name validation tests to cover a wide range of inputs
  So that edge cases and boundary conditions are systematically exercised

  # ─────────────────────────────────────────────────────────────────────────
  # Refactored from validation_test_fixtures.feature (Section 4) using
  # Scenario Outline.  Each Examples table row exercises a distinct
  # validation path or boundary condition.
  # ─────────────────────────────────────────────────────────────────────────

  # ─────────────────────────────────────────────────────────────────────────
  # Invalid project names — special characters
  # ─────────────────────────────────────────────────────────────────────────

  Scenario Outline: Project rejects names with special characters
    When I try to create a project with name "<invalid_name>"
    Then a project validation error should be raised mentioning "alphanumeric"

    Examples: Names with special characters — punctuation
      | invalid_name       | description                              |
      | my@project         | at-sign in name                          |
      | my/project         | forward slash in name                    |
      | project!           | exclamation mark in name                 |
      | project#tag        | hash symbol in name                      |
      | project%done       | percent sign in name                     |
      | project^up         | caret in name                            |
      | project&more       | ampersand in name                        |
      | project*star       | asterisk in name                         |
      | project+plus       | plus sign in name                        |
      | project=equals     | equals sign in name                      |
      | project.pipe       | period in name                           |
      | project:colon      | colon in name                            |
      | project;semi       | semicolon in name                        |
      | project<less       | less-than sign in name                   |
      | project>greater    | greater-than sign in name                |
      | project?question   | question mark in name                    |

  # ─────────────────────────────────────────────────────────────────────────
  # Invalid project names — empty and whitespace-only
  # ─────────────────────────────────────────────────────────────────────────

  Scenario: Project rejects empty name
    When I try to create a project with empty name
    Then a project validation error should be raised

  # ─────────────────────────────────────────────────────────────────────────
  # Valid project names — accepted formats
  # ─────────────────────────────────────────────────────────────────────────

  Scenario Outline: Project accepts names with alphanumeric characters, hyphens, underscores, and spaces
    When I create a project fixture with name "<valid_name>"
    Then the project should be created with that name

    Examples: Valid project name formats
      | valid_name                  | description                              |
      | my-project_v2 final         | hyphens, underscores, and spaces         |
      | simple                      | plain alphanumeric name                  |
      | project123                  | name with trailing numbers               |
      | my project                  | name with space                          |
      | project-name                | hyphenated name                          |
      | project_name                | underscored name                         |
      | Project Name                | mixed case with space                    |
      | a                           | single character name                    |
      | abc def ghi                 | multiple words with spaces               |
      | project-v1-final            | multiple hyphens                         |
      | my_project_2024             | underscores with numbers                 |
      | 123project                  | name starting with numbers               |
      | My Project Name             | mixed case with multiple spaces          |

  # ─────────────────────────────────────────────────────────────────────────
  # Edge cases — boundary conditions
  # ─────────────────────────────────────────────────────────────────────────

  Scenario Outline: Project path is always resolved to absolute
    When I create a project with relative path "<rel_path>"
    Then the project fixture path should be absolute

    Examples: Relative path formats
      | rel_path                    | description                              |
      | relative/path               | simple relative path                     |
      | ./local/path                | dot-relative path                        |
      | ../parent/path              | parent-relative path                     |
      | subdir/nested/deep          | deeply nested relative path              |
      | just-a-dir                  | single directory name                    |
