@diagnostics
Feature: Diagnostics provider coverage — all 9 providers checked
  As a developer ensuring thorough diagnostic coverage
  I want _check_providers() to report status for all 9 supported providers
  So that users of Groq, Together AI, Cohere, Azure, and Gemini see diagnostic feedback

  # ===========================================================================
  # _check_providers — all 9 providers present
  # ===========================================================================

  Scenario: check_providers returns results for all 9 supported providers
    Given the diagnostics provider check module is loaded
    When I call check_providers with no providers configured
    Then the provider check results should contain exactly 9 entries
    And the provider check results should include provider "openai"
    And the provider check results should include provider "anthropic"
    And the provider check results should include provider "google"
    And the provider check results should include provider "azure"
    And the provider check results should include provider "openrouter"
    And the provider check results should include provider "gemini"
    And the provider check results should include provider "cohere"
    And the provider check results should include provider "groq"
    And the provider check results should include provider "together"

  # ===========================================================================
  # _check_providers — configured provider shows OK
  # ===========================================================================

  Scenario: check_providers shows OK status for a configured provider
    Given the diagnostics provider check module is loaded
    When I call check_providers with "groq" configured
    Then the provider check result for "groq" should have status "ok"
    And the provider check result for "groq" should have details "configured"
    And the provider check result for "groq" should have no recommendation

  Scenario: check_providers shows OK status for azure when configured
    Given the diagnostics provider check module is loaded
    When I call check_providers with "azure" configured
    Then the provider check result for "azure" should have status "ok"
    And the provider check result for "azure" should have details "configured"
    And the provider check result for "azure" should have no recommendation

  Scenario: check_providers shows OK status for together when configured
    Given the diagnostics provider check module is loaded
    When I call check_providers with "together" configured
    Then the provider check result for "together" should have status "ok"
    And the provider check result for "together" should have details "configured"
    And the provider check result for "together" should have no recommendation

  Scenario: check_providers shows OK status for cohere when configured
    Given the diagnostics provider check module is loaded
    When I call check_providers with "cohere" configured
    Then the provider check result for "cohere" should have status "ok"
    And the provider check result for "cohere" should have details "configured"
    And the provider check result for "cohere" should have no recommendation

  Scenario: check_providers shows OK status for gemini when configured
    Given the diagnostics provider check module is loaded
    When I call check_providers with "gemini" configured
    Then the provider check result for "gemini" should have status "ok"
    And the provider check result for "gemini" should have details "configured"
    And the provider check result for "gemini" should have no recommendation

  # ===========================================================================
  # _check_providers — unconfigured provider shows WARN with recommendation
  # ===========================================================================

  Scenario: check_providers shows WARN for groq when not configured
    Given the diagnostics provider check module is loaded
    When I call check_providers with no providers configured
    Then the provider check result for "groq" should have status "warn"
    And the provider check result for "groq" should have details "missing"
    And the provider check result for "groq" should have a recommendation mentioning "GROQ_API_KEY"

  Scenario: check_providers shows WARN for together when not configured
    Given the diagnostics provider check module is loaded
    When I call check_providers with no providers configured
    Then the provider check result for "together" should have status "warn"
    And the provider check result for "together" should have details "missing"
    And the provider check result for "together" should have a recommendation mentioning "TOGETHER_API_KEY"

  Scenario: check_providers shows WARN for cohere when not configured
    Given the diagnostics provider check module is loaded
    When I call check_providers with no providers configured
    Then the provider check result for "cohere" should have status "warn"
    And the provider check result for "cohere" should have details "missing"
    And the provider check result for "cohere" should have a recommendation mentioning "COHERE_API_KEY"

  Scenario: check_providers shows WARN for azure when not configured
    Given the diagnostics provider check module is loaded
    When I call check_providers with no providers configured
    Then the provider check result for "azure" should have status "warn"
    And the provider check result for "azure" should have details "missing"
    And the provider check result for "azure" should have a recommendation mentioning "AZURE_OPENAI_API_KEY"

  Scenario: check_providers shows WARN for gemini when not configured
    Given the diagnostics provider check module is loaded
    When I call check_providers with no providers configured
    Then the provider check result for "gemini" should have status "warn"
    And the provider check result for "gemini" should have details "missing"
    And the provider check result for "gemini" should have a recommendation mentioning "GEMINI_API_KEY"
