Files

66 lines
1.9 KiB
Python
Raw Permalink Normal View History

"""Tests for portfolio API endpoints."""
import pytest
from unittest.mock import Mock, patch
from fastapi.testclient import TestClient
from backend.main import app
@pytest.fixture
def client():
"""Test client fixture."""
return TestClient(app)
@pytest.fixture
def mock_portfolio_tracker():
"""Mock portfolio tracker."""
tracker = Mock()
tracker.get_current_portfolio.return_value = {
"positions": [],
"performance": {"total_return": 0.1},
"timestamp": "2025-01-01T00:00:00"
}
tracker.get_portfolio_history.return_value = {
"dates": ["2025-01-01"],
"values": [1000.0],
"pnl": [0.0]
}
return tracker
class TestGetCurrentPortfolio:
"""Tests for GET /api/portfolio/current."""
@patch('backend.api.portfolio.get_portfolio_tracker')
def test_get_current_portfolio_success(self, mock_get_tracker, client, mock_portfolio_tracker):
"""Test getting current portfolio."""
mock_get_tracker.return_value = mock_portfolio_tracker
response = client.get("/api/portfolio/current?paper_trading=true")
assert response.status_code == 200
data = response.json()
assert "positions" in data
assert "performance" in data
assert "timestamp" in data
class TestGetPortfolioHistory:
"""Tests for GET /api/portfolio/history."""
@patch('backend.api.portfolio.get_portfolio_tracker')
def test_get_portfolio_history_success(self, mock_get_tracker, client, mock_portfolio_tracker):
"""Test getting portfolio history."""
mock_get_tracker.return_value = mock_portfolio_tracker
response = client.get("/api/portfolio/history?paper_trading=true&days=30")
assert response.status_code == 200
data = response.json()
assert "dates" in data
assert "values" in data
assert "pnl" in data