"""Step definitions for coverage boost tests.""" from behave import when, then from cleveragents.config.settings import Settings from cleveragents.platform import ensure_cli_importable import os @when("I create a Settings instance") def step_create_settings(context): """Create a Settings instance.""" # Clear any existing singleton if hasattr(Settings, "_instance"): Settings._instance = None context.settings = Settings() @then("it should have default values") def step_check_default_values(context): """Check Settings has default values.""" assert context.settings.server_host == "0.0.0.0" assert context.settings.server_port == 8080 assert context.settings.database_url == "sqlite:///cleveragents.db" assert context.settings.debug_log_level == "INFO" assert context.settings.storage_base_path.name == "data" @when("I check if Settings is in production mode") def step_check_production_mode(context): """Check production mode.""" settings = Settings() context.is_production = settings.is_production @then("it should return the correct production status") def step_verify_production_status(context): """Verify production status.""" # Default should be production (debug_enabled=False, server_reload=False) assert context.is_production == True @when("I get the database URL from Settings") def step_get_database_url(context): """Get database URL.""" settings = Settings() context.db_url = settings.get_database_url() context.test_db_url = settings.get_database_url(test=True) @then("it should return the configured database URL") def step_check_database_url(context): """Check database URL.""" assert context.db_url == "sqlite:///cleveragents.db" assert context.test_db_url == "sqlite:///cleveragents_test.db" @when("I check if any provider is configured in Settings") def step_check_provider_configured(context): """Check if provider is configured.""" import os from cleveragents.config.settings import Settings # Clear any existing settings from cleveragents.config import settings as settings_module settings_module._settings = None # Test with no providers - ensure env vars are clean for key in [ "OPENAI_API_KEY", "ANTHROPIC_API_KEY", "GOOGLE_API_KEY", "AZURE_API_KEY", ]: os.environ.pop(key, None) settings1 = Settings() context.no_provider = settings1.has_provider_configured() # Test with a provider os.environ["OPENAI_API_KEY"] = "test-key" # Force new settings instance settings_module._settings = None settings2 = Settings() context.with_provider = settings2.has_provider_configured() # Clean up os.environ.pop("OPENAI_API_KEY", None) settings_module._settings = None @then("it should return the provider status") def step_verify_provider_status(context): """Verify provider status.""" assert context.no_provider == False assert context.with_provider == True @when("I import and use the platform module") def step_use_platform_module(context): """Use platform module.""" context.cli_module = ensure_cli_importable() @then("ensure_cli_importable should work") def step_check_cli_importable(context): """Check ensure_cli_importable worked.""" assert context.cli_module is not None assert context.cli_module.__name__ == "cleveragents.cli" assert hasattr(context.cli_module, "main") assert hasattr(context.cli_module, "app")