Feature: Domain Enums Coverage As a developer I want to ensure all enumeration types are thoroughly tested So that they work correctly throughout the application @unit @enums Scenario: ModelPublisher enum has all expected values Given I import the ModelPublisher enum When I check all ModelPublisher values Then ModelPublisher.OPENAI should equal "ModelPublisherOpenAI" And ModelPublisher.ANTHROPIC should equal "ModelPublisherAnthropic" And ModelPublisher.GOOGLE should equal "ModelPublisherGoogle" And ModelPublisher.DEEPSEEK should equal "ModelPublisherDeepSeek" And ModelPublisher.PERPLEXITY should equal "ModelPublisherPerplexity" And ModelPublisher.QWEN should equal "ModelPublisherQwen" And ModelPublisher.MISTRAL should equal "ModelPublisherMistral" @unit @enums Scenario: ModelPublisher enum is string-based Given I have a ModelPublisher enum value When I convert ModelPublisher.OPENAI to string Then it should be a string type And it should equal "ModelPublisherOpenAI" @unit @enums Scenario: ModelPublisher enum membership check Given I import the ModelPublisher enum When I check enum membership Then "ModelPublisherOpenAI" should be a valid ModelPublisher value And "InvalidPublisher" should not be a valid ModelPublisher value @unit @enums Scenario: ModelPublisher enum iteration Given I import the ModelPublisher enum When I iterate over all ModelPublisher values Then I should get 7 enum members And each member should be a ModelPublisher instance @unit @enums Scenario: ModelErrKind enum has all expected values Given I import the ModelErrKind enum When I check all ModelErrKind values Then ModelErrKind.OVERLOADED should equal "ErrOverloaded" And ModelErrKind.CONTEXT_TOO_LONG should equal "ErrContextTooLong" And ModelErrKind.RATE_LIMITED should equal "ErrRateLimited" And ModelErrKind.SUBSCRIPTION_QUOTA_EXHAUSTED should equal "ErrSubscriptionQuotaExhausted" And ModelErrKind.OTHER should equal "ErrOther" And ModelErrKind.CACHE_SUPPORT should equal "ErrCacheSupport" @unit @enums Scenario: ModelErrKind enum is string-based Given I have a ModelErrKind enum value When I convert ModelErrKind.RATE_LIMITED to string Then it should be a string type And it should equal "ErrRateLimited" @unit @enums Scenario: ModelErrKind enum membership check Given I import the ModelErrKind enum When I check enum membership Then "ErrOverloaded" should be a valid ModelErrKind value And "InvalidError" should not be a valid ModelErrKind value @unit @enums Scenario: ModelErrKind enum iteration Given I import the ModelErrKind enum When I iterate over all ModelErrKind values Then I should get 6 enum members And each member should be a ModelErrKind instance @unit @enums Scenario: FallbackType enum has all expected values Given I import the FallbackType enum When I check all FallbackType values Then FallbackType.ERROR should equal "FallbackTypeError" And FallbackType.CONTEXT should equal "FallbackTypeContext" And FallbackType.PROVIDER should equal "FallbackTypeProvider" @unit @enums Scenario: FallbackType enum is string-based Given I have a FallbackType enum value When I convert FallbackType.ERROR to string Then it should be a string type And it should equal "FallbackTypeError" @unit @enums Scenario: FallbackType enum membership check Given I import the FallbackType enum When I check enum membership Then "FallbackTypeError" should be a valid FallbackType value And "InvalidFallback" should not be a valid FallbackType value @unit @enums Scenario: FallbackType enum iteration Given I import the FallbackType enum When I iterate over all FallbackType values Then I should get 3 enum members And each member should be a FallbackType instance @unit @enums Scenario: ModelProvider enum has all expected values Given I import the ModelProvider enum When I check all ModelProvider values Then ModelProvider.OPENROUTER should equal "ModelProviderOpenRouter" And ModelProvider.OPENAI should equal "ModelProviderOpenAI" And ModelProvider.ANTHROPIC should equal "ModelProviderAnthropic" And ModelProvider.ANTHROPIC_CLAUDE_MAX should equal "ModelProviderAnthropicClaudeMax" And ModelProvider.GOOGLE_AI_STUDIO should equal "ModelProviderGoogleAIStudio" And ModelProvider.GOOGLE_VERTEX should equal "ModelProviderGoogleVertex" And ModelProvider.AZURE_OPENAI should equal "ModelProviderAzureOpenAI" And ModelProvider.DEEPSEEK should equal "ModelProviderDeepSeek" And ModelProvider.PERPLEXITY should equal "ModelProviderPerplexity" And ModelProvider.AMAZON_BEDROCK should equal "ModelProviderAmazonBedrock" @unit @enums Scenario: ModelProvider enum is string-based Given I have a ModelProvider enum value When I convert ModelProvider.OPENAI to string Then it should be a string type And it should equal "ModelProviderOpenAI" @unit @enums Scenario: ModelProvider enum membership check Given I import the ModelProvider enum When I check enum membership Then "ModelProviderOpenAI" should be a valid ModelProvider value And "InvalidProvider" should not be a valid ModelProvider value @unit @enums Scenario: ModelProvider enum iteration Given I import the ModelProvider enum When I iterate over all ModelProvider values Then I should get 10 enum members And each member should be a ModelProvider instance @unit @enums Scenario: Enum value comparison Given I have ModelPublisher enum values When I compare enum values Then ModelPublisher.OPENAI should equal ModelPublisher.OPENAI And ModelPublisher.OPENAI should not equal ModelPublisher.ANTHROPIC @unit @enums Scenario: Enum name attribute access Given I import the ModelPublisher enum When I access the name attribute of ModelPublisher.OPENAI Then the name should be "OPENAI" @unit @enums Scenario: Enum value attribute access Given I import the ModelPublisher enum When I access the value attribute of ModelPublisher.OPENAI Then the value should be "ModelPublisherOpenAI" @unit @enums Scenario: Creating enum from string value Given I import the ModelProvider enum When I create ModelProvider from value "ModelProviderOpenAI" Then I should get ModelProvider.OPENAI @unit @enums Scenario: Enum hash consistency Given I have ModelErrKind enum values When I use enum values as dictionary keys Then the enum values should work as dictionary keys And the hash should be consistent @unit @enums Scenario: Enum string representation Given I have a FallbackType enum value When I get the string representation Then repr should contain "FallbackType.ERROR" And str should equal "FallbackTypeError"