* fix dependencies uv.lock * refactor test markers for clarity * refactor: clean up imports and remove unused files * refactor: remove unused agent files and clean up market API instructions * refactor: enhance wrapper initialization with keyword arguments and clean up tests * refactor: remove PublicBinanceAgent * refactor: aggregator - simplified MarketDataAggregator and related models to functions * refactor: update README and .env.example to reflect the latest changes to the project * refactor: simplify product info and price creation in YFinanceWrapper * refactor: remove get_all_products method from market API wrappers and update documentation * fix: environment variable assertions * refactor: remove status attribute from ProductInfo and update related methods to use timestamp_ms * feat: implement aggregate_history_prices function to calculate hourly price averages * refactor: update docker-compose and app.py for improved environment variable handling and compatibility * feat: add detailed market instructions and improve error handling in price aggregation methods * feat: add aggregated news retrieval methods for top headlines and latest news * refactor: improve error messages in WrapperHandler for better clarity * fix: correct quote currency extraction in create_product_info and remove debug prints from tests
38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
import os
|
|
import pytest
|
|
from app.news import NewsApiWrapper
|
|
|
|
|
|
@pytest.mark.news
|
|
@pytest.mark.api
|
|
@pytest.mark.skipif(not os.getenv("NEWS_API_KEY"), reason="NEWS_API_KEY not set in environment variables")
|
|
class TestNewsAPI:
|
|
|
|
def test_news_api_initialization(self):
|
|
news_api = NewsApiWrapper()
|
|
assert news_api.client is not None
|
|
|
|
def test_news_api_get_latest_news(self):
|
|
news_api = NewsApiWrapper()
|
|
articles = news_api.get_latest_news(query="crypto", limit=2)
|
|
assert isinstance(articles, list)
|
|
assert len(articles) > 0 # Ensure we got some articles (apparently it doesn't always return the requested number)
|
|
for article in articles:
|
|
assert article.source is not None or article.source != ""
|
|
assert article.time is not None or article.time != ""
|
|
assert article.title is not None or article.title != ""
|
|
assert article.description is not None or article.description != ""
|
|
|
|
|
|
def test_news_api_get_top_headlines(self):
|
|
news_api = NewsApiWrapper()
|
|
articles = news_api.get_top_headlines(limit=2)
|
|
assert isinstance(articles, list)
|
|
# assert len(articles) > 0 # apparently it doesn't always return SOME articles
|
|
for article in articles:
|
|
assert article.source is not None or article.source != ""
|
|
assert article.time is not None or article.time != ""
|
|
assert article.title is not None or article.title != ""
|
|
assert article.description is not None or article.description != ""
|
|
|