# -*- coding: utf-8 -*- """Tests for data source config ordering.""" from backend.config.data_config import get_config, reset_config def test_data_config_prefers_env_source(monkeypatch): monkeypatch.setenv("FIN_DATA_SOURCE", "financial_datasets") monkeypatch.setenv("FINNHUB_API_KEY", "fh") monkeypatch.setenv("FINANCIAL_DATASETS_API_KEY", "fd") reset_config() config = get_config() assert config.sources[0] == "financial_datasets" assert "local_csv" in config.sources def test_enabled_data_sources_filters_available_sources(monkeypatch): monkeypatch.setenv("FINNHUB_API_KEY", "fh-key") monkeypatch.setenv("FINANCIAL_DATASETS_API_KEY", "fd-key") monkeypatch.setenv("ENABLED_DATA_SOURCES", "financial_datasets,local_csv") monkeypatch.delenv("FIN_DATA_SOURCE", raising=False) reset_config() config = get_config() assert config.sources == ["financial_datasets", "local_csv"] assert config.source == "financial_datasets" def test_preferred_source_reorders_enabled_sources(monkeypatch): monkeypatch.setenv("FINNHUB_API_KEY", "fh-key") monkeypatch.setenv("FINANCIAL_DATASETS_API_KEY", "fd-key") monkeypatch.setenv("ENABLED_DATA_SOURCES", "financial_datasets,finnhub,local_csv") monkeypatch.setenv("FIN_DATA_SOURCE", "finnhub") reset_config() config = get_config() assert config.sources == ["finnhub", "financial_datasets", "local_csv"] assert config.source == "finnhub" def test_yfinance_can_be_enabled_without_api_key(monkeypatch): monkeypatch.delenv("FINNHUB_API_KEY", raising=False) monkeypatch.delenv("FINANCIAL_DATASETS_API_KEY", raising=False) monkeypatch.setenv("FIN_DATA_SOURCE", "yfinance") monkeypatch.setenv("ENABLED_DATA_SOURCES", "yfinance,local_csv") reset_config() config = get_config() assert config.sources == ["yfinance", "local_csv"] assert config.source == "yfinance"