Files
cleveragents-core/features/aimodelsproviders_coverage.feature

217 lines
8.9 KiB
Gherkin

Feature: AI Models Providers Coverage
As a developer
I want to ensure AI models provider classes are thoroughly tested
So that model provider configurations work correctly throughout the application
@unit @models
Scenario: Create ModelProviderExtraAuthVars with all fields
Given I import the ModelProviderExtraAuthVars class
When I create a ModelProviderExtraAuthVars with var "AWS_REGION"
And I set maybeJSONFilePath to true
And I set required to true
And I set default to "us-east-1"
Then the var field should equal "AWS_REGION"
And the maybe_j_s_o_n_file_path field should be true
And the required field should be true
And the default field should equal "us-east-1"
@unit @models
Scenario: Create ModelProviderExtraAuthVars with minimal fields
Given I import the ModelProviderExtraAuthVars class
When I create a ModelProviderExtraAuthVars with only var "API_KEY"
Then the var field should equal "API_KEY"
And the maybe_j_s_o_n_file_path field should be None
And the required field should be None
And the default field should be None
@unit @models
Scenario: ModelProviderExtraAuthVars field validation
Given I import the ModelProviderExtraAuthVars class
When I create a ModelProviderExtraAuthVars with var " TRIMMED_VAR "
Then the var field should equal "TRIMMED_VAR"
And the model should strip whitespace from string fields
@unit @models
Scenario: ModelProviderExtraAuthVars alias support
Given I import the ModelProviderExtraAuthVars class
When I create a ModelProviderExtraAuthVars using alias "maybeJSONFilePath"
Then the field should be accessible as maybe_j_s_o_n_file_path
And the model should populate by name
@unit @models
Scenario: ModelProviderExtraAuthVars dict export
Given I have a ModelProviderExtraAuthVars instance
When I export it to dict with aliases
Then the dict should contain "maybeJSONFilePath" key
And the dict should not contain "maybe_j_s_o_n_file_path" key
@unit @models
Scenario: Create ModelProviderConfigSchema with all fields
Given I import the ModelProviderConfigSchema class
When I create a ModelProviderConfigSchema with provider "ModelProviderOpenAI"
And I set base_url to "https://api.openai.com"
And I set custom_provider to "custom-gpt"
And I set has_a_w_s_auth to true
And I set has_claude_max_auth to false
And I set skip_auth to false
And I set local_only to false
And I set api_key_env_var to "OPENAI_API_KEY"
And I add extra_auth_vars list
Then the provider field should equal "ModelProviderOpenAI"
And the base_url field should equal "https://api.openai.com"
And the custom_provider field should equal "custom-gpt"
And the has_a_w_s_auth field should be true
And the has_claude_max_auth field should be false
And the skip_auth field should be false
And the local_only field should be false
And the api_key_env_var field should equal "OPENAI_API_KEY"
And the extra_auth_vars should be a list
@unit @models
Scenario: Create ModelProviderConfigSchema with minimal fields
Given I import the ModelProviderConfigSchema class
When I create a ModelProviderConfigSchema with only required fields
Then the provider field should be set
And the base_url field should be set
And all optional fields should be None
@unit @models
Scenario: ModelProviderConfigSchema with ModelProvider enum
Given I import the ModelProviderConfigSchema class
And I import the ModelProvider enum for provider config
When I create a ModelProviderConfigSchema with ModelProvider.ANTHROPIC
Then the provider field should equal "ModelProviderAnthropic"
And the model should use enum values
@unit @models
Scenario: ModelProviderConfigSchema field validation
Given I import the ModelProviderConfigSchema class
When I create a ModelProviderConfigSchema with whitespace in fields
Then all string fields should have whitespace stripped
And the model should validate assignment
@unit @models
Scenario: ModelProviderConfigSchema alias support
Given I import the ModelProviderConfigSchema class
When I create a ModelProviderConfigSchema using aliases
Then "baseUrl" should map to base_url
And "customProvider" should map to custom_provider
And "hasAWSAuth" should map to has_a_w_s_auth
And "hasClaudeMaxAuth" should map to has_claude_max_auth
And "skipAuth" should map to skip_auth
And "localOnly" should map to local_only
And "apiKeyEnvVar" should map to api_key_env_var
And "extraAuthVars" should map to extra_auth_vars
@unit @models
Scenario: ModelProviderConfigSchema dict export with aliases
Given I have a ModelProviderConfigSchema instance
When I export it to dict with aliases
Then the dict should use camelCase keys
And "baseUrl" should be in the dict
And "hasAWSAuth" should be in the dict
@unit @models
Scenario: ModelProviderConfigSchema with empty extra_auth_vars
Given I import the ModelProviderConfigSchema class
When I create a ModelProviderConfigSchema with empty extra_auth_vars list
Then the extra_auth_vars should be an empty list
And the model should accept empty lists
@unit @models
Scenario: ModelProviderConfigSchema with multiple extra_auth_vars
Given I import the ModelProviderConfigSchema class
When I create a ModelProviderConfigSchema with multiple extra_auth_vars
Then each extra_auth_var should be a ModelProviderExtraAuthVars instance
And the list should maintain order
@unit @models
Scenario: ModelProviderConfigSchema JSON serialization
Given I have a ModelProviderConfigSchema instance
When I serialize it to JSON
Then the JSON should be valid
And it should contain all set fields
And it should use aliases in the output
@unit @models
Scenario: ModelProviderConfigSchema JSON deserialization
Given I have a JSON string with provider config
When I deserialize it to ModelProviderConfigSchema
Then the object should be correctly populated
And aliases should be resolved to field names
@unit @models
Scenario: ModelProviderExtraAuthVars model config validation
Given I import the ModelProviderExtraAuthVars class
When I check the model configuration
Then str_strip_whitespace should be True
And validate_assignment should be True
And arbitrary_types_allowed should be False
And populate_by_name should be True
And use_enum_values should be True
@unit @models
Scenario: ModelProviderConfigSchema model config validation
Given I import the ModelProviderConfigSchema class
When I check the model configuration
Then str_strip_whitespace should be True
And validate_assignment should be True
And arbitrary_types_allowed should be False
And populate_by_name should be True
And use_enum_values should be True
@unit @models
Scenario: ModelProviderExtraAuthVars field update
Given I have a ModelProviderExtraAuthVars instance
When I update the var field to "NEW_VAR"
Then the var field should equal "NEW_VAR"
And the update should be validated
@unit @models
Scenario: ModelProviderConfigSchema field update
Given I have a ModelProviderConfigSchema instance
When I update the base_url field to "https://new-api.com"
Then the base_url field should equal "https://new-api.com"
And the update should be validated
@unit @models
Scenario: ModelProviderExtraAuthVars copy with update
Given I have a ModelProviderExtraAuthVars instance
When I create a copy with updated fields
Then the copy should have new values
And the original should remain unchanged
@unit @models
Scenario: ModelProviderConfigSchema copy with update
Given I have a ModelProviderConfigSchema instance
When I create a copy with updated fields
Then the copy should have new values
And the original should remain unchanged
@unit @models
Scenario: ModelProviderExtraAuthVars equality comparison
Given I have two ModelProviderExtraAuthVars instances
When I compare them for equality
Then identical instances should be equal
And different instances should not be equal
@unit @models
Scenario: ModelProviderConfigSchema equality comparison
Given I have two ModelProviderConfigSchema instances
When I compare them for equality
Then identical instances should be equal
And different instances should not be equal
@unit @models
Scenario: ModelProviderExtraAuthVars are not hashable
Given I have ModelProviderExtraAuthVars instances
When I try to use them as dictionary keys
Then the instances should not work as dictionary keys
And a TypeError should be raised when hashing
@unit @models
Scenario: ModelProviderConfigSchema validation error
Given I import the ModelProviderConfigSchema class
When I try to create an instance with missing required fields
Then a validation error should be raised for missing fields
And the error should indicate missing fields