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 "" 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 | | projectgreater | 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 "" 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 "" 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 |