Add configurable data providers and localize frontend UI

This commit is contained in:
2026-03-15 00:55:12 +08:00
parent 12de93aa30
commit d233a3f55d
38 changed files with 1936 additions and 1038 deletions

View File

@@ -0,0 +1,55 @@
# -*- 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"