Files
OpenBB/openbb_platform/providers/nasdaq/tests/conftest.py
Danglewood 56d6d58fb7 [V5] openbb-nasdaq: Refactor provider for V5. (#7670)
* refactor nasdaq provider for v5

* add workflows

* ty fix
2026-09-23 12:53:41 -07:00

100 lines
3.2 KiB
Python

"""Shared fixtures for the openbb_nasdaq test suite."""
from pathlib import Path
import pytest
DATA_DIR = Path(__file__).parent / "data"
def patch_data(monkeypatch, payload, recorder=None):
"""Point ``get_nasdaq_data`` at a canned payload."""
async def _data(path, **kwargs):
if recorder is not None:
recorder.append(path)
return payload(path) if callable(payload) else payload
monkeypatch.setattr("openbb_nasdaq.utils.helpers.get_nasdaq_data", _data)
def patch_asset_class(monkeypatch, asset_class):
"""Force the resolved asset class."""
async def _resolve(symbol):
return asset_class
monkeypatch.setattr("openbb_nasdaq.utils.helpers.resolve_asset_class", _resolve)
@pytest.fixture(scope="module")
def vcr_config():
"""VCR configuration: strip identifying headers from recorded cassettes."""
return {
"filter_headers": [
("User-Agent", None),
("api_key", "MOCK_API_KEY"),
("x-api-token", "MOCK_API_KEY"),
],
"filter_query_parameters": [
("api_key", "MOCK_API_KEY"),
("x-api-token", "MOCK_API_KEY"),
],
}
@pytest.fixture(scope="session")
def factsheet_pdf() -> bytes:
"""The bundled Morningstar fact sheet for ABB Ltd, as published."""
return (DATA_DIR / "factsheet_abb.pdf").read_bytes()
@pytest.fixture(scope="session")
def factsheet(factsheet_pdf):
"""The parsed sections of the bundled fact sheet."""
from openbb_nasdaq.utils.factsheet import parse_factsheet
return parse_factsheet(factsheet_pdf)
@pytest.fixture(autouse=True)
def _clear_caches():
"""Keep memoized directories and listings from leaking between tests."""
from openbb_nasdaq.utils import helpers, nordic
from openbb_nasdaq.utils.factsheet import fetch_factsheet
helpers._directory_index.cache_clear()
helpers.get_nasdaq_directory.cache_clear()
helpers.resolve_asset_class.cache_clear()
helpers.get_symbol_choices.cache_clear()
helpers.get_index_symbol_choices.cache_clear()
helpers.get_etf_symbol_choices.cache_clear()
nordic.get_nordic_directory.cache_clear()
nordic.get_nordic_symbol_choices.cache_clear()
fetch_factsheet.cache_clear()
yield
helpers._directory_index.cache_clear()
helpers.get_nasdaq_directory.cache_clear()
helpers.resolve_asset_class.cache_clear()
helpers.get_symbol_choices.cache_clear()
helpers.get_index_symbol_choices.cache_clear()
helpers.get_etf_symbol_choices.cache_clear()
nordic.get_nordic_directory.cache_clear()
nordic.get_nordic_symbol_choices.cache_clear()
fetch_factsheet.cache_clear()
@pytest.fixture
def directory_text() -> str:
"""A minimal Nasdaq-traded symbol directory file."""
return (
"Nasdaq Traded|Symbol|Security Name|Listing Exchange|Market Category|ETF|"
"Round Lot Size|Test Issue|Financial Status|CQS Symbol|NASDAQ Symbol|"
"NextShares\n"
"Y|AAPL|Apple Inc. - Common Stock|Q|Q|N|100|N|N|AAPL|AAPL|N\n"
"Y|QQQ|Invesco QQQ Trust, Series 1|Q|G|Y|100|N|N|QQQ|QQQ|N\n"
"Y|ZTEST|Nasdaq Test Issue|Q|G|N|100|Y|N|ZTEST|ZTEST|N\n"
"File Creation Time: 0725202618:00|||||||||||\n"
)