Files
cleveragents-core/features/a2a_boundary_enforcement.feature
T

92 lines
4.2 KiB
Gherkin

Feature: A2A architectural boundary enforcement
As a developer
I want to verify that the CLI layer does not bypass the A2A boundary
So that the architecture remains clean and maintainable
Background:
Given the source directory exists at "src/cleveragents"
Scenario: Application layer does not import from CLI (Presentation) layer
Given the application services directory exists
When I scan all application service modules for CLI imports
Then no application service module should import from "cleveragents.cli"
Scenario: plan_apply_service uses shared output_format instead of CLI formatting
Given the plan_apply_service module exists
When I inspect plan_apply_service imports
Then it should not import from "cleveragents.cli.formatting"
And it should import from "cleveragents.shared.output_format"
Scenario: shared output_format module has no CLI dependencies
Given the shared output_format module exists
When I inspect shared output_format imports
Then it should not import from "cleveragents.cli"
Scenario: format_data function handles JSON format
Given the shared output_format module is imported
When I call format_data with a dict and format "json"
Then the result should be valid JSON
And the result should contain the expected keys
Scenario: format_data function handles YAML format
Given the shared output_format module is imported
When I call format_data with a dict and format "yaml"
Then the result should be valid YAML
Scenario: format_data function handles plain format
Given the shared output_format module is imported
When I call format_data with a dict and format "plain"
Then the result should contain key-value pairs
Scenario: format_data function handles table format
Given the shared output_format module is imported
When I call format_data with a list of dicts and format "table"
Then the result should contain column headers
Scenario: format_data function falls back to JSON for unknown format
Given the shared output_format module is imported
When I call format_data with a dict and format "unknown"
Then the result should be valid JSON
Scenario: format_data handles empty list for table format
Given the shared output_format module is imported
When I call format_data with an empty list and format "table"
Then the result should be "(empty)"
Scenario: format_data handles nested dict values
Given the shared output_format module is imported
When I call format_data with a nested dict and format "plain"
Then the result should contain nested key-value pairs
Scenario: format_data handles list of dicts in plain format
Given the shared output_format module is imported
When I call format_data with a list of dicts and format "plain"
Then the result should contain multiple entries separated by dashes
Scenario: format_data handles dict with list values in plain format
Given the shared output_format module is imported
When I call format_data with a dict containing list values and format "plain"
Then the result should contain list items with dash prefix
Scenario: format_data handles datetime values in JSON format
Given the shared output_format module is imported
When I call format_data with a dict containing a datetime value and format "json"
Then the result should be valid JSON
And the datetime value should be serialized as ISO string
Scenario: format_data handles enum values in JSON format
Given the shared output_format module is imported
When I call format_data with a dict containing an enum value and format "json"
Then the result should be valid JSON
And the enum value should be serialized as its value
Scenario: format_data handles single dict in table format
Given the shared output_format module is imported
When I call format_data with a single dict and format "table"
Then the result should contain column headers
Scenario: format_data handles list with dict values in table format
Given the shared output_format module is imported
When I call format_data with a list containing dict values and format "table"
Then the result should contain serialized dict values